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
- Limitações do Compute Engine.
- Limitações da gVNIC.
- O NCCL Fast Socket só é compatível com pools de nós que têm aceleradores de hardware ativados.
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 L4nvidia-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
- Use a geração de registros de política de rede para gravar quando as conexões com pods são permitidas ou negadas pelas políticas de rede do cluster.