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).

Os clusters do Autopilot não são compatíveis com o Fast Socket NCCL.

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

  • 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.

Crie um cluster

Crie um novo cluster:

gcloud container clusters create CLUSTER_NAME \
    --cluster-version=VERSION \
    --region=COMPUTE_REGION

Substitua:

  • CLUSTER_NAME: o nome do novo cluster;
  • VERSION: a versão do GKE, que precisa ser 1.25.2-gke.1700 ou posterior. Também é possível usar a sinalização --release-channel para selecionar um canal de lançamento. O canal de lançamento precisa ter uma versão padrão 1.25.2-gke.1700 ou posterior.
  • COMPUTE_REGION: a região do Compute Engine para o novo cluster. Para clusters zonais, use --zone=COMPUTE_ZONE.

Ativar o Fast Socket NCCL

Crie um pool de nós que use o plug-in Fast Socket NCCL. 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

Siga as instruções em Como instalar os drivers de dispositivo da GPU NVIDIA para instalar os drivers de dispositivos NVIDIA necessários nos nós.

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

Para desativar o Fast Socket NCCL, 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