Ultralytics YOLO27:

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

MLflow experiment tracking with Ultralytics YOLO

Введение#

Журналирование экспериментов — важный аспект рабочих процессов машинного обучения, который позволяет отслеживать различные метрики, параметры и артефакты. Это помогает повысить воспроизводимость моделей, выявлять проблемы и улучшать производительность моделей. Ultralytics YOLO, известный своими возможностями обнаружения объектов в реальном времени, теперь поддерживает интеграцию с MLflow — платформой с открытым исходным кодом для управления полным жизненным циклом машинного обучения.

На этой странице документации приведено подробное руководство по настройке и использованию возможностей журналирования MLflow в твоём проекте Ultralytics YOLO.

Что такое MLflow?#

MLflow — платформа с открытым исходным кодом, разработанная компанией Databricks для управления полным жизненным циклом машинного обучения. Она включает инструменты для отслеживания экспериментов, упаковки кода в воспроизводимые запуски, а также совместного использования и развёртывания моделей. MLflow разработан для работы с любой библиотекой машинного обучения и языком программирования.

Возможности#

  • Журналирование метрик: записывает метрики в конце каждой эпохи и после завершения обучения.
  • Журналирование параметров: записывает все параметры, использованные в процессе обучения.
  • Журналирование артефактов: записывает артефакты модели, включая веса и файлы конфигурации, после завершения обучения.

Настройка и предварительные требования#

Убедись, что MLflow установлен. Если нет, установи его с помощью pip:

pip install mlflow

Убедись, что журналирование MLflow включено в настройках Ultralytics. Обычно это управляется ключом mlflow в настройках. Дополнительную информацию см. на странице настроек.

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

В среде 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. Задание имени запуска: аналогично заданию имени проекта, имя запуска можно задать с помощью переменной окружения:

    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

    Значения 1, true, yes, on, y и t включают это поведение (без учёта регистра). Любое другое значение, включая отсутствие переменной, сохраняет поведение по умолчанию — закрытие запуска. Не забудь после этого закрыть его вручную с помощью mlflow.end_run().

Журналирование#

Журналирование выполняется функциями обратного вызова 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 предоставляет удобный способ отслеживать эксперименты машинного обучения. Она позволяет эффективно контролировать метрики производительности и управлять артефактами, способствуя надёжной разработке и развёртыванию моделей. Дополнительную информацию см. в официальной документации MLflow.

Часто задаваемые вопросы#

  • Чтобы настроить журналирование MLflow с Ultralytics YOLO, сначала убедись, что MLflow установлен. Установить его можно с помощью pip: