YOLO Vision 2026:

Интеграция MLflow с Ultralytics YOLO#

MLflow experiment tracking with 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.

Обновление настроек Ultralytics MLflow

В среде Python вызови метод update у объекта settings, чтобы изменить настройки:

from ultralytics import settings

# Update a setting
settings.update({"mlflow": True})

# Reset settings to default values
settings.reset()

Как использовать#

Команды#

  1. Установка имени проекта: ты можешь задать имя проекта через переменную окружения:

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    Или используй аргумент project=<project> при обучении модели YOLO, то есть yolo train project=my_project.

  2. Установка имени запуска (Run Name): аналогично установке имени проекта, ты можешь задать имя запуска через переменную окружения:

    export MLFLOW_RUN=YOUR_RUN_NAME

    Или используй аргумент name=<name> при обучении модели YOLO, то есть yolo train project=my_project name=my_name.

  3. Запуск локального сервера 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
  4. Сохранение активности запуска MLflow после обучения: по умолчанию Ultralytics автоматически завершает запуск MLflow по окончании обучения. Чтобы оставить запуск открытым (например, для логирования дополнительных метрик или артефактов из того же ноутбука), установи MLFLOW_KEEP_RUN_ACTIVE в значение True перед началом обучения:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Значение анализируется без учета регистра; только строка true включает такое поведение, а любое другое значение (включая неустановленное) сохраняет поведение по умолчанию — закрытие запуска. Не забудь закрыть его вручную позже с помощью mlflow.end_run().

  5. Завершение экземпляров сервера 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 функций обратного вызова. Эти функции автоматически вызываются на соответствующих этапах процесса обучения и обрабатывают логирование параметров, метрик и артефактов.

Примеры#

  1. Логирование пользовательских метрик: ты можешь добавить пользовательские метрики для логирования, изменив словарь trainer.metrics перед вызовом on_fit_epoch_end.

  2. Просмотр эксперимента: чтобы просмотреть логи, перейди на сервер MLflow (обычно http://127.0.0.1:5000) и выбери свой эксперимент и запуск. MLflow experiment tracking interface for YOLO

  3. Просмотр запуска: запуски — это отдельные модели внутри эксперимента. Нажми на запуск, чтобы увидеть детали, включая загруженные артефакты и веса модели. MLflow run details with YOLO artifacts

Отключение 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.

Обновление настроек Ultralytics MLflow
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.

Комментарии