Faça a preparação num contentor com o Google Kubernetes Engine

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.

  1. Conclua os passos de configuração na secção Antes de começar do artigo Introdução a um contentor de aprendizagem profunda local.

  2. Certifique-se de que a faturação está ativada para o seu Google Cloud projeto.

    Saiba como ativar a faturação

  3. Ative as APIs Google Kubernetes Engine, Compute Engine e Artifact Registry.

    Ative as APIs

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.

  1. Aceda à Google Cloud consola.

  2. Clique no botão Ativar Cloud Shell na parte superior da janela da consola.

    Consola da Google Cloud Platform

    É aberta uma sessão do Cloud Shell num novo frame na parte inferior da consola e é apresentado um comando de linha de comandos.

    Sessão do Cloud Shell

Linha de comandos local

Para usar a linha de comandos local, conclua os passos seguintes.

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