Criar um cluster do GKE personalizado e otimizado para IA que usa N1

Este documento descreve como criar clusters personalizados do Google Kubernetes Engine (GKE) que usam a série de máquinas de uso geral N1 com GPUs NVIDIA T4 ou V100 anexadas para oferecer suporte às cargas de trabalho de inteligência artificial (IA) e machine learning (ML). As máquinas N1 com GPUs anexadas são consideradas GPUs gerais, que fornecem recursos de computação independentes projetados para tarefas de IA convencionais, como inferência de pequeno a médio porte e aplicativos com muitos gráficos.

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 N1, faça o seguinte:

  1. Crie o ambiente do GKE
  2. Conectar-se ao seu cluster
  3. Configure 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 com papéis personalizados ou outros papéis predefinidos.

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

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

Requisitos

Para um cluster do GKE otimizado para IA que usa N1, os nós precisam usar o driver da NVIDIA versão 535 ou mais recente.

Limitações

As limitações a seguir se aplicam ao N1 como uma série de máquinas de GPU geral:

  • GPU de várias instâncias (NVIDIA) : a série de máquinas N1 não oferece suporte a GPUs de várias instâncias (NVIDIA).
  • NCCL Fast Socket: não é possível usar NCCL Fast Socket com máquinas N1 no GKE. Embora as máquinas N1 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 de processamento de rede máxima, nós recomendamos o uso de uma série de máquinas 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 máquinas N1 com GPUs T4 ou V100 anexadas.

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

    N1 com GPUs T4 anexadas

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

    N1 com GPUs V100 anexadas

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

    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 a colocação compacta.
    • NODE_POOL_NAME: o nome do pool de nós.
    • MACHINE_TYPE: o tipo de máquina N1 para seus nós, por exemplo, n1-standard-4.
    • 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 o manifesto do pod (somente no Autopilot)

Se você criou um cluster do Autopilot, selecione as GPUs apropriadas 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ê quer usar. Use nvidia-tesla-t4 para GPUs T4 ou nvidia-tesla-v100 para GPUs V100.
    • 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 zonais 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