Когда модель готова, важно не только её обучить, но и запустить эффективно, особенно если она используется в проде. Большие языковые модели (LLM) требуют особого подхода к инференсу — и тут приходят на помощь оптимизированные форматы и инференс-серверы.
Что нужно для продакшен-инференса
- Высокая скорость обработки запросов
- Эффективное использование GPU
- Поддержка большого числа одновременных пользователей
- Гибкость и переносимость модели
Обычный pipeline()
из Hugging Face удобен, но не масштабируется. Для продакшена нужны другие инструменты.
Triton Inference Server
Triton — инференс-сервер от NVIDIA, который:
- работает с моделями в форматах PyTorch, ONNX, TensorFlow
- принимает REST и gRPC запросы
- поддерживает автоматическое батчирование (объединение мелких запросов)
- масштабируется
Пример запуска Triton с моделью ONNX
- Экспортируем модель в ONNX:
import torch
model = ...
dummy_input = torch.randn(1, 10)
torch.onnx.export(model, dummy_input, "model.onnx")
- Кладём модель в
models/my_model/1/model.onnx
- Запускаем Triton:
docker run --gpus all -p8000:8000 -v $PWD/models:/models nvcr.io/nvidia/tritonserver \
tritonserver --model-repository=/models
Теперь сервер готов к приёму запросов.
ONNX: переносимость модели
ONNX (Open Neural Network Exchange) — формат, в котором модель можно запускать:
- в Python, C++, Go
- на разных устройствах (CPU, GPU)
- в разных средах (облако, мобильные, веб)
Вы экспортируете модель из PyTorch или TensorFlow, и запускаете где угодно.
TorchScript: оптимизация внутри PyTorch
TorchScript — это способ сохранить PyTorch-модель в виде графа, чтобы:
- ускорить её работу
- запускать вне Python-интерпретатора
scripted_model = torch.jit.script(model)
torch.jit.save(scripted_model, "model.pt")
Когда использовать что
Сценарий | Что использовать |
---|---|
Инференс с API, много пользователей | Triton Inference Server |
Хочется гибкости и переносимости | ONNX |
Остаётесь в PyTorch, нужно ускорить | TorchScript |
Нужен OpenAI-совместимый LLM API | vLLM |
Вывод
Для эффективного запуска LLM в продакшене лучше не ограничиваться базовыми средствами. Используйте ONNX для переносимости, Triton — для масштабируемости, TorchScript — для оптимизации, vLLM — для генерации. Все эти инструменты можно комбинировать и встраивать в полноценную ML-инфраструктуру.