Nesta página, mostramos como executar um job de treinamento em uma instância de Deep Learning Containers e executar essa imagem de contêiner em um cluster do Google Kubernetes Engine.
Antes de começar
Antes de começar, conclua as etapas a seguir.
Conclua as etapas de configuração na seção "Primeiros passos" em Primeiros passos com um contêiner de aprendizado profundo local.
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
Ative as APIs Google Kubernetes Engine, Compute Engine e Artifact Registry.
Abrir a ferramenta de linha de comando
Siga este guia usando o
Cloud Shell ou
as ferramentas de linha de comando localmente. O Cloud Shell vem pré-instalado
com as ferramentas de linha de comando gcloud
, docker
e kubectl
usadas
neste tutorial. Se você usa o Cloud Shell, não precisa instalar essas ferramentas de linha de comando na sua estação de trabalho.
Cloud Shell
Para usar o Cloud Shell, conclua as etapas a seguir.
Acesse o Console do Google Cloud.
Clique no botão Ativar o Cloud Shell no topo da janela do console.
Uma sessão do Cloud Shell abre dentro de um novo frame na parte inferior do console e exibe um prompt de linha de comando.
Linha de comando local
Para usar a linha de comando local, siga as etapas a seguir.
Instale a ferramenta de linha de comando Kubernetes usando a CLI gcloud. A ferramenta
kubectl
é usada para se comunicar com o Kubernetes, que é o sistema de orquestração de clusters de contêineres de aprendizado profundo:gcloud components install kubectl
Quando você tiver concluído o artigo etapas, você instalou a Google Cloud CLI e Docker (em inglês).
Criar um cluster do GKE
Execute o seguinte comando para criar um cluster de dois nós no GKE
chamado pytorch-training-cluster
:
gcloud container clusters create pytorch-training-cluster \
--num-nodes=2 \
--zone=us-west1-b \
--accelerator="type=nvidia-tesla-p100,count=1" \
--machine-type="n1-highmem-2" \
--scopes="gke-default,storage-rw"
Para mais informações sobre essas configurações, consulte a documentação sobre como criar clusters para executar contêineres.
A criação do cluster talvez leve vários minutos.
Como alternativa, em vez de criar um cluster, é possível usar um cluster
atual no seu projeto do Google Cloud. Se você fizer isso, talvez seja necessário
executar o seguinte comando para garantir que a ferramenta de linha de comando
kubectl
tenha as credenciais apropriadas para acessar seu cluster:
gcloud container clusters get-credentials YOUR_EXISTING_CLUSTER
Em seguida, instale os drivers do dispositivo da GPU NVIDIA.
Criar o Dockerfile
Há muitas maneiras de criar uma imagem de contêiner.
Nestas etapas, você verá como criar um para executar um script Python
chamado trainer.py
.
Para ver uma lista de imagens de contêiner disponíveis:
gcloud container images list \
--repository="us-docker.pkg.dev/deeplearning-platform-release/gcr.io"
Acesse Como escolher um contêiner para ajudar a selecionar o contêiner desejado.
O exemplo a seguir mostra como colocar um script Python chamado
trainer.py
em um tipo de contêiner de aprendizado profundo específico do PyTorch.
Para criar o dockerfile, grave os seguintes comandos em um arquivo chamado
Dockerfile
. Nesta etapa, presume-se que você tenha o código para treinar um modelo de machine
learning em um diretório chamado model-training-code
e que o
principal módulo Python nesse diretório seja denominado trainer.py
. Nesse
cenário, o contêiner será removido quando o job for concluído. Dessa maneira,
o script de treinamento precisa ser configurado para saída no Cloud Storage. Consulte
um exemplo de um script que envia para
Cloud Storage
ou a saída para o
armazenamento permanente.
FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/pytorch-gpu
COPY model-training-code /train
CMD ["python", "/train/trainer.py"]
Criar e fazer upload da imagem do contêiner
Para criar e fazer upload da imagem do contêiner para o Artifact Registry, use os seguintes comandos:
export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export IMAGE_REPO_NAME=pytorch_custom_container
export IMAGE_TAG=$(date +%Y%m%d_%H%M%S)
export IMAGE_URI=us-docker.pkg.dev/$PROJECT_ID/$IMAGE_REPO_NAME:$IMAGE_TAG
docker build -f Dockerfile -t $IMAGE_URI ./
docker push $IMAGE_URI
Implantar aplicativo
Crie um arquivo chamado pod.yaml com o seguinte conteúdo, substituindo IMAGE_URI pelo URI da imagem.
apiVersion: v1
kind: Pod
metadata:
name: gke-training-pod
spec:
containers:
- name: my-custom-container
image: IMAGE_URI
resources:
limits:
nvidia.com/gpu: 1
Use a ferramenta de linha de comando kubectl
para executar o seguinte comando e
implantar o aplicativo:
kubectl apply -f ./pod.yaml
Para rastrear o status do pod, execute o comando abaixo:
kubectl describe pod gke-training-pod