En esta página se muestra cómo usar el complemento Fast Socket de la biblioteca de comunicación colectiva de NVIDIA (NCCL) para ejecutar cargas de trabajo más eficientes en tus clústeres de Google Kubernetes Engine (GKE).
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
Limitaciones
- Se aplican las limitaciones de Compute Engine.
- Se aplican las limitaciones de gVNIC.
- NCCL Fast Socket solo se admite en los grupos de nodos que tienen aceleradores de hardware habilitados.
Requisitos
Autopilot de GKE:
- Los clústeres de Autopilot de GKE deben ejecutar la versión 1.30.2-gke.1023000 o una posterior.
Para obtener más información, consulta el artículo Crear un clúster de Autopilot.
GKE Standard:
- Tus grupos de nodos deben tener habilitado gVNIC para usar NCCL Fast Socket.
- Los nodos de GKE deben usar una imagen de nodo de Container-Optimized OS.
- Tus clústeres deben ejecutar la versión 1.25.2-gke.1700 de GKE o una posterior.
Para obtener más información, consulta el artículo Crear un clúster regional.
Habilitar NCCL Fast Socket en clústeres estándar
En esta sección se explica cómo habilitar el complemento Fast Socket de NCCL en los grupos de nodos Estándar de GKE. Si usas clústeres de Autopilot de GKE, GKE habilita automáticamente el complemento cuando solicitas NCCL Fast Socket en tus cargas de trabajo. Para obtener instrucciones, consulta la sección NCCL Fast Socket en Autopilot.
En el caso de los clústeres estándar, crea un grupo de nodos que use el complemento NCCL Fast Socket. También puedes actualizar un grupo de nodos que ya tengas con 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
Haz los cambios siguientes:
NODEPOOL_NAME
: el nombre del nuevo grupo de nodos.CLUSTER_NAME
: el nombre del clúster.ACCELERATOR_TYPE
: el tipo de acelerador de GPU que usas. Por ejemplo,nvidia-tesla-t4
.ACCELERATOR_COUNT
: número de GPUs por nodo.MACHINE_TYPE
: el tipo de máquina que quieres usar. NCCL Fast Socket no es compatible con los tipos de máquinas con memoria optimizada.
Instalar los controladores de dispositivos de GPU NVIDIA
En Autopilot, los controladores de dispositivos de GPU se instalan automáticamente.
En el caso de los clústeres estándar, sigue las instrucciones de Instalar controladores de dispositivos de GPU NVIDIA para instalar los controladores de dispositivos NVIDIA necesarios en tus nodos.
NCCL Fast Socket en Autopilot
En los clústeres de Autopilot, puedes solicitar NCCL Fast Socket en tus cargas de trabajo mediante el selector de nodos cloud.google.com/gke-nccl-fastsocket
.
Cuando solicitas NCCL Fast Socket en una carga de trabajo, GKE habilita gVNIC y NCCL Fast Socket en los nodos que GKE aprovisiona para la carga de trabajo.
Puedes usar NCCL Fast Socket con cualquier tipo de GPU compatible con Autopilot.
El siguiente pod solicita 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
Haz los cambios siguientes:
GPU_TYPE
: el tipo de hardware de GPU. Los valores permitidos son los siguientes:nvidia-gb200
: NVIDIA GB200 (versión preliminar)nvidia-b200
: NVIDIA B200 (180 GB)nvidia-h200-141gb
: NVIDIA H200 (141 GB)nvidia-h100-mega-80gb
: NVIDIA H100 Mega (80 GB)nvidia-h100-80gb
: NVIDIA H100 (80 GB)nvidia-a100-80gb
: NVIDIA A100 (80 GB)nvidia-tesla-a100
: NVIDIA A100 (40 GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
GPU_QUANTITY
: el número de GPUs que se asignarán al contenedor.
Verificar que NCCL Fast Socket esté habilitado
Para verificar que NCCL Fast Socket esté habilitado, consulta los pods de kube-system:
kubectl get pods -n kube-system
El resultado debería ser similar al siguiente:
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
En este resultado, el número de pods debe ser igual al número de nodos del grupo de nodos.
Inhabilitar NCCL Fast Socket
En los clústeres de Autopilot de GKE, el complemento Fast Socket de NCCL está inhabilitado de forma predeterminada. Para inhabilitar el complemento en una carga de trabajo, vuelve a desplegarla sin el selector de nodos de socket rápido de NCCL.
Para inhabilitar NCCL Fast Socket en un grupo de nodos de clústeres estándar, ejecuta el siguiente comando:
gcloud container node-pools update NODEPOOL_NAME \
--cluster=CLUSTER_NAME \
--no-enable-fast-socket
Los nodos que ya tengas seguirán teniendo el complemento instalado. Debes cambiar el tamaño del grupo de nodos manualmente para migrar las cargas de trabajo a los nuevos nodos.
Solución de problemas
Para solucionar problemas de gVNIC, consulta el artículo Solucionar problemas de NIC virtual de Google.
Siguientes pasos
- Usa el almacenamiento de registros de políticas de red para registrar cuándo se permiten o se deniegan las conexiones a los pods mediante las políticas de red de tu clúster.