Criar um cluster do GKE otimizado para IA que usa A2

Este documento descreve como criar clusters personalizados do Google Kubernetes Engine (GKE) que usam os tipos de máquina otimizados para aceleradores 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 de uso geral que oferece 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 a sobrecarga 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:

  1. Crie o ambiente do GKE
  2. Conectar-se ao seu cluster
  3. Configurar os manifestos do pod

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ative 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:

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 usando papéis personalizados ou outros papéis predefinidos.

Escolher uma opção de consumo e obter capacidade

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

    Para o GKE, considere as seguintes informações adicionais ao escolher uma opção de consumo:

  2. Obtenha capacidade. Saiba como obter 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 às máquinas A2 como uma GPU geral:

  • GPU com várias instâncias:embora o A2 (GPUs A100) seja compatível com o particionamento de hardware, a GPU com várias instâncias (NVIDIA) não é compatível com o GKE Autopilot. Para cargas de trabalho que exigem o particionamento de GPU A100, use o GKE Standard.

Crie o ambiente do GKE

É possível criar um cluster no modo Autopilot ou Standard.

Piloto automático

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:

  1. Para criar um cluster padrão, execute o seguinte comando:

    gcloud container clusters create CLUSTER_NAME \
        --region=REGION \
        --enable-ip-alias
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • REGION: a região do cluster.
  2. Crie o pool de nós. Depois de criar o cluster, adicione 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 trabalho ou 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 com vários nós, recomendamos usar uma política de posicionamento compacto para minimizar a latência de rede entre os nós.
    • Para cargas de trabalho de treinamento com vários nós, também recomendamos ativar o Fast Socket do NCCL 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_COUNT
    

    A2 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 sua região que têm as GPUs solicitadas disponíveis, por exemplo, us-central1-a. Isso é obrigató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 que serão anexadas a cada nó.
    • LOCAL_SSD_COUNT: o número de volumes SSD locais a serem provisionados em cada nó.

Conectar-se ao seu cluster

Conecte-se ao cluster para 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 do pod (somente Autopilot)

Se você criou um cluster do Autopilot, selecione as GPUs adequadas nos manifestos do pod para que o GKE provisione o hardware.

  1. 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. Use nvidia-tesla-a100 (para A2 Standard) ou nvidia-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 Como consumir recursos de caminho zonal reservados.
  2. Adicione os seguintes recursos ao contêiner que solicita GPUs:

    containers:
      - name: my-container
        resources:
          limits:
            nvidia.com/gpu: AMOUNT
    

    Substitua AMOUNT pelo número de GPUs a serem anexadas a cada nó.

A seguir