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 relacionadas a ML, bibliotecas e binários que não são compatíveis com a 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.
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 confirmação de identidade em uma fonte que a plataforma de agentes 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 doGoogle Cloud no mesmo projeto e região do Google Cloud que você usa para a plataforma de agentes. Saiba mais sobre como a plataforma de agentes carrega dados.
Quando o aplicativo estiver pronto para ser executado, crie a imagem Docker e a envie para o Artifact Registry ou o Docker Hub. Certifique-se de que a Plataforma de agentes possa acessar o registro.
Envie o job de treinamento sem servidor criando um job personalizado ou criando um pipeline de treinamento sem servidor.
A plataforma do agente 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
WorkerPoolSpecao enviar o job de treinamento sem servidor.A plataforma de agentes executa a imagem Docker, transmitindo quaisquer argumentos de linha de comando especificados ao criar o job de treinamento.
Quando o job de treinamento é bem-sucedido ou encontra um erro irrecuperável, a Agent Platform 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 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 na 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 na plataforma de agentes, especifique métricas de meta e informe se quer minimizar ou maximizar cada uma delas. 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 plataforma de agentes faz 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, a plataforma de agentes informa os valores da configuração mais eficaz dos seus 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-hypertunepara 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 plataforma de agentes.
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/cudacomo base para o contêiner personalizado. A imagem de contêinernvidia/cudatem 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.