Ultralytics YOLO27:
Get Started

Integração do MLflow com Ultralytics YOLO#

MLflow experiment tracking with Ultralytics YOLO

Introdução#

O registro de experimentos é um aspecto essencial dos fluxos de trabalho de aprendizado de máquina, permitindo acompanhar várias métricas, parâmetros e artefatos. Isso ajuda a aumentar a reprodutibilidade dos modelos, depurar problemas e melhorar o desempenho dos modelos. O Ultralytics YOLO, conhecido pelos recursos de detecção de objetos em tempo real, agora oferece integração com o MLflow, uma plataforma de código aberto para gerenciamento completo do ciclo de vida do aprendizado de máquina.

Esta página da documentação é um guia abrangente para configurar e usar os recursos de registro do MLflow no teu projeto Ultralytics YOLO.

O que é MLflow?#

O MLflow é uma plataforma de código aberto desenvolvida pela Databricks para gerenciar o ciclo de vida completo do aprendizado de máquina. Inclui ferramentas para acompanhar experimentos, empacotar código em execuções reproduzíveis e compartilhar e implantar modelos. O MLflow foi projetado para funcionar com qualquer biblioteca de aprendizado de máquina e linguagem de programação.

Recursos#

  • Registro de métricas: Registra taxas de aprendizado, perdas de treinamento e métricas de validação ao final de cada época.
  • 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#

Verifica se o MLflow está instalado. Caso contrário, instala-o usando pip:

pip install mlflow

Verifica se o registro do MLflow está ativado nas configurações da Ultralytics. Normalmente, isso é controlado pela chave mlflow nas configurações. Consulta a página de configurações para mais informações.

Atualizar as configurações do MLflow da Ultralytics

No ambiente Python, chama o método update no objeto settings para alterar as configurações:

from ultralytics import settings

# Atualizar uma configuração
settings.update({"mlflow": True})

# Redefinir as configurações para os valores padrão
settings.reset()

Como usar#

Comandos#

  1. Definir um nome de projeto: Podes definir o nome do projeto por meio de uma variável de ambiente:

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

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

  2. Definir um nome de execução: Assim como no nome do projeto, podes definir o nome da execução por meio de uma variável de ambiente:

    export MLFLOW_RUN=YOUR_RUN_NAME

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

  3. Iniciar um servidor MLflow local: Para começar a acompanhar, usa:

    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 registros do MLflow no diretório 'runs/mlflow'. Para direcionar as execuções de treinamento a outro servidor de acompanhamento, define MLFLOW_TRACKING_URI antes do treinamento:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. Manter a execução do MLflow ativa após o treinamento: Por padrão, a Ultralytics encerra automaticamente a execução do MLflow quando o treinamento termina. Para manter a execução aberta (por exemplo, para registrar métricas ou artefatos adicionais no mesmo notebook), define MLFLOW_KEEP_RUN_ACTIVE como True antes do treinamento:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Os valores 1, true, yes, on, y e t ativam esse comportamento (sem distinção entre maiúsculas e minúsculas). Qualquer outro valor, inclusive uma variável não definida, mantém o comportamento padrão de fechar a execução. Lembra-te de fechá-la manualmente depois com mlflow.end_run().

Registro de dados#

O registo é feito pelas funções on_pretrain_routine_end, on_train_epoch_end, on_fit_epoch_end e on_train_end de retorno de chamada. Essas funções são chamadas automaticamente durante as respetivas etapas do processo de treino e tratam do registo de parâmetros, métricas e artefactos.

