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
- Aplicam-se limitações do Compute Engine.
- Aplicam-se limitações da gVNIC.
- O NCCL Fast Socket só é suportado em conjuntos de nós que tenham aceleradores de hardware ativados.
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 L4nvidia-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?
- Use o registo de políticas de rede para registar quando as ligações aos pods são permitidas ou negadas pelas políticas de rede do seu cluster.