Melhore a eficiência da carga de trabalho com o NCCL Fast Socket


Esta página mostra como usar o plug-in de soquete rápido da NVIDIA Collective Communication Library (NCCL) para executar cargas de trabalho mais eficientes nos seus clusters do Google Kubernetes Engine (GKE).

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.

Limitações

Requisitos

GKE Autopilot:

  • Os clusters do GKE Autopilot têm de estar a executar a versão 1.30.2-gke.1023000 ou posterior.

Para obter detalhes, consulte o artigo Criar um cluster do Autopilot.

GKE Standard:

  • Os seus conjuntos de nós têm de ter o gVNIC ativado para usar o NCCL Fast Socket.
  • Os nós do GKE têm de usar uma imagem do nó do SO otimizado para contentores.
  • Os seus clusters têm de estar a executar a versão 1.25.2-gke.1700 ou posterior do GKE.

Para ver detalhes, consulte o artigo Criar um cluster regional.

Ative o NCCL Fast Socket em clusters padrão

Esta secção mostra como ativar o plug-in NCCL Fast Socket em pools de nós padrão do GKE. Se usar clusters do GKE Autopilot, o GKE ativa automaticamente o plug-in quando pede o NCCL Fast Socket nas suas cargas de trabalho. Para obter instruções, consulte a secção NCCL Fast Socket no Autopilot.

Para clusters padrão, crie um conjunto de nós que use o plug-in de soquete rápido da NCCL. Também pode atualizar um node pool existente através do comando 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 o seguinte:

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

Instale os controladores de dispositivos da GPU NVIDIA

No Autopilot, os controladores de dispositivos GPU são instalados automaticamente.

Para clusters padrão, siga as instruções em Instalar controladores de dispositivos de GPU NVIDIA para instalar os controladores de dispositivos NVIDIA necessários nos seus nós.

NCCL Fast Socket no Autopilot

Nos clusters do Autopilot, pode pedir o NCCL Fast Socket nas suas cargas de trabalho através do cloud.google.com/gke-nccl-fastsocket seletor de nós. Quando pede o NCCL Fast Socket numa carga de trabalho, o GKE ativa o gVNIC e o NCCL Fast Socket nos nós que o GKE aprovisiona para a carga de trabalho. Pode usar o NCCL Fast Socket com qualquer tipo de GPU suportado pelo Autopilot.

Os seguintes pedidos de pods usam 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 o seguinte:

  • GPU_TYPE: o tipo de hardware da GPU. Os valores permitidos são os seguintes:
    • nvidia-b200: NVIDIA B200 (180GB)
    • nvidia-h200-141gb: NVIDIA H200 (141GB)
    • nvidia-h100-mega-80gb: NVIDIA H100 Mega (80GB)
    • nvidia-h100-80gb: NVIDIA H100 (80GB)
    • 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 atribuir ao contentor.

Verifique se o NCCL Fast Socket está ativado

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

kubectl get pods -n kube-system

O resultado é semelhante ao seguinte:

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 deve ser igual ao número de nós no conjunto de nós.

Desative o NCCL Fast Socket

Nos clusters do GKE Autopilot, o plug-in NCCL Fast Socket está desativado por predefinição. Para desativar o plug-in numa carga de trabalho existente, volte a implementar a carga de trabalho sem o seletor de nós do NCCL Fast Socket.

Para desativar o NCCL Fast Socket para um conjunto de nós em clusters padrão, execute o seguinte comando:

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

Os nós existentes continuam a ter o plug-in instalado. Tem de redimensionar manualmente o conjunto de nós para migrar cargas de trabalho para novos nós.

Resolução de problemas

Para resolver problemas da gVNIC, consulte o artigo Resolução de problemas da NIC virtual da Google.

O que se segue?