Esta página mostra-lhe como executar uma tarefa de preparação numa instância dos Deep Learning Containers e executar essa imagem de contentor num cluster do Google Kubernetes Engine.
Antes de começar
Antes de começar, certifique-se de que concluiu os seguintes passos.
Conclua os passos de configuração na secção Antes de começar do artigo Introdução a um contentor de aprendizagem profunda local.
Certifique-se de que a faturação está ativada para o seu Google Cloud projeto.
Ative as APIs Google Kubernetes Engine, Compute Engine e Artifact Registry.
Abra a ferramenta de linha de comandos
Pode seguir este guia através da
Cloud Shell ou das ferramentas de linha de comandos localmente. O Cloud Shell é pré-instalado
com as ferramentas de linha de comandos gcloud
, docker
e kubectl
usadas
neste tutorial. Se usar a Cloud Shell, não precisa de
instalar estas ferramentas de linha de comandos na sua estação de trabalho.
Cloud Shell
Para usar o Cloud Shell, conclua os seguintes passos.
Aceda à Google Cloud consola.
Clique no botão Ativar Cloud Shell na parte superior da janela da consola.
É aberta uma sessão do Cloud Shell num novo frame na parte inferior da consola e é apresentado um comando de linha de comandos.
Linha de comandos local
Para usar a linha de comandos local, conclua os passos seguintes.
Use a CLI gcloud para instalar a ferramenta de linhas de comando do Kubernetes.
kubectl
é usado para comunicar com o Kubernetes, que é o sistema de orquestração de clusters dos clusters de contentores de aprendizagem profunda:gcloud components install kubectl
Quando concluiu os passos de introdução, instalou a CLI gcloud e o Docker.
Crie um cluster do GKE
Execute o seguinte comando para criar um cluster de dois nós no GKE com o nome 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 estas definições, consulte a documentação sobre a criação de clusters para a execução de contentores.
A criação do cluster pode demorar vários minutos.
Em alternativa, em vez de criar um cluster, pode usar um cluster existente no seu Google Cloud projeto. Se o fizer, pode ter de executar o seguinte comando para garantir que a ferramenta de linha de comandos kubectl
tem as credenciais adequadas para aceder ao seu cluster:
gcloud container clusters get-credentials YOUR_EXISTING_CLUSTER
Em seguida, instale os controladores do dispositivo GPU da NVIDIA.
Crie o ficheiro Dockerfile
Existem muitas formas de criar uma imagem de contentor.
Estes passos mostram como criar um para executar um script Python
denominado trainer.py
.
Para ver uma lista de imagens de contentores disponíveis:
gcloud container images list \
--repository="us-docker.pkg.dev/deeplearning-platform-release/gcr.io"
Recomendamos que aceda a Escolher um contentor para ajudar a selecionar o contentor pretendido.
O exemplo seguinte mostra como colocar um script Python denominado
trainer.py
num tipo de contentor de aprendizagem profunda do PyTorch específico.
Para criar o Dockerfile, escreva os seguintes comandos num ficheiro com o nome
Dockerfile
. Este passo pressupõe que tem código para preparar um modelo de aprendizagem
automática num diretório denominado model-training-code
e que o
módulo Python principal nesse diretório se denomina trainer.py
. Neste cenário, o contentor é removido assim que a tarefa for concluída. Por isso, o script de preparação deve ser configurado para gerar resultados no Cloud Storage (consulte um exemplo de um script que gera resultados no Cloud Storage) ou para gerar resultados no armazenamento persistente.
FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/pytorch-gpu
COPY model-training-code /train
CMD ["python", "/train/trainer.py"]
Crie e carregue a imagem do contentor
Para criar e carregar a imagem do contentor 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
Implemente a sua aplicação
Crie um ficheiro denominado pod.yaml com o seguinte conteúdo, substituindo IMAGE_URI pelo URI da sua 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 comandos kubectl
para executar o seguinte comando e
implementar a sua aplicação:
kubectl apply -f ./pod.yaml
Para acompanhar o estado do pod, execute o seguinte comando:
kubectl describe pod gke-training-pod