Интеграция MLflow с Ultralytics YOLO#
Введение#
Логирование экспериментов — важная составляющая рабочих процессов машинного обучения, позволяющая отслеживать различные метрики, параметры и артефакты. Это помогает повысить воспроизводимость моделей, отлаживать проблемы и улучшать производительность моделей. Ultralytics YOLO, известный своими возможностями обнаружения объектов в реальном времени, теперь предлагает интеграцию с MLflow — платформой с открытым исходным кодом для комплексного управления жизненным циклом машинного обучения.
Эта страница документации — подробное руководство по настройке и использованию возможностей логирования MLflow в проекте Ultralytics YOLO.
Что такое MLflow?#
MLflow — платформа с открытым исходным кодом, разработанная компанией Databricks для управления полным жизненным циклом машинного обучения. Она включает инструменты для отслеживания экспериментов, упаковки кода в воспроизводимые запуски, а также публикации и развёртывания моделей. MLflow рассчитан на работу с любой библиотекой машинного обучения и языком программирования.
Возможности#
- Логирование метрик: в конце каждой эпохи записывает скорости обучения, потери при обучении и метрики валидации.
- Логирование параметров: записывает все параметры, использованные при обучении.
- Логирование артефактов: в конце обучения записывает артефакты модели, включая веса и файлы конфигурации.
Настройка и предварительные требования#
Убедись, что MLflow установлен. Если нет, установи его с помощью pip:
pip install mlflowУбедись, что логирование MLflow включено в настройках Ultralytics. Обычно это задаётся ключом настроек mlflow. Подробнее смотри на странице настроек.
В среде Python вызови метод update для объекта settings, чтобы изменить настройки:
from ultralytics import settings
# Обновить параметр
settings.update({"mlflow": True})
# Сбросить настройки до значений по умолчанию
settings.reset()Как пользоваться#
Команды#
-
Задать имя проекта: имя проекта можно задать с помощью переменной окружения:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEИли используй аргумент
project=<project>при обучении модели YOLO, напримерyolo train project=my_project. -
Задать имя запуска: как и имя проекта, имя запуска можно задать с помощью переменной окружения:
export MLFLOW_RUN=YOUR_RUN_NAMEИли используй аргумент
name=<name>при обучении модели YOLO, напримерyolo train project=my_project name=my_name. -
Запустить локальный сервер MLflow: чтобы начать отслеживание, используй команду:
mlflow server --backend-store-uri runs/mlflowПо умолчанию запустится локальный сервер по адресу
http://127.0.0.1:5000, а все журналы mlflow сохранятся в каталоге 'runs/mlflow'. Чтобы направить обучающие запуски на другой сервер отслеживания, перед обучением экспортируйMLFLOW_TRACKING_URI:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
Оставить запуск MLflow активным после обучения: по умолчанию Ultralytics автоматически завершает запуск MLflow после окончания обучения. Чтобы оставить запуск открытым (например, для логирования дополнительных метрик или артефактов из той же записной книжки), перед обучением задай для
MLFLOW_KEEP_RUN_ACTIVEзначениеTrue:export MLFLOW_KEEP_RUN_ACTIVE=TrueЗначения
1,true,yes,on,yиtвключают это поведение (без учёта регистра). Любое другое значение, в том числе отсутствие переменной, сохраняет поведение по умолчанию — закрытие запуска. Не забудь закрыть его вручную позже с помощьюmlflow.end_run().
Журналирование#
За ведение журналов отвечают on_pretrain_routine_end, on_train_epoch_end, on_fit_epoch_end и on_train_end функции обратного вызова. Эти функции автоматически вызываются на соответствующих этапах обучения и отвечают за регистрацию параметров, метрик и артефактов.
Примеры#
-
Регистрация пользовательских метрик: ты можешь добавить пользовательские метрики для регистрации, изменив словарь
trainer.metricsдо вызоваon_fit_epoch_end. -
Просмотр эксперимента: чтобы просмотреть журналы, перейди на свой сервер MLflow (обычно
http://127.0.0.1:5000) и выбери эксперимент и запуск.
-
Просмотр запуска: запуски — это отдельные модели в рамках эксперимента. Нажми на запуск, чтобы посмотреть сведения о нём, включая загруженные артефакты и веса модели.

Отключение MLflow#
Чтобы отключить ведение журналов MLflow:
yolo settings mlflow=FalseЗаключение#
Интеграция ведения журналов MLflow с Ultralytics YOLO позволяет упростить отслеживание экспериментов машинного обучения. Она помогает эффективно отслеживать метрики производительности и управлять артефактами, способствуя надёжной разработке и развёртыванию моделей. Подробности смотри в официальной документации MLflow.
Часто задаваемые вопросы#
Чтобы настроить ведение журналов MLflow с Ultralytics YOLO, сначала убедись, что MLflow установлен. Установить его можно с помощью pip:
pip install mlflowЗатем включи ведение журналов MLflow в настройках Ultralytics. Для этого используется ключ
mlflow. Подробнее смотри в руководстве по настройкам.Изменение настроек MLflow в Ultralyticsfrom ultralytics import settings # Обновить параметр settings.update({"mlflow": True}) # Сбросить настройки до значений по умолчанию settings.reset()Наконец, запусти локальный сервер MLflow для отслеживания:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO с MLflow поддерживает регистрацию различных метрик, параметров и артефактов на протяжении всего процесса обучения:
- Регистрация метрик: метрики отслеживаются в конце каждой эпохи и по завершении обучения.
- Регистрация параметров: регистрируются все параметры, использованные в процессе обучения.
- Регистрация артефактов: после обучения сохраняются артефакты модели, например веса и файлы конфигурации.
Подробную информацию смотри в документации Ultralytics YOLO по отслеживанию.
Да, ведение журналов MLflow для Ultralytics YOLO можно отключить, изменив настройки. Вот как это сделать с помощью CLI:
yolo settings mlflow=FalseДополнительные способы настройки и сброса параметров смотри в руководстве по настройкам.
Чтобы запустить сервер MLflow для отслеживания экспериментов Ultralytics YOLO, используй следующую команду:
mlflow server --backend-store-uri runs/mlflowПо умолчанию эта команда запускает локальный сервер по адресу
http://127.0.0.1:5000. Чтобы остановить сервер, нажмиCtrl+Cв этом терминале.Другие параметры команд смотри в разделе команд.
Перед обучением задай переменной окружения
MLFLOW_KEEP_RUN_ACTIVEзначениеTrue:export MLFLOW_KEEP_RUN_ACTIVE=TrueПо умолчанию используется значение
False, поэтому после завершения обучения Ultralytics вызываетmlflow.end_run(). При значенииMLFLOW_KEEP_RUN_ACTIVE=Trueзапуск остаётся открытым, и ты можешь зарегистрировать дополнительные метрики, параметры или артефакты в том же сеансе Python — по завершении закрой его самостоятельно с помощьюmlflow.end_run(). Значения1,true,yes,on,yиtвключают это поведение (без учёта регистра).Интеграция MLflow с Ultralytics YOLO даёт несколько преимуществ при управлении экспериментами машинного обучения:
- Расширенное отслеживание экспериментов: легко отслеживай и сравнивай разные запуски и их результаты.
- Повышенная воспроизводимость моделей: обеспечь воспроизводимость экспериментов, регистрируя все параметры и артефакты.
- Мониторинг производительности: визуализируй метрики производительности с течением времени, чтобы принимать решения об улучшении моделей на основе данных.
- Оптимизация рабочего процесса: автоматизируй регистрацию данных, чтобы уделять больше внимания разработке моделей и меньше — ручному отслеживанию.
- Совместная разработка: делись результатами экспериментов с командой для эффективного сотрудничества и обмена знаниями.
Подробно изучить настройку и применение MLflow с Ultralytics YOLO можно в документации «Интеграция MLflow с Ultralytics YOLO».