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

Este documento descreve como criar clusters personalizados do Google Kubernetes Engine (GKE) que usam a série de máquinas otimizadas por acelerador G2 (NVIDIA L4) ou G4 (NVIDIA RTX PRO 6000) para oferecer suporte às cargas de trabalho de inteligência artificial (IA) e aprendizado de máquina (ML). G2 e G4 são séries de máquinas de GPU gerais, 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 intensivo de gráficos.

O GKE oferece uma única plataforma para executar um conjunto diversificado de cargas de trabalho para sua organização, reduzindo o trabalho operacional de gerenciamento de várias plataformas.

Para criar um cluster do GKE otimizado para IA com G2 ou G4, faça o seguinte:

  1. Crie o ambiente do GKE
  2. Conectar-se ao seu cluster
  3. Configure os manifestos de 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ê as seguintes funções 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 com papéis personalizados ou outros papéis predefinidos.

Escolha uma opção de consumo e receba 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 opção.

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

  2. Obtenha capacidade. Saiba como receber capacidade para sua opção de consumo.

Requisitos

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

  • Versão do GKE:as máquinas G4 (RTX PRO 6000) exigem a versão 1.32.4-gke.1698000 ou mais recente do GKE.
  • Drivers de GPU:os nós da GPU precisam usar o driver da NVIDIA versão 535 ou mais recente.

Limitações

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

  • 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.
  • Fast Socket NCCL:não é possível usar o Fast Socket NCCL 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 a rede VPC padrão. Para treinamento distribuído em grande escala que exige capacidade máxima de rede, recomendamos o uso da 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).

Crie o ambiente do GKE

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

Autopilot

Para criar um cluster do Autopilot, execute o comando a seguir:

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 padrão e um pool de nós de GPU:

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

    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, é possível adicionar 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 o uso de 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 G4 (vWS)

    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 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 nós, por exemplo, g2-standard-4 para máquinas G2 e g4-standard-48 para máquinas G4.
    • 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ó.

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 apropriadas nos manifestos de 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. É necessário 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 a serem anexadas a cada nó.

A seguir