Mejora la eficiencia de la carga de trabajo con Fast Socket de NCCL


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

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 nuevo
  • CLUSTER_NAME: el nombre del clúster
  • ACCELERATOR_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 L4
    • nvidia-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?