Интеграция MLflow с Ultralytics YOLO#
Введение#
Ведение журнала экспериментов — это важнейший аспект machine learning рабочих процессов, который позволяет отслеживать различные метрики, параметры и артефакты. Это помогает повысить воспроизводимость моделей, отлаживать проблемы и улучшать производительность моделей. Ultralytics YOLO, известная своими возможностями object detection в реальном времени, теперь предлагает интеграцию с MLflow, открытой платформой для полного управления жизненным циклом машинного обучения.
Эта страница документации — подробное руководство по настройке и использованию возможностей логирования MLflow для твоего проекта Ultralytics YOLO.
Что такое MLflow?#
MLflow — это платформа с открытым исходным кодом, разработанная Databricks для управления полным жизненным циклом машинного обучения. Она включает в себя инструменты для отслеживания экспериментов, упаковки кода в воспроизводимые запуски, а также совместного использования и развертывания моделей. MLflow разработана для работы с любой библиотекой машинного обучения и языком программирования.
Функции#
- Логирование метрик: записывает метрики в конце каждой эпохи и после завершения обучения.
- Логирование параметров: записывает все параметры, использованные при обучении.
- Логирование артефактов: записывает артефакты модели, включая веса и конфигурационные файлы, по завершении обучения.
Настройка и предварительные требования#
Убедись, что MLflow установлен. Если нет, установи его с помощью pip:
pip install mlflowУбедись, что ведение журнала MLflow включено в настройках Ultralytics. Обычно это контролируется ключом настроек mlflow. Дополнительную информацию см. на странице settings.
В среде 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. -
Установка имени запуска (Run Name): аналогично установке имени проекта, ты можешь задать имя запуска через переменную окружения:
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Значение анализируется без учета регистра; только строка
trueвключает такое поведение, а любое другое значение (включая неустановленное) сохраняет поведение по умолчанию — закрытие запуска. Не забудь закрыть его вручную позже с помощьюmlflow.end_run(). -
Завершение экземпляров сервера MLflow: чтобы остановить все запущенные экземпляры MLflow, выполни:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
Логирование#
Логирование осуществляется с помощью 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 предлагает удобный способ отслеживания твоих machine learning experiments. Она позволяет эффективно контролировать метрики производительности и управлять артефактами, способствуя надежной разработке и развертыванию моделей. Для получения дополнительной информации посети official documentation MLflow.
FAQ#
Как настроить логирование MLflow с Ultralytics YOLO?#
Для настройки логирования MLflow с Ultralytics YOLO сначала нужно убедиться, что MLflow установлен. Ты можешь установить его с помощью pip:
pip install mlflowЗатем включи логирование MLflow в настройках Ultralytics. Это можно контролировать с помощью ключа mlflow. Дополнительную информацию см. в разделе settings guide.
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()Наконец, запусти локальный сервер MLflow для отслеживания:
mlflow server --backend-store-uri runs/mlflowКакие метрики и параметры я могу логировать, используя MLflow с Ultralytics YOLO?#
Ultralytics YOLO при работе с MLflow поддерживает запись различных метрик, параметров и артефактов на протяжении всего процесса обучения:
- Логирование метрик: отслеживает метрики в конце каждой epoch и по завершении обучения.
- Логирование параметров: записывает все параметры, использованные в процессе обучения.
- Логирование артефактов: сохраняет артефакты модели, такие как веса и конфигурационные файлы, после обучения.
Для получения более подробной информации посети Ultralytics YOLO tracking documentation.
Могу ли я отключить логирование MLflow после того, как оно было включено?#
Да, ты можешь отключить логирование MLflow для Ultralytics YOLO, обновив настройки. Вот как это сделать с помощью CLI:
yolo settings mlflow=FalseДля дальнейшей настройки и сброса параметров обратись к settings guide.
Как запустить и остановить сервер MLflow для отслеживания Ultralytics YOLO?#
Чтобы запустить сервер MLflow для отслеживания своих экспериментов в Ultralytics YOLO, используй следующую команду:
mlflow server --backend-store-uri runs/mlflowЭта команда по умолчанию запускает локальный сервер по адресу http://127.0.0.1:5000. Если тебе нужно остановить запущенные экземпляры сервера MLflow, используй следующую bash-команду:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9Обратись к commands section для просмотра других вариантов команд.
Как оставить запуск MLflow активным после завершения обучения?#
Установи переменную среды 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() по завершении. Значение анализируется без учета регистра; только true включает это поведение.
В чем преимущества интеграции MLflow с Ultralytics YOLO для отслеживания экспериментов?#
Интеграция MLflow с Ultralytics YOLO дает ряд преимуществ для управления экспериментами по машинному обучению:
- Улучшенное отслеживание экспериментов: легко отслеживай и сравнивай различные запуски и их результаты.
- Повышенная воспроизводимость моделей: обеспечь воспроизводимость своих экспериментов за счет записи всех параметров и артефактов.
- Мониторинг производительности: визуализируй метрики производительности во времени, чтобы принимать решения по улучшению модели на основе данных.
- Оптимизация рабочего процесса: автоматизируй процесс логирования, чтобы больше сосредоточиться на разработке модели, а не на ручном отслеживании.
- Совместная разработка: делись результатами экспериментов с членами команды для более эффективного сотрудничества и обмена знаниями.
Чтобы подробно изучить настройку и использование MLflow с Ultralytics YOLO, ознакомься с документацией MLflow Integration for Ultralytics YOLO.