Explora a nossa parceria com ClearML para obteres uma experiência Ultrlaytics YOLOv5 melhorada com uma integração ML perfeita, acompanhamento de experiências e muito mais.
Em Ultralytics fazemos parcerias comerciais com outras startups para nos ajudar a financiar a investigação e o desenvolvimento das nossas fantásticas ferramentas de código aberto, como YOLOv5, para as mantermos gratuitas para todos. Este artigo pode conter links de afiliados para esses parceiros.
ClearML é o nosso mais recente parceiro: uma caixa de ferramentas de código aberto concebida para te poupar tempo.
Com a missão de acelerar a adoção do ML, ClearML torna o ML fácil de integrar em qualquer produto de software e hardware existente.
Esta integração torna ainda mais simples treinar um modelo YOLOv5 e utiliza o gestor de experiências ClearML para o seguir automaticamente. Podes especificar facilmente um ID de versão do conjunto de dados ClearML como entrada de dados e este será automaticamente utilizado para treinar o teu modelo.
Cabe-te a ti decidir quantas destas ferramentas queres utilizar, podes limitar-te ao gestor de experiências ou encadeá-las todas num pipeline impressionante.
Para manteres um registo das tuas experiências e dados, ClearML precisa de comunicar com um servidor. Tens duas opções para isso: ou te inscreves gratuitamente no ClearML Hosted Service ou crias o teu próprio servidor, vê aqui.
Até o servidor é de código aberto, por isso, se estiveres a lidar com dados sensíveis, isso não é problema!
E voilá! Estás pronto para começar...
Para ativar o acompanhamento de experiências em ClearML , basta instalar o pacote pip ClearML .
instala o pip clearml
Isto permitirá a integração com o script de treino YOLOv5 . A partir de agora, cada treino será capturado e armazenado pelo gestor de experiências ClearML . Se quiseres alterar o nome_do_projecto ou o nome_da_tarefa, vai ao nosso logger personalizado, onde o podes alterar: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache
Isto irá capturar:
Nada mau! Agora, podemos visualizar todas essas informações na interface do usuário ClearML para obter uma visão geral do progresso do treinamento. Adiciona colunas personalizadas à vista de tabela (como, por exemplo, mAP_0.5) para que possas ordenar facilmente o modelo com melhor desempenho. Ou selecciona várias experiências e compara-as diretamente!
Há ainda mais coisas que podemos fazer com toda esta informação, como a otimização de hiperparâmetros e a execução remota, por isso continua a ler para saberes como!
Criar versões dos teus dados separadamente do teu código é geralmente uma boa ideia e facilita a aquisição da versão mais recente também. Este repositório suporta o fornecimento de um ID de versão do conjunto de dados e certifica-se de que obtém os dados se estes ainda não estiverem disponíveis. Além disso, este fluxo de trabalho também guarda o ID do conjunto de dados utilizado como parte dos parâmetros da tarefa, pelo que saberás sempre com certeza que dados foram utilizados em que experiência!
O repositório YOLOv5 suporta uma série de conjuntos de dados diferentes, utilizando ficheiros YAML que contêm as suas informações. Por defeito, os conjuntos de dados são descarregados para a pasta ../datasets em relação à pasta raiz do repositório. Assim, se descarregaste o conjunto de dados coco128 usando a ligação no YAML ou com os scripts fornecidos por yolov5, obténs esta estrutura de pastas:
...
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txt
Mas pode ser qualquer conjunto de dados que queiras. Podes usar o teu próprio conjunto de dados, desde que mantenhas esta estrutura de pastas.
Em seguida, ⚠️copy o arquivo YAML correspondente à raiz do conjunto de dados folder⚠️. Estes ficheiros YAML contêm a informação de que ClearML vai precisar para utilizar corretamente o conjunto de dados. Também podes fazer isto tu mesmo, claro, basta seguires a estrutura dos exemplos de YAMLs.
Basicamente, precisamos das seguintes chaves: path, train, test, val, nc, names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE!
|_ LICENSE
|_ README.txt
Para colocar este conjunto de dados em ClearML como um conjunto de dados com versão, vai à pasta raiz do conjunto de dados e executa o seguinte comando:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .
O comando clearml-data sync é, na verdade, um comando abreviado. Também podes executar estes comandos um após o outro:
# Opcionalmente adiciona --parent se quiseres basear
# esta versão noutra versão do conjunto de dados, para que não sejam carregados ficheiros duplicados!
clearml-data create --name coco128 --project YOLOv5/p>
clearml-data add --files .
clearml-data close
Agora que tens um conjunto de dados ClearML , podes simplesmente utilizá-lo para treinar modelos YOLOv5 personalizados.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cache
Agora que temos as nossas experiências e versão de dados, está na altura de ver o que podemos construir em cima!
Utilizando a informação do código, os pacotes instalados e os detalhes do ambiente, a experiência em si é agora completamente reproduzível. De facto, ClearML permite-te clonar uma experiência e até alterar os seus parâmetros. Depois, podes voltar a executá-la automaticamente com estes novos parâmetros, que é basicamente o que o HPO faz!
Para executar a otimização dos hiperparâmetros localmente, incluímos um script pré-fabricado para ti. Certifica-te de que uma tarefa de treino foi executada pelo menos uma vez, de modo a que esteja no gestor de experiências ClearML . Vamos essencialmente cloná-la e alterar os seus hiperparâmetros.
Terás de preencher o ID desta tarefa modelo no script que se encontra em utils/loggers/clearml/hpo.py e depois é só executá-lo. Podes alterar task.execute_locally() para task.execute() para a colocar numa fila ClearML e ter um agente remoto a trabalhar nela.
# Para usar o optuna, instala-o primeiro, caso contrário podes alterar o optimizador para ser apenas o RandomSearch pip install optuna python utils/loggers/clearml/hpo.py
Executar o HPO localmente é muito útil, mas e se, em vez disso, quisermos executar as nossas experiências numa máquina remota? Talvez tenhas acesso a uma máquina GPU muito poderosa no local ou tenhas algum orçamento para usar GPUs na nuvem. É aqui que o agente ClearML entra em ação.
Vê o que o agente pode fazer aqui:
Resumindo: 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.). Então, um agente ClearML faz exatamente isso: ouve uma fila para tarefas recebidas e, quando encontra uma, recria o ambiente e o executa enquanto ainda reporta escalares, gráficos etc. para o gerenciador de experimentos.
Podes transformar qualquer máquina (uma VM na nuvem, uma máquina local GPU , o teu próprio portátil ... ) num agente ClearML , executando simplesmente:
clearml-agent daemon --queue [--docker]
Com o nosso agente em execução, podemos dar-lhe algum trabalho. Lembra da seção HPO que podemos clonar uma tarefa e editar os hiperparâmetros? Também podemos fazer isso a partir da interface!
Clona a experiência clicando nela com o botão direito do rato
Edita os hiperparâmetros de acordo com o que desejas que eles sejam
Coloca a tarefa em fila de espera em qualquer uma das filas, clicando com o botão direito do rato
Agora podes clonar uma tarefa como explicámos acima, ou simplesmente marcar o teu script atual adicionando task.execute_remotely() e, na execução, será colocado numa fila, para o agente começar a trabalhar!
Para executar o script de treino YOLOv5 remotamente, tudo o que tens de fazer é adicionar esta linha ao script training.py depois de o registador ClearML ter sido instanciado:
# ... # 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 # ...
Quando executas o script de treino após esta alteração, python executa o script até essa linha, após o que empacota o código e envia-o para a fila de espera!
ClearML também vem com auto scalers! Esta ferramenta irá automaticamente criar novas máquinas remotas na nuvem da tua escolha (AWS, GCP, Azure) e transformá-las em agentes ClearML para ti sempre que forem detectadas experiências na fila. Assim que as tarefas forem processadas, o escalonador automático desliga automaticamente as máquinas remotas e tu deixas de pagar! Vê o vídeo de introdução aos auto scalers abaixo.
Tens alguma pergunta? Junta-te à nossa comunidade e deixa a tua pergunta hoje!
Começa a tua viagem com o futuro da aprendizagem automática