Este documento descreve como criar clusters personalizados do Google Kubernetes Engine (GKE) que usam os tipos de máquina otimizados para acelerador A2 Standard (A100 40 GB) ou A2 Ultra (A100 80 GB) para oferecer suporte às cargas de trabalho de inteligência artificial (IA) e machine learning (ML). A2 é uma série de máquinas de GPU geral, que fornecem recursos de computação independentes projetados para tarefas de IA convencionais como treinamento de modelos menores e inferência de host único.
O GKE oferece uma única plataforma para executar um conjunto diversificado de cargas de trabalho para sua organização, reduzindo o ônus operacional de gerenciar várias plataformas.
Para criar um cluster do GKE otimizado para IA que usa a série de máquinas A2, faça o seguinte:
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando
gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.
Funções exigidas
Para receber as permissões necessárias para criar e gerenciar um cluster do GKE, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
- Administrador do Kubernetes Engine (
roles/container.admin) - Administrador do Compute (
roles/compute.admin)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
Escolher uma opção de consumo e receber capacidade
Escolha uma opção de consumo. Faça sua escolha com base em como você quer receber e usar recursos de GPU. Para mais informações, consulte Escolher uma opção de consumo opção.
Para o GKE, considere as seguintes informações adicionais ao escolher uma opção de consumo:
- Para mais informações sobre o início flexível (pré-lançamento) e o GKE, consulte Sobre a disponibilidade de GPU com início flexível.
- O início flexível usa o posicionamento compacto de melhor esforço. Para examinar sua topologia, consulte Visualizar a topologia física dos nós no cluster do GKE.
- Só é possível receber informações de topologia ao usar VMs spot se você configurar o posicionamento compacto.
Receber capacidade. Saiba como receber capacidade para sua opção de consumo.
Requisitos
Para um cluster do GKE otimizado para IA que usa máquinas A2, os nós da GPU precisam usar o driver da NVIDIA versão 450.80.02 ou mais recente.
Limitações
As seguintes limitações se aplicam a máquinas A2 como uma GPU geral:
- GPU com várias instâncias:embora o A2 (GPUs A100) ofereça suporte a partições de hardware, a GPU com várias instâncias (NVIDIA) está indisponível ao usar o GKE Autopilot. Para cargas de trabalho que exigem o particionamento da GPU A100, é necessário usar o GKE Standard.
Crie o ambiente do GKE
É possível criar um cluster no modo Autopilot ou Standard.
Autopilot
Para criar um cluster do Autopilot, execute o seguinte comando:
gcloud container clusters create-auto CLUSTER_NAME \
--region=REGION
Substitua:
CLUSTER_NAME: o nome do cluster.REGION: a região do cluster.
Padrão
Crie um cluster Standard e um pool de nós de GPU:
Para criar um cluster Standard, execute o seguinte comando:
gcloud container clusters create CLUSTER_NAME \ --region=REGION \ --enable-ip-aliasSubstitua:
CLUSTER_NAME: o nome do cluster.REGION: a região do cluster.
Crie o pool de nós. Depois de criar o cluster, é possível adicionar um pool de nós com GPUs A2.
Observe o seguinte:
- Os tipos de máquina A2 Standard (
a2-highgpu) exigem que você anexe manualmente discos SSD locais aos nós para usá-los como espaço de rascunho ou armazenamento em cache. Use a flag--local-ssd-count. - Os tipos de máquina A2 Ultra (
a2-ultragpu) incluem automaticamente um número fixo de discos SSD locais por padrão. - Para cargas de trabalho de treinamento de vários nós, recomendamos usar uma política de posicionamento compacta para minimizar a latência de rede entre os nós.
Para cargas de trabalho de treinamento de vários nós, também recomendamos ativar o NCCL Fast Socket para melhorar o desempenho da rede.
A2 Standard (A100 40GB)
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-tesla-a100,count=AMOUNT,gpu-driver-version=LATEST \ --placement-type=COMPACT \ --scopes="https://www.googleapis.com/auth/cloud-platform" \ --local-ssd-count=LOCAL_SSD_COUNTA2 Ultra (A100 80GB)
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-a100-80gb,count=AMOUNT,gpu-driver-version=LATEST \ --placement-type=COMPACT \ --scopes="https://www.googleapis.com/auth/cloud-platform"Substitua:
CLUSTER_NAME: o nome do cluster.REGION: a região do cluster.ZONE: uma ou mais zonas na região que têm as GPUs solicitadas disponíveis, por exemplo,us-central1-a. Isso é necessário ao usar o posicionamento compacto.NODE_POOL_NAME: o nome do pool de nós.MACHINE_TYPE: o tipo de máquina dos nós, por exemplo,a2-highgpu-1g.AMOUNT: o número de GPUs a serem anexadas a cada nó.LOCAL_SSD_COUNT: o número dos volumes SSD locais a serem provisionados em cada nó.
- Os tipos de máquina A2 Standard (
Conectar-se ao seu cluster
Conecte-se ao cluster para poder executar os comandos kubectl nas próximas seções:
gcloud container clusters get-credentials CLUSTER_NAME \
--region=REGION
Substitua:
CLUSTER_NAME: o nome do cluster.REGION: a região do cluster.
Para mais informações, consulte Instalar o kubectl e configurar o acesso ao cluster.
Configurar o manifesto de pod (somente no Autopilot)
Se você criou um cluster do Autopilot, selecione as GPUs apropriadas nos manifestos de pod para que o GKE provisione o hardware.
Especifique o tipo de GPU escolhido e a reserva específica usando seletores de nós:
spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/gke-gpu-driver-version: latest # Optional: Include if using reserved capacity cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific"Substitua:
ACCELERATOR: o acelerador que você reservou. É necessário usarnvidia-tesla-a100(para A2 Standard) ounvidia-a100-80gb(para A2 Ultra).RESERVATION_NAME: o nome da reserva de capacidade do Compute Engine. Para consumir reservas compartilhadas ou blocos e sub-blocos específicos de reservas, consulte as respectivas seções em Consumir recursos de caminho zonal reservados.
Adicione os seguintes recursos ao contêiner que solicita GPUs:
containers: - name: my-container resources: limits: nvidia.com/gpu: AMOUNTSubstitua
AMOUNTpelo número de GPUs a serem anexadas a cada nó.