Безопасность корпоративного уровня: Соответствует ISO 27001 + SOC 2 Type I.

Link to this sectionИнтеграция MLflow с Ultralytics YOLO#

MLflow experiment tracking with Ultralytics YOLO

Link to this sectionВведение#

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

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

Link to this sectionЧто такое MLflow?#

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

Link to this sectionФункции#

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

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

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

pip install mlflow

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

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

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

from ultralytics import settings

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

# Reset settings to default values
settings.reset()

Link to this sectionКак использовать#

Link to this sectionКоманды#

  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

Link to this sectionЛогирование#

The logging is taken care of by the on_pretrain_routine_end, on_fit_epoch_end, and on_train_end callback functions. These functions are automatically called during the respective stages of the training process, and they handle the logging of parameters, metrics, and artifacts.

Link to this sectionПримеры#

  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

Link to this sectionОтключение MLflow#

Чтобы отключить логирование MLflow:

yolo settings mlflow=False

Link to this sectionЗаключение#

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

Link to this sectionFAQ#

Link to this sectionКак настроить логирование MLflow с Ultralytics YOLO?#

Для настройки логирования MLflow с Ultralytics YOLO сначала нужно убедиться, что MLflow установлен. Ты можешь установить его с помощью pip:

pip install mlflow

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

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

Link to this sectionКакие метрики и параметры я могу логировать, используя MLflow с Ultralytics YOLO?#

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

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

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

Link to this sectionМогу ли я отключить логирование MLflow после того, как оно было включено?#

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

yolo settings mlflow=False

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

Link to this sectionКак запустить и остановить сервер 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

Обратись к разделу команд для просмотра других вариантов команд.

Link to this 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 активирует это поведение.

Link to this sectionВ чем преимущества интеграции MLflow с Ultralytics YOLO для отслеживания экспериментов?#

Интеграция MLflow с Ultralytics YOLO дает ряд преимуществ для управления экспериментами по машинному обучению:

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

Для углубленного изучения настройки и использования MLflow с Ultralytics YOLO ознакомься с документацией Интеграция MLflow с Ultralytics YOLO.

Комментарии