Интеграция 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
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
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_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 # Update a setting settings.update({"mlflow": True}) # Reset settings to default values 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».