Meet YOLO26: next-gen vision AI.

Link to this sectionIntegração com ClearML#

ClearML MLOps experiment tracking platform

Link to this sectionSobre o ClearML#

O ClearML é uma plataforma de MLOps de código aberto criada para simplificar fluxos de trabalho de machine learning e economizar tempo de engenharia.

  • 🔨 Acompanha cada execução de treinamento do YOLOv5 no gerenciador de experimentos.
  • 🔧 Faz o versionamento e acessa seus dados de treinamento personalizados com a ferramenta de versionamento de dados integrada do ClearML.
  • 🔦 Treina e monitora remotamente as execuções do YOLOv5 usando o ClearML Agent.
  • 🔬 Encontra o melhor mAP com a otimização de hiperparâmetros do ClearML.
  • 🔭 Transforma seu modelo YOLOv5 treinado em uma API com alguns comandos usando o ClearML Serving.

Usa quantas dessas ferramentas precisares — começa apenas pelo gerenciador de experimentos ou encadeia tudo num pipeline completo.

Dashboard de escalares do ClearML mostrando métricas de treinamento do YOLOv5

Link to this section🦾 Configuração#

O ClearML precisa comunicar-se com um servidor para rastrear teus experimentos e dados. Tens duas opções:

  • Inscreve-te no ClearML Hosted Service gratuito, ou
  • Implementa o teu próprio servidor ClearML — ele é de código aberto, por isso continua a ser uma opção viável mesmo para dados confidenciais.

Depois, instala o pacote Python clearml e conecta o SDK ao teu servidor:

pip install clearml

Gera as credenciais em Settings → Workspace → Create new credentials (no canto superior direito da interface do ClearML) e executa:

clearml-init

Segue as instruções. Pronto, a configuração está concluída.

Link to this section🚀 Treinar o YOLOv5 com ClearML#

Para ativar o rastreamento de experimentos, instala o pacote pip do ClearML se ainda não o tiveres feito:

pip install clearml

Isto ativará a integração com o script de treinamento do YOLOv5. A partir de agora, cada execução de treinamento será capturada e armazenada pelo gerenciador de experimentos do ClearML.

Para personalizar os nomes do projeto e da tarefa, passa --project e --name para o train.py. Os padrões são YOLOv5 e Training. O ClearML usa / como delimitador de subprojeto, por isso evita usar / em nomes de projetos personalizados.

python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Ou com nomes personalizados:

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Cada execução captura:

  • Código-fonte e alterações não confirmadas
  • Pacotes instalados
  • Hiperparâmetros
  • Checkpoints do modelo (usa --save-period n para salvar a cada n épocas)
  • Saída da consola
  • Escalares (mAP_0.5, mAP_0.5:0.95, precisão, recall, perdas, taxas de aprendizagem)
  • Detalhes da máquina, tempo de execução e data de criação
  • Gráficos gerados, como o correlograma de etiquetas e a matriz de confusão
  • Imagens com caixas delimitadoras (bounding boxes) por época
  • Visualizações em mosaico por época
  • Imagens de validação por época

Tudo aparece na interface do ClearML para que possas monitorar o treinamento num só lugar. Adiciona colunas personalizadas (por exemplo, mAP_0.5) para ordenar pelo modelo com melhor desempenho, ou seleciona vários experimentos para compará-los lado a lado.

Continua a ler para otimização de hiperparâmetros e execução remota.

Link to this section🔗 Gestão de Versionamento de Conjuntos de Dados (Datasets)#

Versionar dados separadamente do código facilita o acesso à versão mais recente e garante total reprodutibilidade. Este repositório aceita um ID de versão do conjunto de dados, obtém os dados automaticamente se estiverem em falta e regista o ID como parâmetro da tarefa para que saibas sempre quais os dados usados em cada experimento.

Interface de gestão de versionamento de datasets do ClearML

Link to this sectionPrepara o teu Conjunto de Dados#

O repositório YOLOv5 suporta muitos conjuntos de dados através de ficheiros de configuração YAML. Por padrão, os conjuntos de dados são transferidos para a pasta ../datasets relativa à raiz do repositório. Após a transferência do coco128, a estrutura da pasta fica assim:

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

Qualquer conjunto de dados funciona, desde que preserves esta estrutura.