Exemplos#

  1. Registo de métricas personalizadas: podes adicionar métricas personalizadas para registo modificando o dicionário trainer.metrics antes da chamada de on_fit_epoch_end.

  2. Ver a experiência: para veres os teus registos, acede ao teu servidor MLflow (normalmente http://127.0.0.1:5000) e seleciona a tua experiência e a execução. MLflow experiment tracking interface for YOLO

  3. Ver a execução: as execuções são modelos individuais dentro de uma experiência. Clica numa execução para veres os respetivos detalhes, incluindo os artefactos carregados e os pesos do modelo. MLflow run details with YOLO artifacts

Desativar o MLflow#

Para desativar o registo do MLflow:

yolo settings mlflow=False

Conclusão#

A integração do registo do MLflow com o Ultralytics YOLO oferece uma forma simplificada de acompanhar as tuas experiências de aprendizagem automática. Permite monitorizar métricas de desempenho e gerir artefactos de forma eficaz, contribuindo para um desenvolvimento e uma implementação robustos de modelos. Para mais detalhes, consulta a documentação oficial do MLflow.

Perguntas frequentes#

  • Para configurar o registo do MLflow com o Ultralytics YOLO, primeiro tens de garantir que o MLflow está instalado. Podes instalá-lo com pip:

    pip install mlflow

    Em seguida, ativa o registo do MLflow nas definições do Ultralytics. Podes controlá-lo com a chave mlflow. Para mais informações, consulta o guia de definições.

    Atualizar as configurações do MLflow da Ultralytics
    from ultralytics import settings
    
    # Atualizar uma configuração
    settings.update({"mlflow": True})
    
    # Redefinir as configurações para os valores padrão
    settings.reset()

    Por fim, inicia um servidor MLflow local para acompanhamento:

    mlflow server --backend-store-uri runs/mlflow
  • O Ultralytics YOLO com MLflow permite registar várias métricas, parâmetros e artefactos ao longo do processo de treino:

    • Registo de métricas: acompanha as métricas no final de cada época e quando o treino termina.
    • Registo de parâmetros: regista todos os parâmetros utilizados no processo de treino.
    • Registo de artefactos: guarda artefactos do modelo, como pesos e ficheiros de configuração, após o treino.

    Para informações mais detalhadas, consulta a documentação de acompanhamento do Ultralytics YOLO.

  • Sim, podes desativar o registo do MLflow para o Ultralytics YOLO atualizando as definições. Eis como fazê-lo com a CLI:

    yolo settings mlflow=False

    Para personalizar mais e repor as definições, consulta o guia de definições.

  • Para iniciares um servidor MLflow e acompanhar as tuas experiências no Ultralytics YOLO, utiliza o seguinte comando:

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

    Por predefinição, este comando inicia um servidor local em http://127.0.0.1:5000. Prime Ctrl+C nesse terminal para o parar.

    Consulta a secção de comandos para veres mais opções de comandos.

  • Define a variável de ambiente MLFLOW_KEEP_RUN_ACTIVE como True antes do treino:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Por predefinição, esta variável tem o valor False, pelo que o Ultralytics chama mlflow.end_run() quando o treino termina. Com MLFLOW_KEEP_RUN_ACTIVE=True, a execução permanece aberta para poderes registar métricas, parâmetros ou artefactos adicionais na mesma sessão Python — fecha-a tu com mlflow.end_run() quando terminares. Os valores 1, true, yes, on, y e t ativam esse comportamento (sem distinção entre maiúsculas e minúsculas).

  • A integração do MLflow com o Ultralytics YOLO oferece várias vantagens para gerir as tuas experiências de aprendizagem automática:

    • Acompanhamento melhorado de experiências: acompanha e compara facilmente diferentes execuções e os respetivos resultados.
    • Maior reprodutibilidade dos modelos: garante a reprodutibilidade das tuas experiências registando todos os parâmetros e artefactos.
    • Monitorização do desempenho: visualiza as métricas de desempenho ao longo do tempo para tomares decisões baseadas em dados e melhorares os modelos.
    • Fluxo de trabalho simplificado: automatiza o processo de registo para te concentrares mais no desenvolvimento dos modelos do que no acompanhamento manual.
    • Desenvolvimento colaborativo: partilha os resultados das experiências com os membros da equipa para facilitar a colaboração e a partilha de conhecimentos.

    Para conheceres em profundidade a configuração e utilização do MLflow com o Ultralytics YOLO, consulta a documentação Integração do MLflow com o Ultralytics YOLO.

Comentários