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:

    pip install mlflow

    Затем включи журналирование MLflow в настройках Ultralytics. Им можно управлять с помощью ключа mlflow. Дополнительную информацию см. в руководстве по настройкам.

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

Комментарии