No AI Platform Training, os contêineres são um recurso que permite executar seu aplicativo em uma imagem do Docker. É possível criar seu contêiner personalizado para executar jobs no AI Platform Training usando frameworks e versões de ML, além de dependências, bibliotecas e binários não relacionados a ML que, de outro modo, não seriam compatíveis com o AI Platform Training.
Como funciona o treinamento com contêineres
O aplicativo de treinamento implementado no framework de ML escolhido é o núcleo do processo de treinamento.
- Crie um aplicativo que treine o modelo usando o framework de ML da sua preferência.
- Decida se quer usar um contêiner personalizado. Poderá haver uma versão de ambiente de execução que seja compatível com as 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.
- Armazene seus dados de treinamento e verificação em uma fonte acessível ao AI Platform Training. Geralmente, isso significa colocá-los no Cloud Storage, no Bigtable ou em outro serviço do Google Cloud Storage associado ao mesmo projeto do Google Cloud usado no AI Platform Training.
- Quando o aplicativo estiver pronto para execução, crie a imagem do Docker e a envie para o Container Registry, certificando-se de que o serviço do AI Platform Training possa acessar o registro.
- Use
gcloud ai-platform jobs submit training
para enviar o job, especificando os argumentos em um arquivoconfig.yaml
ou as sinalizaçõesgcloud
correspondentes. - O serviço de treinamento do AI Platform Training configura os recursos para seu 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 objeto
TrainingInput
ao enviar o job de treinamento. - O serviço de treinamento executa a imagem do Docker, passando por qualquer argumento de linha de comando especificado ao criar o job.
- É possível conseguir informações sobre o job em execução destas maneiras:
- No Cloud Logging. Encontre um link para os registros do job na página de detalhes "Jobs" do AI Platform Training no console do Google Cloud.
- Solicite detalhes do job ou execute o streaming de registros com a ferramenta de linha de comando
gcloud
. Especificamente,gcloud ai-platform jobs stream-logs
. - Faça solicitações de status com programação ao serviço de treinamento por meio do método
projects.jobs.get
. Veja mais detalhes sobre Como monitorar os jobs de treinamento.
- Quando o job de treinamento é bem-sucedido ou encontra um erro irrecuperável, o AI Platform Training interrompe todos os processos de job 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 uma versão de ambiente de execução do AI Platform Training compatível com o framework de ML que quer usar, crie um contêiner personalizado que instale o framework escolhido e use-o para executar jobs no AI Platform Training. Por exemplo, é possível fazer treinamentos 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âmetros no AI Platform Training, você especifica uma métrica de objetivo e informa se quer minimizá-la ou maximizá-la. Por exemplo, aumentar a precisão do modelo ou reduzir a perda dele. Além disso, liste os hiperparâmetros que você quer ajustar, além de um valor de destino para cada um deles. O AI Platform Training 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 AI Platform Training informa os valores da configuração mais eficaz dos seus hiperparâmetros. Ele também apresenta um resumo de cada avaliação.
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 auxiliaresreport_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
(em inglês).
- Use
- Na solicitação do job, inclua
HyperparameterSpec
no objetoTrainingInput
.
Veja um exemplo de treinamento com contêineres personalizados usando o ajuste de hiperparâmetros ou saiba mais sobre como o ajuste de hiperparâmetros funciona no AI Platform Training.
Como usar GPUs com contêineres personalizados
Para fazer o treinamento com GPUs, o contêiner personalizado precisa atender a alguns requisitos especiais. É necessário criar uma imagem do Docker diferente daquela usada para fazer treinamentos com CPUs.
- Pré-instale o kit de ferramentas CUDA e cuDNN na imagem do Docker. Usar a imagem
nvidia/cuda
(em inglês) como base é a maneira recomendada de lidar com esse processo. Isso acontece porque ela inclui as versões correspondentes do kit de ferramentas CUDA e cuDNN pré-instaladas e ajuda na configuração correta das variáveis de ambiente relacionadas. - Instale o aplicativo de treinamento com o framework de ML necessário e outras dependências na imagem do Docker.
Veja um exemplo de Dockerfile para treinamento com GPUs.
A seguir
- Saiba como usar contêineres personalizados nos jobs de treinamento.
- Saiba mais sobre o treinamento distribuído com contêineres personalizados.