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

Комментарии