Em seguida, copia o ficheiro YAML do conjunto de dados para a pasta raiz do mesmo — o ClearML lê este ficheiro para usar o conjunto de dados corretamente. Podes escrever o teu próprio YAML seguindo o layout do exemplo, garantindo que define path, train, test, val, nc e names.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE
        |_ LICENSE
        |_ README.txt

Link to this sectionCarrega o teu Conjunto de Dados#

Para registar o conjunto de dados como um dataset versionado do ClearML, entra na sua pasta raiz e executa:

cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

clearml-data sync é uma abreviação da seguinte sequência, que também podes executar explicitamente:

# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data close

Link to this sectionTreina num Conjunto de Dados ClearML#

Com o conjunto de dados registado, aponta o treinamento para ele pelo ID:

python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache

Link to this section👀 Otimização de Hiperparâmetros#

Com experimentos e dados versionados, podes construir sobre eles. Como cada experimento rastreado captura todo o ambiente — código, pacotes instalados e configuração — as execuções são totalmente reprodutíveis. O ClearML permite-te clonar um experimento, alterar os seus parâmetros e executá-lo novamente de forma automática, o que é a base da otimização de hiperparâmetros (HPO).

Para executar HPO localmente, usa o script fornecido. Primeiro, certifica-te de que existe uma tarefa de treinamento no gerenciador de experimentos — o script clona-a e varia os seus hiperparâmetros.

Preenche o ID da tarefa de modelo em utils/loggers/clearml/hpo.py e depois executa:

# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py

Altera task.execute_locally() para task.execute() para enviar o trabalho para uma fila do ClearML para que um agente remoto o possa processar.

Dashboard de HPO do ClearML com métricas do YOLOv5

Link to this section🤯 Execução Remota (Avançado)#

Executar HPO localmente é conveniente, mas muitas vezes irás querer realizar experimentos em hardware mais potente — uma máquina GPU local ou uma instância na nuvem. Esse é o papel do ClearML Agent:

Cada experimento rastreado contém tudo o que é necessário para reproduzi-lo noutra máquina (pacotes instalados, alterações não confirmadas e configuração). Um agente ClearML escuta uma fila, recolhe tarefas recebidas, recria o ambiente, executa o trabalho e envia escalares e gráficos de volta para o gerenciador de experimentos.

Transforma qualquer máquina — uma VM na nuvem, um computador com GPU local ou um portátil — num agente ClearML com:

clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]

Link to this sectionClonar, Editar e Enfileirar#

Com um agente em execução, podes atribuir-lhe trabalho diretamente a partir da interface:

  • 🪄 Clica com o botão direito num experimento e clona-o.
  • 🎯 Edita os seus hiperparâmetros.
  • ⏳ Clica com o botão direito na tarefa clonada e enfileira-a numa fila de destino.

Enfileirar uma tarefa a partir da interface

Link to this sectionExecutar uma Tarefa Remotamente#

Também podes marcar um script em execução para execução remota programaticamente, adicionando task.execute_remotely() após o logger do ClearML ter sido instanciado. Adiciona a linha destacada ao train.py:

# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
    loggers = Loggers(save_dir, weights, opt, hyp, LOGGER)  # loggers instance
    if loggers.clearml:
        loggers.clearml.task.execute_remotely(queue="my_queue")  # <------ ADD THIS LINE
        # data_dict is None unless the user selected a ClearML dataset, in which case ClearML fills it in.
        data_dict = loggers.clearml.data_dict
# ...

Após esta alteração, a execução do script de treinamento processa até essa linha, empacota o código e envia-o para a fila.

Link to this sectionTrabalhadores com Autoescala#

O ClearML é fornecido com autoescaladores que iniciam máquinas remotas na AWS, GCP ou Azure quando uma fila tem experimentos pendentes, convertem-nos em agentes ClearML e desligam-nos quando o trabalho termina — assim, apenas pagas pela computação que está realmente em execução.

Assiste ao vídeo de introdução abaixo:

Assiste ao vídeo

Link to this sectionSaber Mais#

Para mais informações sobre como integrar o ClearML com modelos Ultralytics, consulta o nosso guia de integração do ClearML e explora como podes melhorar o teu fluxo de trabalho MLOps com outras ferramentas de rastreamento de experimentos.

Contribuidores

Comentários