Melhorar a eficiência da carga de trabalho usando o Fast Socket NCCL


Nesta página, mostramos como usar o plug-in de Fast Socket da Biblioteca de Comunicação Coletiva da NVIDIA (NCCL, na sigla em inglês) para executar cargas de trabalho mais eficientes nos clusters do Google Kubernetes Engine (GKE).

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 gcloud components update.

Limitações

Requisitos

GKE Autopilot:

  • Os clusters do GKE Autopilot precisam executar a versão 1.30.2-gke.1023000 ou mais recente.

Para detalhes, consulte Como criar um cluster Autopilot.

GKE Standard:

  • Seus pools de nós precisam ter a gVNIC ativada para usar o Fast Socket NCCL.
  • Os nós do GKE precisam usar uma imagem de nó do Container-Optimized OS.
  • Seus clusters precisam estar executando a versão 1.25.2-gke.1700 ou posterior do GKE.

Para detalhes, consulte Como criar um cluster regional.

Ativar o NCCL Fast Socket em clusters Standard

Nesta seção, mostramos como ativar o plug-in NCCL Fast Socket em pools de nós do GKE Standard. Se você usa clusters do GKE Autopilot, o GKE ativa automaticamente o plug-in quando você solicita o NCCL Fast Socket nas suas cargas de trabalho. Para instruções, consulte a seção NCCL Fast Socket no Autopilot.

Para clusters Standard, crie um pool de nós que use o plug-in NCCL Fast Socket. Também é possível atualizar um pool de nós usando gcloud container node-pools update.

gcloud container node-pools create NODEPOOL_NAME \
    --accelerator type=ACCELERATOR_TYPE,count=ACCELERATOR_COUNT \
    --machine-type=MACHINE_TYPE \
    --cluster=CLUSTER_NAME \
    --enable-fast-socket \
    --enable-gvnic

Substitua:

  • NODEPOOL_NAME: o nome do novo pool de nós.
  • CLUSTER_NAME: o nome do cluster.
  • ACCELERATOR_TYPE: o tipo de acelerador de GPU que você usa. Por exemplo, nvidia-tesla-t4.
  • ACCELERATOR_COUNT: o número de GPUs por nó.
  • MACHINE_TYPE: o tipo de máquina que você quer usar. O Fast Socket NCCL não é compatível com tipos de máquinas com otimização de memória.

Instalar drivers de dispositivo da GPU NVIDIA

No Autopilot, os drivers de dispositivo de GPU são instalados automaticamente.

Para clusters Standard, siga as instruções em Como instalar drivers de dispositivo de GPU NVIDIA para instalar os drivers de dispositivo NVIDIA necessários nos nós.

NCCL Fast Socket no Autopilot

Nos clusters Autopilot, você solicita o NCCL Fast Socket nas suas cargas de trabalho usando o seletor de nó cloud.google.com/gke-nccl-fastsocket. Quando você solicita o NCCL Fast Socket em uma carga de trabalho, o GKE ativa o gVNIC e o NCCL Fast Socket nos nós que o GKE provisiona para a carga de trabalho. É possível usar o NCCL Fast Socket com qualquer tipo de GPU aceita pelo Autopilot.

O pod a seguir solicita o NCCL Fast Socket:

apiVersion: v1
kind: Pod
metadata:
  name: my-gpu-pod
spec:
  nodeSelector:
    cloud.google.com/gke-accelerator: GPU_TYPE
    cloud.google.com/gke-nccl-fastsocket: "true"
  containers:
  - name: my-gpu-container
    image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
    command: ["/bin/bash", "-c", "--"]
    args: ["while true; do sleep 600; done;"]
    resources:
      limits:
        nvidia.com/gpu: GPU_QUANTITY

Substitua:

  • GPU_TYPE: o tipo de hardware da GPU. Os valores permitidos são os seguintes:
    • nvidia-h100-80gb: NVIDIA H100 (80 GB) (disponível apenas com a classe de computação Accelerator)
    • nvidia-a100-80gb: NVIDIA A100 (80GB)
    • nvidia-tesla-a100: NVIDIA A100 (40GB)
    • nvidia-l4: NVIDIA L4
    • nvidia-tesla-t4: NVIDIA T4
  • GPU_QUANTITY: o número de GPUs a serem alocadas para o contêiner.

Verificar se o Fast Socket está ativado

Para verificar se o Fast Socket NCCL está ativado, veja os pods kube-system:

kubectl get pods -n kube-system

O resultado será assim:

NAME                             READY   STATUS    RESTARTS   AGE
nccl-fastsocket-installer-qvfdw  2/2     Running   0          10m
nccl-fastsocket-installer-rtjs4  2/2     Running   0          10m
nccl-fastsocket-installer-tm294  2/2     Running   0          10m

Nesta saída, o número de pods precisa ser igual ao número de nós no pool de nós.

Desativar o Fast Socket NCCL

Nos clusters do GKE Autopilot, o plug-in NCCL Fast Socket fica desativado por padrão. Para desativar o plug-in em uma carga de trabalho existente, reimplante a carga de trabalho sem o seletor de nó do NCCL Fast Socket.

Para desativar o NCCL Fast Socket em um pool de nós em clusters Standard, execute o seguinte comando:

gcloud container node-pools update NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --no-enable-fast-socket

Os nós atuais ainda têm o plug-in instalado. É preciso redimensionar manualmente o pool de nós para migrar cargas de trabalho para novos nós.

Solução de problemas

Para resolver problemas do gVNIC, consulte Solução de problemas do NIC virtual do Google.

A seguir