En esta página, se muestra cómo usar el complemento Fast Socket de bibliotecas de comunicación colectiva (NCCL) de NVIDIA para ejecutar cargas de trabajo más eficientes en los clústeres de Google Kubernetes Engine (GKE).
Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta
gcloud components update
para obtener la versión más reciente.
Limitaciones
- Se aplican las limitaciones de Compute Engine.
- Se aplican las limitaciones de gVNIC.
- Fast Socket de NCCL solo es compatible con los grupos de nodos que tienen aceleradores de hardware habilitados.
Requisitos
GKE Autopilot:
- Los clústeres de GKE Autopilot deben ejecutar la versión 1.30.2-gke.1023000 o una posterior.
Para obtener más información, consulta Crea un clúster de Autopilot.
GKE Standard:
- Tus grupos de nodos deben tener gVNIC habilitado para usar Fast Socket de NCCL.
- 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 Crea un clúster regional.
Habilita Fast Socket de NCCL en clústeres de Standard
En esta sección, se muestra cómo habilitar el complemento NCCL Fast Socket en los grupos de nodos de GKE Standard. Si usas clústeres de GKE Autopilot, 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.
Para los clústeres estándar, crea un grupo de nodos que use el complemento de Fast Socket de NCCL. También puedes actualizar un grupo de nodos existente 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
Reemplaza lo siguiente:
NODEPOOL_NAME
: el nombre del grupo de nodos nuevoCLUSTER_NAME
: el nombre del clústerACCELERATOR_TYPE
: Es el tipo de acelerador de GPU que usas. Por ejemplo,nvidia-tesla-t4
.ACCELERATOR_COUNT
: es la cantidad de GPU por nodo.MACHINE_TYPE
: Es el tipo de máquina que deseas usar. Fast Socket de NCCL no es compatible con los tipos de máquina con optimización de memoria.
Instala los controladores de GPU de NVIDIA
En Autopilot, los controladores de dispositivos de GPU se instalan automáticamente.
Para los clústeres de Standard, sigue las instrucciones en Instala controladores de dispositivos de GPU de NVIDIA para instalar los controladores de dispositivos de NVIDIA necesarios en tus nodos.
Fast Socket de NCCL en Autopilot
En los clústeres de Autopilot, solicitas NCCL Fast Socket en tus cargas de trabajo con 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 aprovisiona para la carga de trabajo.
Puedes usar NCCL Fast Socket con cualquier tipo de GPU que admita 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
Reemplaza lo siguiente:
GPU_TYPE
: Es el tipo de hardware de GPU. Los valores permitidos son los siguientes:nvidia-h100-80gb
: NVIDIA H100 (80 GB) (solo disponible con la clase de procesamiento Accelerator)nvidia-a100-80gb
: NVIDIA A100 (80 GB)nvidia-tesla-a100
: NVIDIA A100 (40 GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
GPU_QUANTITY
: Es la cantidad de GPU que se asignará al contenedor.
Verifica que Fast Socket de NCCL esté habilitado
Para verificar que Fast Socket de NCCL esté habilitado, consulta los pods del sistema de Kubernetes:
kubectl get pods -n kube-system
El resultado es similar a este:
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, la cantidad de Pods debe ser igual a la cantidad de nodos en el grupo de nodos.
Inhabilita Fast Socket de NCCL
En los clústeres de GKE Autopilot, el complemento NCCL Fast Socket está inhabilitado de forma predeterminada. Para inhabilitar el complemento en una carga de trabajo existente, vuelve a implementarla sin el selector de nodos de Fast Socket de NCCL.
Para inhabilitar Fast Socket de NCCL para un grupo de nodos en clústeres estándar, ejecuta el siguiente comando:
gcloud container node-pools update NODEPOOL_NAME \
--cluster=CLUSTER_NAME \
--no-enable-fast-socket
El nodo existente todavía tiene instalado el complemento. Debes cambiar el tamaño del grupo de nodos de forma manual para migrar las cargas de trabajo a nodos nuevos.
Soluciona problemas
Para solucionar problemas de gVNIC, consulta Soluciona problemas de NIC virtual de Google.
¿Qué sigue?
- Usa el registro de políticas de red para registrar cuándo las políticas de red del clúster permiten o rechazan las conexiones a los Pods.