Machine Learning Operations (MLOps)
MLOps применяет практики DevOps к машинному обучению: версионирование данных, автоматизированные конвейеры обучения, контроль качества, развёртывание и мониторинг дрейфа.
Операционная деятельность в машинном обучении (MLOps) — это набор практик и инструментов для надёжной и воспроизводимой разработки, развёртывания и поддержки моделей машинного обучения (ML) в производственной среде. MLOps развивает DevOps, автоматизирующий тестирование и выпуск программного обеспечения, применительно к системам, поведение которых зависит не только от кода, но и от данных: качество модели может ухудшиться, даже если не изменилось ни одной строки кода, — просто изменился наблюдаемый ею мир. Сама модель составляет лишь небольшую часть такой системы. В руководстве Google по архитектуре MLOps отмечается, что на код ML приходится лишь малая доля реальной ML-системы, а остальное составляют сбор и проверка данных, инфраструктура для обслуживания моделей и мониторинг. В статье NeurIPS «Скрытый технический долг в системах машинного обучения» описаны долгосрочные затраты на поддержку, которые накапливает эта окружающая система.
Основные практики#
MLOps связывает инженерию данных, разработку моделей и эксплуатацию с помощью нескольких практик, применяемых как к обучающим данным, так и к коду:
- Версионирование данных: Для каждого снимка набора данных создаётся неизменяемая версия, поэтому можно определить, на каких именно данных обучена любая модель.
- Отслеживание экспериментов: Для каждого запуска обучения записываются версия кода и данных, гиперпараметры, метрики и артефакты, чтобы результаты можно было сравнивать и воспроизводить.
- Непрерывная интеграция и доставка: Автоматизированные конвейеры тестируют код, проверяют поступающие данные, переобучают модели и блокируют любые версии, не прошедшие порог качества.
- Реестр моделей: Одобренные версии моделей сохраняются вместе с метаданными, происхождением и этапом, например подготовкой или эксплуатацией, поэтому при развёртывании и откате можно точно указать нужную версию.
- Обслуживание моделей: Модели упаковывают, часто в контейнеры, и предоставляют через API или развёртывают на периферийных устройствах.
- Мониторинг моделей: Отслеживаются производственные входные данные, прогнозы, задержка и точность, чтобы обнаруживать дрейф и решать, когда нужно переобучить модель.
В руководстве Google описаны три уровня зрелости. На уровне 0 специалисты по данным вручную обучают модели и передают их дальше. На уровне 1 автоматизируется сам конвейер обучения и добавляется непрерывное обучение (CT): автоматическое повторное обучение и предоставление моделей при поступлении новых данных или обнаружении дрейфа данных. На уровне 2 автоматизируются также сборка, тестирование и развёртывание кода конвейера с помощью CI/CD, благодаря чему новые версии конвейера безопасно попадают в рабочую среду, как и новые модели. Вместе эти практики образуют цикл:
MLOps на практике#
- Контроль качества на производстве: Когда на фабрике запускают новую продуктовую линейку, изображения новых дефектов размечают и версионируют, конвейер переобучает модель обнаружения, а одобренную версию без простоя развёртывают на периферийных камерах каждой линии.
- Мониторинг полок в розничных магазинах: Изменения дизайна упаковки и освещения в магазинах меняют то, что видят камеры. Мониторинг выявляет снижение уверенности модели, изображения с низкой уверенностью передаются на разметку, а переобученная модель поступает в магазины после успешной оценки.
Контроль качества автоматизирует решение о выпуске модели. Следующий скрипт обучает кандидатную модель обнаружения объектов, оценивает её и текущую производственную модель на одних и тех же проверочных данных и экспортирует кандидата в ONNX, только если его mAP50-95 выше:
from ultralytics import YOLO
# Обучи кандидатную модель; запуск сохраняет её веса, args.yaml и results.csv в project/name
candidate = YOLO("yolo26n.pt")
candidate.train(data="coco8.yaml", epochs=10, project="mlops", name="candidate")
# Контроль качества: оцени кандидатную и производственную модели на одних и тех же проверочных данных
candidate_map = candidate.val(data="coco8.yaml").box.map
production_map = YOLO("yolo26n.pt").val(data="coco8.yaml").box.map
# Выпускай только улучшенную модель, экспортированную в формате, который поддерживает система обслуживания
if candidate_map > production_map:
candidate.export(format="onnx")В производственном конвейере планировщик или задание CI запускает подобный скрипт при поступлении новых размеченных данных, а экспортированная модель регистрируется вместе с версией данных и метриками. Платформа Ultralytics охватывает весь этот жизненный цикл моделей компьютерного зрения в одном рабочем пространстве: неизменяемые версии наборов данных, облачное обучение с метриками в реальном времени, экспорт в такие форматы, как TensorRT, выделенные конечные точки инференса и мониторинг развёрнутых моделей.
MLOps и связанные понятия#
- DevOps: Автоматизирует сборку, тестирование и выпуск программного обеспечения, где изменение кода запускает конвейер. MLOps добавляет данные и модели как версионируемые ресурсы, поэтому конвейер могут запускать также новые данные или снижение точности в производственной среде.
- LLMOps: Направление MLOps для приложений на основе больших языковых моделей, в центре которого — промпты, поиск информации, оценка сгенерированного текста и стоимость токенов.
- Автоматизированное машинное обучение (AutoML): Автоматизирует создание модели, например выбор алгоритмов и гиперпараметров. MLOps управляет окружающим её жизненным циклом — от версионирования данных до мониторинга — и часто использует AutoML как один из шагов конвейера.
- MLflow и Weights & Biases: Инструменты, охватывающие отдельные этапы жизненного цикла, например отслеживание экспериментов и реестры моделей. MLOps — это практика, объединяющая такие инструменты с конвейерами, обслуживанием моделей и мониторингом.










