Integração do MLflow com o Ultralytics YOLO

MLflow experiment tracking with Ultralytics YOLO

Introdução

O registro de experimentos é um aspecto crucial dos fluxos de trabalho de machine learning que permite o rastreamento de várias métricas, parâmetros e artefatos. Isso ajuda a melhorar a reprodutibilidade do modelo, depurar problemas e aprimorar o desempenho do modelo. O Ultralytics YOLO, conhecido por suas capacidades de detecção de objetos em tempo real, agora oferece integração com o MLflow, uma plataforma de código aberto para o gerenciamento completo do ciclo de vida de machine learning.

Esta página de documentação é um guia abrangente para configurar e utilizar as capacidades de registro do MLflow para o seu projeto Ultralytics YOLO.

O que é o MLflow?

O MLflow é uma plataforma de código aberto desenvolvida pela Databricks para gerenciar o ciclo de vida de ponta a ponta do machine learning. Ela inclui ferramentas para rastrear experimentos, empacotar código em execuções reproduzíveis, além de compartilhar e implantar modelos. O MLflow foi projetado para funcionar com qualquer biblioteca de machine learning e linguagem de programação.

Recursos

  • Registro de Métricas: Registra métricas ao final de cada época e ao final do treinamento.
  • Registro de Parâmetros: Registra todos os parâmetros usados no treinamento.
  • Registro de Artefatos: Registra artefatos do modelo, incluindo pesos e arquivos de configuração, ao final do treinamento.

Configuração e Pré-requisitos

Certifique-se de que o MLflow esteja instalado. Caso contrário, instale-o usando pip:

pip install mlflow

Certifique-se de que o registro do MLflow esteja habilitado nas configurações do Ultralytics. Geralmente, isso é controlado pela chave mlflow nas configurações. Veja a página de configurações para mais informações.

Atualizar configurações do MLflow no Ultralytics

Dentro do ambiente Python, chame o método update no objeto settings para alterar suas configurações:

from ultralytics import settings

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

# Reset settings to default values
settings.reset()

Como usar

Comandos

  1. Definir um nome de projeto: Você pode definir o nome do projeto via variável de ambiente:

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    Ou use o argumento project=<project> ao treinar um modelo YOLO, por exemplo: yolo train project=my_project.

  2. Definir um nome de execução: Semelhante à definição do nome do projeto, você pode definir o nome da execução via variável de ambiente:

    export MLFLOW_RUN=YOUR_RUN_NAME

    Ou use o argumento name=<name> ao treinar um modelo YOLO, por exemplo: yolo train project=my_project name=my_name.

  3. Iniciar servidor MLflow local: Para iniciar o rastreamento, use:

    mlflow server --backend-store-uri runs/mlflow

    Isso iniciará um servidor local em http://127.0.0.1:5000 por padrão e salvará todos os logs do MLflow no diretório 'runs/mlflow'. Para apontar suas execuções de treinamento para um servidor de rastreamento diferente, exporte MLFLOW_TRACKING_URI antes do treinamento:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. Encerrar instâncias do servidor MLflow: Para interromper todas as instâncias do MLflow em execução, execute:

    ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9

Registro (Logging)

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.

Exemplos

  1. Registro de métricas personalizadas: Você pode adicionar métricas personalizadas a serem registradas modificando o dicionário trainer.metrics antes que on_fit_epoch_end seja chamado.

  2. Visualizar experimento: Para ver seus logs, navegue até o seu servidor MLflow (geralmente http://127.0.0.1:5000) e selecione seu experimento e execução. MLflow experiment tracking interface for YOLO

  3. Visualizar execução: As execuções são modelos individuais dentro de um experimento. Clique em uma execução e veja os detalhes, incluindo artefatos carregados e pesos do modelo. MLflow run details with YOLO artifacts

Desativar o MLflow

Para desativar o registro do MLflow:

yolo settings mlflow=False

Conclusão

A integração de registro do MLflow com o Ultralytics YOLO oferece uma maneira simplificada de acompanhar seus experimentos de machine learning. Ela permite que você monitore métricas de desempenho e gerencie artefatos de forma eficaz, auxiliando assim no desenvolvimento e na implantação robustos de modelos. Para obter mais detalhes, visite a documentação oficial do MLflow.

FAQ

Como configuro o registro do MLflow com o Ultralytics YOLO?

Para configurar o registro do MLflow com o Ultralytics YOLO, você primeiro precisa garantir que o MLflow esteja instalado. Você pode instalá-lo usando pip:

pip install mlflow

Em seguida, ative o registro do MLflow nas configurações do Ultralytics. Isso pode ser controlado usando a chave mlflow. Para mais informações, consulte o guia de configurações.

Atualizar configurações do MLflow no Ultralytics
from ultralytics import settings

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

# Reset settings to default values
settings.reset()

Por fim, inicie um servidor MLflow local para rastreamento:

mlflow server --backend-store-uri runs/mlflow

Quais métricas e parâmetros posso registrar usando o MLflow com o Ultralytics YOLO?

O Ultralytics YOLO com MLflow oferece suporte ao registro de várias métricas, parâmetros e artefatos ao longo do processo de treinamento:

  • Registro de métricas: Rastreia métricas ao final de cada época e após a conclusão do treinamento.
  • Registro de parâmetros: Registra todos os parâmetros usados no processo de treinamento.
  • Registro de artefatos: Salva artefatos do modelo, como pesos e arquivos de configuração, após o treinamento.

Para obter informações mais detalhadas, visite a documentação de rastreamento do Ultralytics YOLO.

Posso desativar o registro do MLflow depois que ele estiver ativado?

Sim, você pode desativar o registro do MLflow para o Ultralytics YOLO atualizando as configurações. Veja como fazer isso usando a CLI:

yolo settings mlflow=False

Para mais personalizações e redefinição de configurações, consulte o guia de configurações.

Como posso iniciar e parar um servidor MLflow para rastreamento do Ultralytics YOLO?

Para iniciar um servidor MLflow para rastrear seus experimentos no Ultralytics YOLO, use o seguinte comando:

mlflow server --backend-store-uri runs/mlflow

Este comando inicia um servidor local em http://127.0.0.1:5000 por padrão. Se precisar parar as instâncias do servidor MLflow em execução, use o seguinte comando bash:

ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9

Consulte a seção de comandos para mais opções de comando.

Quais são os benefícios de integrar o MLflow com o Ultralytics YOLO para rastreamento de experimentos?

A integração do MLflow com o Ultralytics YOLO oferece vários benefícios para gerenciar seus experimentos de machine learning:

  • Rastreamento de experimentos aprimorado: Rastreie e compare facilmente diferentes execuções e seus resultados.
  • Melhor reprodutibilidade de modelos: Garanta que seus experimentos sejam reproduzíveis registrando todos os parâmetros e artefatos.
  • Monitoramento de desempenho: Visualize métricas de desempenho ao longo do tempo para tomar decisões baseadas em dados para melhorias no modelo.
  • Fluxo de trabalho simplificado: Automatize o processo de registro para focar mais no desenvolvimento do modelo do que no rastreamento manual.
  • Desenvolvimento colaborativo: Compartilhe resultados de experimentos com membros da equipe para uma melhor colaboração e compartilhamento de conhecimento.

Para uma visão detalhada sobre a configuração e o aproveitamento do MLflow com o Ultralytics YOLO, explore a documentação Integração do MLflow com o Ultralytics YOLO.

Comentários