Visão geral dos contêineres personalizados

Um contêiner personalizado é uma imagem Docker que você cria para executar seu aplicativo de treinamento. Ao executar o job de treinamento de machine learning (ML) em um contêiner personalizado, é possível usar frameworks de ML e dependências não ML, bibliotecas e binários que não são compatíveis com o Agent Platform.

Como funciona o treinamento com contêineres

O aplicativo de treinamento implementado no framework de ML escolhido é o núcleo do processo de treinamento.

  1. Crie um aplicativo que treine o modelo usando o framework de ML da sua preferência.

  2. Decida se quer usar um contêiner personalizado. Pode haver um contêiner pré-criado que seja compatível com suas dependências. Caso contrário, você precisará criar um contêiner personalizado para o job de treinamento. No contêiner personalizado, você pré-instala o aplicativo de treinamento e todas as respectivas dependências em uma imagem que será usada para executar esse job.

  3. Armazene os dados de treinamento e verificação em uma fonte que o Agent Platform consiga acessar. Para simplificar a autenticação e reduzir a latência, armazene seus dados no Cloud Storage, no Bigtable ou em outro Google Cloud serviço de armazenamento no mesmo Google Cloud projeto e região que você usa para o Agent Platform. Saiba mais sobre como o Agent Platform carrega dados.

  4. Quando o aplicativo estiver pronto para ser executado, crie a imagem Docker e a envie ao Artifact Registry ou ao Docker Hub. Certifique-se de que o Agent Platform possa acessar o registro.

  5. Envie o job de treinamento sem servidor por criar um job personalizado ou criar um pipeline de treinamento sem servidor.

  6. O Agent Platform configura recursos para o job. Ele aloca uma ou mais máquinas virtuais denominadas instâncias de treinamento com base na configuração do job. Para configurar uma instância de treinamento, use o contêiner personalizado especificado como parte do WorkerPoolSpec ao enviar o job de treinamento sem servidor.

  7. O Agent Platform executa a imagem Docker, passando por qualquer argumento de linha de comando especificado ao criar o job de treinamento.

  8. Quando o job de treinamento é bem-sucedido ou encontra um erro irrecuperável, o Agent Platform interrompe todos os processos dele e limpa os recursos.

Vantagens dos contêineres personalizados

Com os contêineres personalizados, você especifica e pré-instala todas as dependências necessárias para o aplicativo.

  • Inicialização mais rápida. Se você usa um contêiner personalizado com dependências pré-instaladas, o aplicativo de treinamento leva menos tempo para instalar suas dependências durante a inicialização.
  • Uso do framework de ML de sua preferência. Se você não encontrar um contêiner predefinido do Agent Platform com o framework de ML que quer usar, crie um contêiner personalizado com o framework escolhido e use-o para executar jobs no Agent Platform. Por exemplo, use um contêiner de cliente para treinar com o PyTorch.
  • Suporte estendido no treinamento distribuído. Com os contêineres personalizados, você faz treinamento distribuído usando qualquer framework de ML.
  • Uso da versão mais recente. Também é possível usar a compilação mais recente ou a versão secundária de um framework de ML. Por exemplo, é possível criar um contêiner personalizado para fazer treinamentos com tf-nightly.

Ajuste de hiperparâmetro com contêineres personalizados

Para fazer o ajuste de hiperparâmetro no Agent Platform, você especifica métricas de meta e informa se quer minimizar ou maximizar cada métrica. Por exemplo, aumentar a acurácia do modelo ou reduzir a perda dele. Além disso, liste os hiperparâmetros que você quer ajustar com o intervalo de valores aceitáveis para cada um deles. O Agent Platform realiza várias avaliações do aplicativo de treinamento, rastreando e ajustando os hiperparâmetros após cada avaliação. Quando o job de ajuste de hiperparâmetros é concluído, o Agent Platform informa os valores da configuração mais eficaz dos seus hiperparâmetros. Ele também apresenta um resumo de cada teste.

Para realizar o ajuste de hiperparâmetros com contêineres personalizados, é preciso fazer as modificações a seguir:

  • No Dockerfile, instale cloudml-hypertune (em inglês).
  • No código de treinamento:
    • Use cloudml-hypertune para informar os resultados de cada tentativa ao chamar as respectivas funções auxiliares report_hyperparameter_tuning_metric (em inglês).
    • Adicione argumentos de linha de comando a cada hiperparâmetro e processe a análise deles com uma ferramenta como argparse.

Saiba como configurar um job de ajuste de hiperparâmetro que usa contêineres personalizados ou saiba mais sobre como o ajuste de hiperparâmetros funciona no Agent Platform.

GPUs em contêineres personalizados

Para fazer o treinamento com GPUs, o contêiner personalizado precisa atender a alguns requisitos especiais. É necessário criar uma imagem Docker diferente daquela usada para fazer treinamentos com CPUs.

  • Pré-instale o kit de ferramentas CUDA e cuDNN na imagem Docker. A maneira recomendada de criar um contêiner personalizado compatível com GPUs é usar a imagem nvidia/cuda como base para o contêiner personalizado. A imagem de contêiner nvidia/cuda tem versões correspondentes do kit de ferramentas CUDA e cuDNN pré-instalados e ajuda na configuração correta das variáveis de ambiente relacionadas.
  • Instale o aplicativo de treinamento, junto com o framework de ML e outras dependências necessárias na imagem Docker.

Veja um exemplo de Dockerfile para treinamento com GPUs.

A seguir