Model Deployment
Развёртывание модели переносит обученную модель в производственную среду, где она формирует предсказания для новых данных. Разбираем облачные и периферийные платформы, экспорт, запуск и мониторинг.
Развёртывание модели — это процесс переноса обученной модели машинного обучения в рабочую среду, где приложения передают ей новые данные и используют её предсказания. Оно включает выбор места для запуска модели, преобразование в формат, поддерживаемый целевой средой выполнения, подключение к входам и выходам через API или приложение, безопасный выпуск новых версий и наблюдение за поведением модели, когда на неё начинают полагаться реальные пользователи. Модель с высокими оценками в ноутбуке остаётся лишь экспериментом, пока её не развернули; развёртывание — это этап эксплуатации машинного обучения (MLOps), на котором наука о данных сталкивается с ограничениями программной инженерии, такими как задержка, стоимость, доступность и безопасность.
Где развёртывают модели#
- Развёртывание в облаке: модель работает на серверах за конечной точкой REST или gRPC, обычно через систему обслуживания моделей, которая объединяет запросы в пакеты и масштабирует число реплик в зависимости от нагрузки. Такой вариант подходит для крупных моделей и переменного трафика, но для каждого запроса требуется обмен данными по сети.
- Развёртывание на периферии: модель работает на устройстве, которое получает данные, например на телефоне, камере, роботе или модуле NVIDIA Jetson. Входные данные не покидают устройство, что защищает конфиденциальность, и модель продолжает работать офлайн, но ограниченные ресурсы памяти и питания обычно требуют сжатой модели.
- Бессерверное развёртывание: платформа запускает экземпляры по запросу и масштабирует их до нуля в периоды простоя. За это приходится платить задержкой холодного запуска при первом запросе, зато при отсутствии запросов платить не нужно.
- Пакетное развёртывание: запланированная задача за один раз обрабатывает большой набор данных, например формирует ночные рекомендации товаров; в таком сценарии пропускная способность важнее скорости отдельного запроса.
Ultralytics Platform развёртывает обученную модель YOLO на выделенной конечной точке в одном из 42 регионов; у каждой конечной точки есть собственный URL и мониторинг, а конечные точки с размером ресурса по умолчанию масштабируются до нуля при простое. Выбор целевой среды зависит от нескольких характеристик приложения, подробно рассмотренных в уроке Ultralytics Academy «Выбор целевой среды развёртывания»:
Подготовка модели к рабочей среде#
Фреймворки для обучения рассчитаны на гибкость, поэтому модели для рабочей среды обычно экспортируют в формат, который эффективно выполняется в движке инференса, например ONNX для переносимости, TensorRT для GPU NVIDIA, OpenVINO для оборудования Intel или LiteRT и Core ML для телефонов. Квантование модели и прунинг модели позволяют дополнительно уменьшить модель для устройств с ограниченными ресурсами. Затем экспортированную модель вместе с кодом предобработки упаковывают с зафиксированными версиями зависимостей, обычно в контейнер Docker, который одинаково работает на ноутбуке, сервере или в кластере Kubernetes. Экспорт обученного детектора и быстрая проверка экспортированного файла перед выпуском выглядят так:
from ultralytics import YOLO
# Load a trained model (replace with your own best.pt)
model = YOLO("yolo26n.pt")
# Export to ONNX, a portable format that many inference engines run
path = model.export(format="onnx")
print(f"Deployable model: {path}")
# Smoke-test the exported file with the same API before shipping it
onnx_model = YOLO(path)
results = onnx_model("https://ultralytics.com/images/bus.jpg")
results[0].save(filename="bus_onnx.jpg")Вызов экспорта возвращает путь к новому файлу yolo26n.onnx, а сохранённое изображение подтверждает, что экспортированный файл загружается и обнаруживает объекты. Команды также сравнивают точность и скорость экспортированной модели с исходной на валидационном наборе, поскольку преобразование формата и снижение точности вычислений могут немного изменить результаты.
Выпуск новых версий модели#
Новая версия модели сохраняется в реестре моделей и выпускается постепенно, поскольку офлайн-метрики не учитывают все условия рабочей среды. При теневом развёртывании новая модель получает копию рабочего трафика, а пользователям по-прежнему отвечает текущая модель, поэтому результаты двух моделей можно сравнить без риска. Затем при канареечном выпуске новой версии направляют небольшую долю реального трафика и увеличивают её, только если показатели ошибок, задержки и качество предсказаний остаются в норме; A/B-тесты позволяют измерить влияние на бизнес-результаты. Если предыдущую версию можно развернуть повторно, для отката достаточно изменить конфигурацию — экстренная пересборка не нужна:
Развёртывание модели и смежные понятия#
- Обучение модели: позволяет модели усвоить веса на основе набора данных. Развёртывание начинается с уже готовых весов.
- Обслуживание модели: уровень среды выполнения, который обрабатывает запросы на предсказание. Это часть развёртывания, которое также включает упаковку, выпуск и мониторинг.
- Задержка инференса: время, необходимое развёрнутой модели для вычисления каждого отдельного предсказания; это одно из основных требований, которым должно соответствовать развёртывание.
Мониторинг после развёртывания#
Развёрнутая модель может незаметно терять качество при изменении условий. Мониторинг модели отслеживает рабочие показатели, например задержку, пропускную способность, частоту ошибок и использование оборудования, часто с помощью таких инструментов, как Prometheus и Grafana, а также статистику входных данных и предсказаний. Когда мониторинг выявляет проблему, команды размечают новые примеры с ошибками, переобучают модель и проводят новую версию через тот же процесс выпуска. Статистика входных данных позволяет раньше всего заметить проблему: дрейф данных — изменение распределения входных данных, например поворот камеры на новый угол или переход к зимнему освещению, — становится заметен за несколько дней или недель до появления истинных меток для рабочих данных, с помощью которых можно измерить точность.










