Visão geral dos contêineres personalizados

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.

  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 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.

  4. 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.

  5. Envie o job de treinamento personalizado criando um job personalizado ou criando um pipeline de treinamento personalizado.

  6. 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.

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

  8. 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:

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ê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 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