Ultralytics YOLO27:

Integração do MLflow com o Ultralytics YOLO#

MLflow experiment tracking with Ultralytics YOLO

Introdução#

O registo de experiências é um aspeto crucial dos fluxos de trabalho de machine learning, permitindo acompanhar várias métricas, parâmetros e artefactos. Ajuda a melhorar a reprodutibilidade dos modelos, a depurar problemas e a melhorar o desempenho dos modelos. O Ultralytics YOLO, conhecido pelas suas capacidades de deteção de objetos em tempo real, oferece agora integração com o MLflow, uma plataforma de código aberto para a gestão completa do ciclo de vida de machine learning.

Esta página de documentação é um guia completo para configurar e utilizar as capacidades de registo do MLflow no teu projeto Ultralytics YOLO.

O que é o MLflow?#

O MLflow é uma plataforma de código aberto desenvolvida pela Databricks para gerir o ciclo de vida completo de machine learning. Inclui ferramentas para acompanhar experiências, empacotar código em execuções reproduzíveis e partilhar e implementar modelos. O MLflow foi concebido para funcionar com qualquer biblioteca de machine learning e linguagem de programação.

Funcionalidades#

  • Registo de métricas: Regista métricas no final de cada época e no final do treino.
  • Registo de parâmetros: Regista todos os parâmetros utilizados no treino.
  • Registo de artefactos: Regista os artefactos do modelo, incluindo pesos e ficheiros de configuração, no final do treino.

Configuração e pré-requisitos#

Garante que o MLflow está instalado. Caso contrário, instala-o utilizando pip:

pip install mlflow

Certifica-te de que o registo do MLflow está ativado nas definições do Ultralytics. Normalmente, isto é controlado pela chave mlflow das definições. Consulta a página de definições para obter mais informações.

Atualizar as definições do MLflow do Ultralytics

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

from ultralytics import settings

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

# Reset settings to default values
settings.reset()

Como utilizar#

Comandos#

  1. Definir um nome de projeto: Podes definir o nome do projeto através de uma variável de ambiente:

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    Em alternativa, utiliza o argumento project=<project> ao treinar um modelo YOLO, por exemplo, yolo train project=my_project.

  2. Definir um nome de execução: Tal como acontece com a definição do nome do projeto, podes definir o nome da execução através de uma variável de ambiente:

    export MLFLOW_RUN=YOUR_RUN_NAME

    Em alternativa, utiliza 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çares a acompanhar, utiliza:

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

    Isto iniciará, por predefinição, um servidor local em http://127.0.0.1:5000 e guardará todos os registos do mlflow no diretório 'runs/mlflow'. Para direcionares as tuas execuções de treino para outro servidor de acompanhamento, exporta MLFLOW_TRACKING_URI antes do treino:

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

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Os valores 1, true, yes, on, y e t ativam este comportamento (sem distinção entre maiúsculas e minúsculas). Qualquer outro valor, incluindo uma variável não definida, mantém o comportamento predefinido de fechar a execução. Não te esqueças de a fechar manualmente depois com mlflow.end_run().

Registo#

O registo é tratado por on_pretrain_routine_end, on_fit_epoch_end e on_train_end, que são funções de callback. Estas funções são chamadas automaticamente durante as respetivas fases do processo de treino e tratam do registo de parâmetros, métricas e artefactos.

Exemplos#

  1. Registar métricas personalizadas: Podes adicionar métricas personalizadas para serem registadas, modificando o dicionário trainer.metrics antes de on_fit_epoch_end ser chamado.

  2. Ver experiência: Para ver os seus registos, navegue até ao seu servidor MLflow (normalmente http://127.0.0.1:5000) e selecione a sua experiência e execução. MLflow experiment tracking interface for YOLO

  3. Ver execução: As execuções são modelos individuais dentro de uma experiência. Clique numa execução e veja os detalhes da execução, 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 machine learning. Permite monitorizar eficazmente as métricas de desempenho e gerir artefactos, contribuindo assim para um desenvolvimento e uma implementação robustos de modelos. Para obteres mais informações, consulta a documentação oficial do MLflow.

Perguntas frequentes#

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

    pip install mlflow

    Em seguida, ativa o registo do MLflow nas definições do Ultralytics. Isto pode ser controlado utilizando a chave mlflow. Para obteres mais informações, consulta o guia de definições.

    Atualizar as definições do MLflow do Ultralytics
    from ultralytics import settings
    
    # Update a setting
    settings.update({"mlflow": True})
    
    # Reset settings to default values
    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 métricas no final de cada época e após a conclusão do treino.
    • 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 obteres 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 podes fazê-lo utilizando a CLI:

    yolo settings mlflow=False

    Para obteres mais opções de personalização e repores as definições, consulta o guia de definições.

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

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

    Este comando inicia, por predefinição, 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 obteres 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, isto é 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 que possas registar métricas, parâmetros ou artefactos adicionais a partir da mesma sessão Python — fecha-a manualmente com mlflow.end_run() quando terminares. Os valores 1, true, yes, on, y e t ativam este 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 machine learning:

    • Acompanhamento aprimorado de experiências: Acompanha e compara facilmente diferentes execuções e os respetivos resultados.
    • Melhor reprodutibilidade dos modelos: Garante que as tuas experiências são reproduzíveis, 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 de modelos do que no acompanhamento manual.
    • Desenvolvimento colaborativo: Partilha os resultados das experiências com os membros da equipa para melhorar a colaboração e a partilha de conhecimento.

    Para obteres uma visão aprofundada da configuração e utilização do MLflow com o Ultralytics YOLO, consulta a documentação sobre a Integração do MLflow com o Ultralytics YOLO.

Comentários