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 a nossa parceria com a ClearML para obter uma experiência Ultrlaytics YOLOv5 melhorada com uma integração ML perfeita, rastreio de experiências e muito mais.
Na Ultralytics, estabelecemos 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 o YOLOv5, para as manter gratuitas para todos. Este artigo pode conter links de afiliados para esses parceiros.
O ClearML é o nosso mais recente parceiro: uma caixa de ferramentas de código aberto concebida para lhe poupar tempo.
Com a missão de acelerar a adoção do ML, o ClearML facilita a integração do ML em qualquer produto de software e hardware existente.
Esta integração simplifica ainda mais o treino de um modelo YOLOv5 e a utilização do gestor de experiências ClearML para o acompanhar automaticamente. Pode especificar facilmente um ID da versão do conjunto de dados ClearML como entrada de dados e este será automaticamente utilizado para treinar o seu modelo.
Leve o seu acompanhamento de experiências para o nível seguinte
Acompanhe cada treino YOLOv5 no gestor de experiências.
Atribua versões e aceda facilmente aos seus dados de formação personalizados com a ferramenta integrada de atribuição de versões de dados ClearML.
Obtenha o melhor mAP utilizando a otimização de hiperparâmetros do ClearML.
Transforme seu modelo YOLOv5 recém-treinado em uma API com apenas alguns comandos usando o ClearML Serving.
Cabe-lhe a si decidir quantas destas ferramentas quer utilizar, pode limitar-se ao gestor de experiências ou encadeá-las todas num pipeline impressionante.
Configurar as coisas
Para manter o controle de seus experimentos e dados, o ClearML precisa se comunicar com um servidor. Há duas opções para isso: inscrever-se gratuitamente no ClearML Hosted Service ou configurar seu próprio servidor, veja aqui.
Até o servidor é de código aberto, por isso, se estiver a lidar com dados sensíveis, isso não é problema!
Instalar o pacote python clearml: pip install clearml
Ligar o ClearML SDK ao servidor através da criação de credenciais (ir ao topo direito do ecrã para Settings -> Workspace -> Create new credentials), depois executar o comando abaixo e seguir as instruções: clearml-init
E voilá! Está pronto para começar...
Treinar o YOLOv5 com o ClearML
Para ativar o rastreamento de experimentos do ClearML, basta instalar o pacote pip do ClearML.
pip install clearml
Isto permitirá a integração com o guião de treino YOLOv5. A partir de agora, todas as execuções de treino serão capturadas e armazenadas pelo gestor de experiências ClearML. Se quiser alterar o nome_do_projecto ou o nome_da_tarefa, vá ao nosso registo personalizado, onde pode alterá-lo: utils/loggers/clearml/clearml_utils.py
Ficheiros de modelo (utilize --save-period n para guardar um ponto de controlo a cada n épocas)
Saída da consola
Escalares (mAP_0.5, mAP_0.5:0.95, precisão, recuperação, perdas, taxas de aprendizagem, ...)
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 etiquetas e a matriz de confusão
Imagens com caixas delimitadoras por época
Mosaico por época
Imagens de validação por época
Nada mau! Agora, podemos visualizar todas essas informações na interface de usuário do ClearML para obter uma visão geral do progresso do treinamento. Adicione colunas personalizadas à exibição de tabela (como, por exemplo, mAP_0.5) para poder classificar facilmente o modelo com melhor desempenho. Ou selecione várias experiências e compare-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 continue a ler para saber como!
Gestão de versões de conjuntos de dados
O facto de se versionar os dados separadamente do código é geralmente uma boa ideia e facilita também a aquisição da versão mais recente. Este repositório suporta o fornecimento de um ID de versão do conjunto de dados e certificar-se-á de que obtém os dados se ainda não estiverem disponíveis. Para 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á sempre com certeza que dados foram utilizados em que experiência!
Preparar o conjunto de dados
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 descarregou o conjunto de dados coco128 utilizando a ligação no YAML ou com os scripts fornecidos pelo yolov5, obtém esta estrutura de pastas:
Mas pode ser qualquer conjunto de dados que deseje. Pode utilizar o seu próprio conjunto de dados, desde que respeite esta estrutura de pastas.
Em seguida, ⚠️copy o arquivo YAML correspondente à raiz do conjunto de dados folder⚠️. Esses arquivos YAML contêm as informações que o ClearML precisará para usar corretamente o conjunto de dados. Você também pode fazer isso sozinho, é claro, basta seguir a estrutura dos YAMLs de exemplo.
Para colocar este conjunto de dados no ClearML como um conjunto de dados com controlo de versão, aceda à pasta raiz do conjunto de dados e execute o seguinte comando:
Agora que temos as nossas experiências e versão de dados, é altura de ver o que podemos construir em cima!
Utilizando as informações do código, os pacotes instalados e os detalhes do ambiente, a própria experiência é agora completamente reproduzível. De facto, o ClearML permite clonar uma experiência e até alterar os seus parâmetros. Podemos então executá-la novamente com estes novos parâmetros de forma automática, o que é basicamente o que o HPO faz!
Para executar a otimização de hiperparâmetros localmente, incluímos um script pré-fabricado para si. Basta certificar-se de que uma tarefa de treinamento foi executada pelo menos uma vez, para que ela esteja no gerenciador de experimentos do ClearML.
Terá de preencher o ID desta tarefa modelo no script que se encontra em utils/loggers/clearml/hpo.py e depois executá-la. Pode alterar task.execute_locally() para task.execute() para a colocar numa fila ClearML e fazer com que um agente remoto trabalhe nela.
# Para utilizar o optuna, instale-o primeiro, caso contrário pode alterar o optimizador para ser apenas o RandomSearch pip install optuna python utils/loggers/clearml/hpo.py
Execução remota (Avançado)
Executar o HPO localmente é muito útil, mas e se, em vez disso, quisermos executar as nossas experiências numa 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.
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.). Assim, um agente ClearML faz exatamente isso: ouve uma fila para tarefas recebidas e, quando encontra uma, recria o ambiente e executa-a enquanto continua a comunicar escalares, gráficos, etc. ao gestor de experiências.
É possível 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 colocação em fila
Com o nosso agente em execução, podemos dar-lhe algum trabalho. Lembra-se de que, na secção HPO, podemos clonar uma tarefa e editar os hiperparâmetros? Também podemos fazer isso a partir da interface!
🪄 Clonar a experiência clicando com o botão direito do rato
🎯 Editar os hiperparâmetros de acordo com o que pretende que eles sejam
Colocar a tarefa em fila de espera em qualquer uma das filas de espera, clicando com o botão direito do rato
Executando uma tarefa remotamente
Agora pode clonar uma tarefa como explicámos acima, ou simplesmente marcar o seu 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, basta 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 # ...
Ao executar o script de treino após esta alteração, o python irá executar o script até essa linha, após a qual irá empacotar o código e enviá-lo para a fila de espera!
Escalonamento automático de trabalhadores
O ClearML também vem com escalonadores automáticos! Esta ferramenta irá automaticamente ligar novas máquinas remotas na nuvem da sua escolha (AWS, GCP, Azure) e transformá-las em agentes ClearML sempre que forem detectadas experiências na fila. Assim que as tarefas forem processadas, o redimensionador automático encerrará automaticamente as máquinas remotas e deixará de pagar! Veja o vídeo de introdução aos auto scalers abaixo.