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

# Обновить параметр
settings.update({"mlflow": True})

# Сбросить настройки до значений по умолчанию
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_TRACKING_URI запуски регистрируются в локальном хранилище MLflow по умолчанию в каталоге, где ты проводишь обучение (mlflow.db в MLflow 3.7 и более поздних версиях, если в каталоге ещё нет истории mlruns/; mlruns/ в более ранних версиях). Чтобы просмотреть запуски, выполни эту команду из того же каталога:

    mlflow ui

    По умолчанию команда запустит локальный сервер по адресу http://127.0.0.1:5000. Чтобы направить запуски обучения на другой сервер отслеживания, перед началом обучения экспортируй MLFLOW_TRACKING_URI:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. Оставь запуск MLflow активным после обучения: По умолчанию Ultralytics автоматически завершает запуск MLflow по окончании обучения, присваивая ему статус FAILED, если до закрытия запуска при обучении возникла ошибка. Чтобы оставить запуск открытым (например, чтобы записать дополнительные метрики или артефакты из того же ноутбука), перед обучением установи 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_train_epoch_end, on_fit_epoch_end и on_train_end функции обратного вызова. Эти функции автоматически вызываются на соответствующих этапах процесса обучения и отвечают за логирование параметров, метрик и артефактов. Функция обратного вызова teardown завершает запуск, который остался открытым после сбоя обучения.

Примеры#

  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
    
    # Обновить параметр
    settings.update({"mlflow": True})
    
    # Сбросить настройки до значений по умолчанию
    settings.reset()

    После обучения запусти локальный сервер MLflow из каталога, где ты проводил обучение, чтобы просмотреть запуски:

    mlflow ui
  • Ultralytics YOLO с MLflow поддерживает регистрацию различных метрик, параметров и артефактов на протяжении всего процесса обучения:

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

    Подробную информацию смотри в документации Ultralytics YOLO по отслеживанию.

  • Да, ведение журналов MLflow для Ultralytics YOLO можно отключить, изменив настройки. Вот как это сделать с помощью CLI:

    yolo settings mlflow=False

    Дополнительные способы настройки и сброса параметров смотри в руководстве по настройкам.

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

    mlflow ui

    По умолчанию эта команда запускает локальный сервер по адресу 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».

Комментарии