Criar um cluster do GKE otimizado para IA que usa G2 ou G4

Neste documento, descrevemos como criar clusters do Google Kubernetes Engine (GKE) otimizados para IA que usam a série de máquinas otimizadas para aceleradores G2 (NVIDIA L4) ou G4 (NVIDIA RTX PRO 6000) para oferecer suporte às suas cargas de trabalho de inteligência artificial (IA) e machine learning (ML). G2 e G4 são séries de máquinas GPU geral, que fornecem recursos de computação independentes projetados para tarefas de IA convencionais, como inferência de pequena a média escala e aplicativos com uso intenso de gráficos. Além dos tipos de máquina com uma ou várias GPUs, a série G4 oferece suporte a GPUs virtuais (vGPUs) em tipos de máquina com menos de uma GPU:

  • g4-standard-6 (um oitavo de uma GPU)
  • g4-standard-12 (um quarto de uma GPU)
  • g4-standard-24 (metade de uma GPU)

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 com G2 ou G4, siga estas etapas:

  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 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. Obter capacidade. Saiba como obter capacidade para sua opção de consumo.

Requisitos

Para criar um cluster do GKE otimizado para IA que use G2 ou G4, verifique se você atende aos seguintes requisitos:

  • Versão do GKE:as máquinas G4 (NVIDIA RTX PRO 6000) exigem as seguintes versões mínimas do GKE:
    • Modo padrão:
      • Tipos de máquina com uma ou mais GPUs: 1.34.0-gke.1662000 ou mais recente
      • Tipos de máquinas com menos de uma GPU (g4-standard-6, g4-standard-12 e g4-standard-24):
        • 1.35:1.35.8-gke.1518000 ou mais recente
        • 1.36 ou mais recente:1.36.4-gke.1082000 ou mais recente
    • Modo Autopilot:
      • Tipos de máquina com uma ou mais GPUs: 1.34.1-gke.1829001 ou mais recente
      • Tipos de máquinas com menos de uma GPU (g4-standard-6, g4-standard-12 e g4-standard-24):
        • 1.35:1.35.8-gke.1518000 ou mais recente
        • 1.36 ou mais recente:1.36.4-gke.1082000 ou mais recente
  • Drivers de GPU:
    • Os nós G2 (NVIDIA L4) precisam usar o driver NVIDIA versão 535 ou mais recente.
    • Os nós G4 (NVIDIA RTX PRO 6000) precisam usar a versão 580 ou mais recente do driver NVIDIA.

Limitações

As seguintes limitações se aplicam às séries de máquinas G2 e G4 como GPU geral:

  • SSDs locais:os tipos de máquina G2 e G4 não incluem discos SSD locais por padrão. É necessário anexá-los manualmente, se necessário. O tipo de máquina g4-standard-6 (um oitavo de uma GPU) não é compatível com SSDs locais.
  • NCCL Fast Socket:não é possível usar o NCCL Fast Socket com máquinas G2 ou G4 no GKE. Embora as máquinas G2 e G4 ofereçam suporte à comunicação de vários nós, elas usam redes VPC padrão. Para treinamento distribuído em grande escala que exige capacidade máxima de rede, recomendamos usar a série de máquinas de GPU em cluster, como A3 High ou A3 Mega (que usam GPUDirect TCPX) ou A3 Ultra e A4 (que usam GPUDirect RDMA).
  • Tipos de máquina G4 com menos de uma GPU:para g4-standard-6, g4-standard-12 e g4-standard-24:

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 G2 ou G4. Para cargas de trabalho de vários nós que usam G2 (L4) ou G4 (RTX PRO 6000), recomendamos usar uma política de posicionamento compacto para minimizar a latência de rede entre os nós.

    Para criar um pool de nós, use o comando a seguir:

    G2 (NVIDIA L4)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-l4,count=AMOUNT,gpu-driver-version=LATEST \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform" \
        --local-ssd-count=LOCAL_SSD_COUNT
    

    G4 (NVIDIA RTX PRO 6000)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-rtx-pro-6000,count=AMOUNT,gpu-driver-version=LATEST \
        --disk-type=hyperdisk-balanced \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform" \
        --local-ssd-count=LOCAL_SSD_COUNT
    

    Estação de trabalho virtual (vWS) G4

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-rtx-pro-6000-vws,count=AMOUNT,gpu-driver-version=LATEST \
        --disk-type=hyperdisk-balanced \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform" \
        --local-ssd-count=LOCAL_SSD_COUNT
    

    Substitua:

    • NODE_POOL_NAME: o nome do pool de nós.
    • 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 é necessário ao usar o posicionamento compacto.
    • MACHINE_TYPE: o tipo de máquina dos seus nós, por exemplo, g2-standard-4 para máquinas G2, g4-standard-48 para uma máquina G4 de GPU única ou g4-standard-6, g4-standard-12 ou g4-standard-24 para tipos de máquina G4 que têm menos de uma GPU (com o tipo de acelerador nvidia-rtx-pro-6000).
    • AMOUNT: o número de GPUs que serão anexadas a cada nó. Se você usar um tipo de máquina G4 com menos de uma GPU (g4-standard-6, g4-standard-12 ou g4-standard-24) ou g4-standard-48 (uma GPU), defina AMOUNT como 1.
    • LOCAL_SSD_COUNT: o número dos volumes SSD locais a serem provisionados em cada nó. Omita a flag --local-ssd-count se você usar o tipo de máquina g4-standard-6, porque ele não é compatível com SSDs locais.g4-standard-6

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 os manifestos de pod (somente no 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. Você precisa usar nvidia-l4 (para G2), nvidia-rtx-pro-6000 (para G4) ou nvidia-rtx-pro-6000-vws (para G4 com estação de trabalho virtual).
    • 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 que o contêiner vai consumir. Para solicitar um tipo de máquina G4 com menos de uma GPU (g4-standard-6, g4-standard-12 ou g4-standard-24) em um cluster do Autopilot, use um ComputeClass personalizado que especifique o tipo de máquina e defina nvidia.com/gpu como 1. Para instruções, consulte Solicitar tipos de máquinas G4 com menos de uma GPU.

A seguir