Um contêiner personalizado é uma imagem do 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, dependências não ML, bibliotecas e binários que não são compatíveis com a Vertex AI.
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. 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.
Armazene os dados de treinamento e verificação em uma fonte que a Vertex AI possa acessar. Para simplificar a autenticação e reduzir a latência, armazene seus dados no Cloud Storage, no Bigtable ou em outro serviço de armazenamento do Google Cloud no mesmo projeto e região do Google Cloud que você usa para a Vertex AI. Saiba mais sobre como a Vertex AI carrega dados.
Quando o aplicativo estiver pronto para ser executado, crie a imagem do Docker e a envie ao Artifact Registry ou ao Docker Hub. Certifique-se de que a Vertex AI possa acessar o registro.
Envie o job de treinamento personalizado criando um job personalizado ou criando um pipeline de treinamento personalizado.
A Vertex AI 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 objeto
WorkerPoolSpec
ao enviar o job de treinamento personalizado.O AI Platform executa a imagem do Docker, passando por qualquer argumento de linha de comando especificado ao criar o job.
Quando o job de treinamento é bem-sucedido ou encontra um erro irrecuperável, a Vertex AI interrompe todos os processos do 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 um contêiner predefinido da Vertex AI com o framework de ML que quer usar, crie um contêiner personalizado com o framework que preferir e use-o para executar jobs na Vertex AI. 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 na Vertex AI, especifique métricas de meta e informe se quer minimizar ou maximizar cada métrica. Por exemplo, aumentar a precisão 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. A Vertex AI faz várias avaliações do aplicativo de treinamento, rastreando e ajustando os hiperparâmetros após a realização delas. Quando o job de ajuste de hiperparâmetros é concluído, a Vertex AI informa os valores da configuração mais eficaz dos hiperparâmetros. Ela 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 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
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 na Vertex AI.
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 do Docker diferente daquela usada para fazer treinamentos com CPUs.
- Pré-instale o kit de ferramentas CUDA e cuDNN na imagem do 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êinernvidia/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 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 mais sobre como criar um contêiner personalizado para o job de treinamento.