Ao clicar em “Aceitar todos os cookies”, concorda com o armazenamento de cookies no seu dispositivo para melhorar a navegação no site, analisar a utilização do site e ajudar nos nossos esforços de marketing. Mais informações
Definições de cookies
Ao clicar em “Aceitar todos os cookies”, concorda com o armazenamento de cookies no seu dispositivo para melhorar a navegação no site, analisar a utilização do site e ajudar nos nossos esforços de marketing. Mais informações
Explore nossa parceria com a ClearML para uma experiência Ultralytics YOLOv5 aprimorada, com integração perfeita de ML, rastreamento de experimentos e muito mais.
Na Ultralytics, fazemos parcerias comerciais com outras startups para nos ajudar a financiar a pesquisa e o desenvolvimento de nossas incríveis ferramentas de código aberto, como o YOLOv5, para mantê-las gratuitas para todos. Este artigo pode conter links de afiliados para esses parceiros.
ClearML é nosso mais novo parceiro: um conjunto de ferramentas de código aberto projetado para economizar seu tempo.
Com a missão de acelerar a adoção de ML, o ClearML torna o ML perfeito para integrar em qualquer produto de software e hardware.
Essa integração torna ainda mais simples treinar um modelo YOLOv5 e usar o gerenciador de experimentos ClearML para rastreá-lo automaticamente. Você pode especificar facilmente um ID de versão do conjunto de dados ClearML como a entrada de dados, e ele será automaticamente usado para treinar seu modelo.
Leve o rastreamento de seus experimentos para o próximo nível
Rastreie cada execução de treinamento do YOLOv5 no gerenciador de experimentos.
Controle a versão e acesse facilmente seus dados de treinamento personalizados com a ferramenta integrada ClearML Data Versioning.
Obtenha o melhor mAP usando a otimização de hiperparâmetros ClearML.
Transforme seu modelo YOLOv5 recém-treinado em uma API com apenas alguns comandos usando o ClearML Serving.
Depende de você quantas dessas ferramentas você deseja usar, você pode usar apenas o gerenciador de experimentos ou encadeá-las em um pipeline impressionante.
Configurando as coisas
Para acompanhar seus experimentos e dados, o ClearML precisa se comunicar com um servidor. Você tem duas opções para isso: inscreva-se gratuitamente no ClearML Hosted Service ou configure seu próprio servidor, veja aqui.
Até mesmo o servidor é de código aberto, então, se você estiver lidando com dados confidenciais, não há problema!
Instale o pacote python clearml: pip install clearml
Conecte o SDK ClearML ao servidor criando credenciais (vá no canto superior direito em Configurações → Espaço de Trabalho → Criar novas credenciais), depois execute o comando abaixo e siga as instruções: clearml-init
E voilà! Você está pronto para começar...
Treinando o YOLOv5 com ClearML
Para habilitar o rastreamento de experimentos do ClearML, basta instalar o pacote pip do ClearML.
pip install clearml
Isso habilitará a integração com o script de treinamento do YOLOv5. Cada execução de treinamento a partir de agora será capturada e armazenada pelo gerenciador de experimentos do ClearML. Se você quiser alterar o project_name ou task_name, vá para o nosso logger personalizado, onde você pode alterá-lo: utils/loggers/clearml/clearml_utils.py
Arquivos de modelo (use --save-period n para salvar um checkpoint a cada n épocas)
Saída do console
Escalares (mAP_0.5, mAP_0.5:0.95, precisão, recall, perdas, taxas de aprendizado, ...)
Informações gerais, como detalhes da máquina, tempo de execução, data de criação, etc.
Todos os gráficos produzidos, como o correlograma de rótulos e a matriz de confusão
Imagens com bounding boxes por época
Mosaico por época
Imagens de validação por época
Nada mal! Agora, podemos visualizar todas essas informações na interface do usuário do ClearML para obter uma visão geral do nosso progresso de treinamento. Adicione colunas personalizadas à visualização de tabela (como, por exemplo, mAP_0.5) para que você possa classificar facilmente o modelo de melhor desempenho. Ou selecione vários experimentos e compare-os diretamente!
Há ainda mais que podemos fazer com todas essas informações, como otimização de hiperparâmetros e execução remota, então continue lendo para saber como!
Gerenciamento de Versão de Dataset
Controlar as versões dos seus dados separadamente do seu código é geralmente uma boa ideia e facilita a aquisição da versão mais recente também. Este repositório oferece suporte ao fornecimento de um ID de versão do conjunto de dados e garante que os dados sejam obtidos, caso ainda não estejam disponíveis. Além disso, este fluxo de trabalho também salva o ID do conjunto de dados usado como parte dos parâmetros da tarefa, para que você sempre saiba com certeza quais dados foram usados em qual experimento!
Prepare Seu Dataset
O repositório YOLOv5 suporta vários datasets diferentes usando arquivos YAML contendo suas informações. Por padrão, os datasets são baixados para a pasta ../datasets em relação à pasta raiz do repositório. Portanto, se você baixou o dataset coco128 usando o link no YAML ou com os scripts fornecidos pelo yolov5, você obtém esta estrutura de pastas:
Mas este pode ser qualquer conjunto de dados que desejar. Sinta-se à vontade para usar o seu próprio, desde que mantenha esta estrutura de pastas.
Em seguida, ⚠️copie o arquivo YAML correspondente para a raiz da pasta do conjunto de dados⚠️. Esses arquivos YAML contêm as informações que o ClearML precisará para usar corretamente o conjunto de dados. Você também pode criar isso sozinho, é claro, basta seguir a estrutura dos YAMLs de exemplo.
Para colocar este conjunto de dados no ClearML como um conjunto de dados versionado, vá para a pasta raiz do conjunto de dados e execute o seguinte comando:
Agora que temos nossos experimentos e versão de dados, é hora de dar uma olhada no que podemos construir em cima!
Usando as informações do código, os pacotes instalados e os detalhes do ambiente, o experimento em si agora é completamente reproduzível. Na verdade, o ClearML permite clonar um experimento e até mesmo alterar seus parâmetros. Podemos então apenas executá-lo novamente com esses novos parâmetros automaticamente, que é basicamente o que o HPO faz!
Para executar a otimização de hiperparâmetros localmente, incluímos um script pré-fabricado para você. Apenas certifique-se de que uma tarefa de treinamento tenha sido executada pelo menos uma vez, para que esteja no gerenciador de experimentos do ClearML, essencialmente a clonaremos e alteraremos seus hiperparâmetros.
Você precisará preencher o ID desta tarefa de modelo no script encontrado em utils/loggers/clearml/hpo.py e então apenas executá-lo. Você pode alterar task.execute_locally() para task.execute() para colocá-lo em uma fila ClearML e fazer com que um agente remoto trabalhe nele.
# Para usar o optuna, instale-o primeiro, caso contrário, você pode alterar o otimizador para ser apenas RandomSearch pip install optuna python utils/loggers/clearml/hpo.py
Execução Remota (Avançado)
Executar HPO localmente é realmente útil, mas e se quisermos executar nossos experimentos em uma máquina remota? Talvez você tenha acesso a uma máquina GPU muito poderosa no local ou tenha algum orçamento para usar GPUs na nuvem. É aqui que o ClearML Agent entra em ação.
Resumidamente: cada experimento rastreado pelo gerenciador de experimentos contém informações suficientes para reproduzi-lo em uma máquina diferente (pacotes instalados, alterações não confirmadas, etc.). Assim, um agente ClearML faz exatamente isso: ele escuta uma fila de tarefas recebidas e, quando encontra uma, recria o ambiente e o executa, enquanto continua reportando escalares, gráficos, etc. ao gerenciador de experimentos.
Você pode transformar qualquer máquina (uma VM na nuvem, uma máquina GPU local, seu próprio laptop) em um agente ClearML simplesmente executando:
clearml-agent daemon --queue [--docker]
Clonagem, Edição e Enfileiramento
Com nosso agente em execução, podemos dar-lhe algum trabalho. Lembra-se da seção de HPO em que podemos clonar uma tarefa e editar os hiperparâmetros? Podemos fazer isso também a partir da interface!
🪄 Clone o experimento clicando com o botão direito do mouse sobre ele
🎯 Edite os hiperparâmetros para o que você deseja que eles sejam
⏳ Enfileire a tarefa em qualquer uma das filas clicando com o botão direito do mouse sobre ela
Executando uma Tarefa Remotamente
Agora você pode clonar uma tarefa como explicamos acima, ou simplesmente marcar seu script atual adicionando task.execute_remotely() e, na execução, ele será colocado em uma fila, para o agente começar a trabalhar!
Para executar o script de treinamento YOLOv5 remotamente, tudo o que você precisa fazer é adicionar esta linha ao script training.py após a instanciação do logger ClearML:
# ... # 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 either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...
Ao executar o script de treinamento após esta alteração, o python executará o script até essa linha, após o qual ele empacotará o código e o enviará para a fila!
Trabalhadores de escalonamento automático
O ClearML também vem com auto scalers! Essa ferramenta iniciará automaticamente novas máquinas remotas na nuvem de sua escolha (AWS, GCP, Azure) e as transformará em agentes ClearML para você sempre que houver experimentos detectados na fila. Depois que as tarefas forem processadas, o auto scaler desligará automaticamente as máquinas remotas e você para de pagar! Confira o vídeo de introdução aos auto scalers abaixo.