Creación de un grupo de nodos de GPU totalmente administrado en Azure Kubernetes Service (AKS) (versión preliminar)

La ejecución de cargas de trabajo de GPU de NVIDIA en Azure Kubernetes Service (AKS) tradicionalmente requiere instalar y mantener el controlador de GPU de NVIDIA, el complemento de dispositivo kubernetes y un exportador de métricas de GPU en cada nodo de GPU. Estos componentes habilitan la programación de GPU, el acceso a GPU de nivel de contenedor y la telemetría, pero su instalación manual o a través del operador de GPU de NVIDIA agrega sobrecarga operativa.

Con los nodos de GPU totalmente administrados (versión preliminar), AKS instala y mantiene el controlador de GPU de NVIDIA, el complemento de dispositivo y el exportador de métricas de Data Center GPU Manager (DCGM) por usted. La creación del grupo de nodos de GPU se convierte en un solo paso y la capacidad de GPU se comporta como cualquier otro grupo de nodos de AKS.

Configure un grupo de nodos de GPU administrado a través de dos campos en gpuProfile.nvidia:

  • managementMode (Managed o Unmanaged) controla si AKS instala la pila de GPU administrada completa (controlador, complemento de dispositivo y exportador de métricas DCGM) o solo el controlador. El valor predeterminado es Unmanaged.
  • migStrategy (None, Single, o Mixed) establece la estrategia de GPU de instancias múltiples (MIG) para las SKU de GPU admitidas, como A100 y H100. El valor predeterminado es None.

En este artículo, aprovisionará un grupo de nodos de GPU administrados, habilitará MIG de forma opcional, verificará la pila y ejecutará una carga de trabajo de GPU de ejemplo.

Importante

Las características en versión preliminar de AKS están disponibles a elección del usuario y en régimen de autoservicio. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de AKS cuentan con soporte parcial por parte del servicio al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:

Antes de empezar

Componentes de GPU administrados

Un grupo de nodos de GPU administrado puede incluir los siguientes componentes en cada nodo:

Componente Qué hace Qué administra AKS
Controlador de GPU de NVIDIA Módulos de kernel y bibliotecas de espacio de usuario que permiten que el sistema operativo y los contenedores hablen con el hardware de GPU. Selección de la versión del controlador, instalación en el aprovisionamiento de nodos y reinstalación después de las actualizaciones de imágenes de nodo.
Complemento de dispositivo NVIDIA Kubernetes Equivalente a DaemonSet que anuncia recursos de GPU (nvidia.com/gpu, nvidia.com/mig-*) al kubelet para que los pods puedan solicitarlos. Implementación, configuración (incluida la estrategia de MIG) y ciclo de vida en cada nodo de GPU.
NVIDIA DCGM y el exportador de métricas de DCGM El Administrador de GPU del centro de datos recopila datos de uso y estado de GPU y expone las métricas de Prometheus (por ejemplo, DCGM_FI_DEV_GPU_UTIL, DCGM_FI_DEV_GPU_TEMP) en el puerto 19400. Instalación, habilitación del servicio y la etiqueta de nodo kubernetes.azure.com/dcgm-exporter=enabled utilizada para recopilar métricas.
Señales de estado de GPU NPD indica que existen condiciones de nodo específicas de GPU, como UnhealthyNvidiaDevicePlugin y UnhealthyNvidiaDCGMServices. Supervisión de NPD e informes del estado en nodos de GPU.

Instalar perfiles

Dos gpuProfile campos deciden cuál de esos componentes instala AKS:

  • gpuProfile.driver (Install o None): si AKS instala el controlador de GPU nvidia.
  • gpuProfile.nvidia.managementMode (Managed o Unmanaged): si AKS también instala la pila de GPU orientada a Kubernetes en la parte superior del controlador.

Juntos, generan tres perfiles de instalación:

Instalar perfil Marcas de la CLI Qué instala y administra AKS
Pila administrada completa --enable-managed-gpu=true (o ningún indicador) Los cuatro componentes anteriores: controlador, complemento de dispositivo, exportador de métricas DCGM y supervisión del estado de GPU en NPD.
Solo controlador (valor predeterminado) --enable-managed-gpu=false Solo controlador de GPU NVIDIA. Instale y administre el complemento de dispositivo, el exportador de métricas y la monitorización de salud usted mismo (por ejemplo, con el Operador de GPU NVIDIA).
Ninguno (BYO) --enable-managed-gpu=false --gpu-driver None Nada. AKS no instala ninguno de los cuatro componentes. Es dueño del stack completo. Consulte Traiga su propio controlador de GPU.

Valores predeterminados y reemplazos

  • Valores predeterminados: Si no se pasa --enable-managed-gpu o --gpu-driver, AKS aplica el perfil Solo controlador en el grupo de nodos creado con un tamaño de máquina virtual habilitada para GPU NVIDIA.
  • Anular: managementMode: Managed requiere el controlador, por lo que se ignora --gpu-driver None cuando --enable-managed-gpu=true y el controlador sigue instalado. Para omitir el controlador, configure tanto --enable-managed-gpu=false como --gpu-driver None.
  • Inmutabilidad: managementMode, migStrategyy driver se fijan en el momento de la creación. Para cambiar el perfil, cree un nuevo grupo de nodos.

Instalación de la extensión aks-preview de la CLI

  1. Instale la extensión aks-preview de la CLI mediante el comando az extension add. Se requiere la versión 19.0.0b29 o posterior.

    az extension add --name aks-preview
    
  2. Actualice la extensión para asegurarse de que tiene instalada la última versión mediante el comando az extension update.

    az extension update --name aks-preview
    

Registro de la marca de característica ManagedGPUExperiencePreview

Registre la marca de características ManagedGPUExperiencePreview en su suscripción con el comando az feature register.

az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview

Limitaciones

  • Esta característica solo admite tamaños de máquina virtual (VM) habilitados para GPU nvidia .
  • No se admite la actualización de un grupo de nodos de uso general para agregar un tamaño de máquina virtual de GPU en AKS.
  • Los grupos de nodos de Windows no son compatibles con esta función, ya que no se admiten las métricas para GPU. Al crear Windows grupos de nodos de GPU, AKS instala y administra automáticamente los controladores y el complemento de dispositivo DirectX. Para obtener más información, consulte la documentación de AKS Windows GPU.
  • No se admite la migración de los grupos de nodos de GPU de varias instancias existentes para usar esta característica.
  • No se admiten las actualizaciones in situ de un grupo de nodos de GPU de NVIDIA existente a un conjunto de nodos de GPU gestionado. Para migrar, acordonar y purgar los nodos de GPU existentes, vuelva a implementar las cargas de trabajo en un nuevo grupo de nodos de GPU creado con --enable-managed-gpu=true. Para más información, consulte Cambio de tamaño de grupos de nodos en AKS.
  • Los campos managementMode, migStrategy y driver dentro de gpuProfile son inmutables después de la creación del grupo de nodos. Para cambiar estos valores, cree un nuevo grupo de nodos.
  • El escalador automático de clústeres no se admite en grupos de nodos de GPU administrados durante la versión preliminar. Escale estos grupos manualmente.

Nota:

Las máquinas virtuales habilitadas para GPU contienen hardware especializado que está sujeto a precios más altos y disponibilidad limitada según la región. Para obtener más información, consulte la herramienta de precios y la disponibilidad de regiones.

Creación de un grupo de nodos de GPU administrados por AKS (versión preliminar)

Agregue un grupo de nodos de GPU administrado a un clúster de AKS existente pasando --enable-managed-gpu=true a az aks nodepool add. AKS establece gpuProfile.nvidia.managementMode y Managed e instala automáticamente el controlador de GPU, el complemento de dispositivo y el exportador de métricas DCGM.

Para usar la SKU predeterminada del sistema operativo Ubuntu (SO), cree el grupo de nodos sin especificar una SKU del sistema operativo. El grupo de nodos está configurado para el sistema operativo predeterminado en función de la versión de Kubernetes del clúster.

  1. Agregue un grupo de nodos a su clúster utilizando el comando az aks nodepool add con el indicador --enable-managed-gpu=true.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --node-vm-size Standard_NC6s_v3 \
        --node-taints sku=gpu:NoSchedule \
        --enable-managed-gpu=true
    
  2. Confirme que los componentes de software de GPU de NVIDIA administrados se instalan correctamente:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp
    

    La salida debe incluir los siguientes valores:

    ...
    "gpuProfile": {
        "driver": "Install",
        "driverType": "",
        "nvidia": {
            "managementMode": "Managed",
            "migStrategy": null
        }
    },
    ...
    

Creación de un grupo de nodos de GPU (MIG) administrado de instancias múltiples (versión preliminar)

En el caso de las SKU de GPU que admiten instancias múltiples de GPU (como A100 y H100), configure una estrategia MIG durante la creación del grupo de nodos con la bandera --gpu-mig-strategy. La estrategia controla cómo se exponen las particiones de MIG a Kubernetes:

  • Single: Todas las instancias MIG se agrupan bajo el recurso estándar nvidia.com/gpu.
  • Mixed: cada perfil de MIG se expone como un recurso independiente, como nvidia.com/mig-1g.10gb.
  • None (valor predeterminado): MIG no está configurado.

El migStrategy campo es inmutable después de crear el grupo de nodos.

Para obtener información sobre la creación de particiones de MIG, los tamaños de máquina virtual admitidos y los perfiles de instancia de GPU, consulte Creación de un grupo de nodos de GPU de varias instancias en AKS y GPU de varias instancias de NVIDIA.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mignp \
    --node-count 1 \
    --node-vm-size Standard_NC24ads_A100_v4 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=true \
    --gpu-instance-profile MIG1g \
    --gpu-mig-strategy Single

Con esta configuración, los pods solicitan recursos de GPU mediante el nombre de recurso estándar nvidia.com/gpu .

Comprobación del grupo de nodos de GPU administrado (versión preliminar)

Una vez que el grupo de nodos esté listo, ejecute las siguientes comprobaciones para confirmar que la pila administrada completa está instalada y en buen estado.

  1. Compruebe las condiciones de nodo específicas de GPU del Detector de problemas de nodo (NPD):

    GPU_NODE=$(kubectl get nodes -l agentpool=gpunp -o jsonpath='{.items[0].metadata.name}')
    kubectl describe node $GPU_NODE
    

    En un nodo de GPU administrado, las siguientes condiciones deben indicar False:

    Condición Situación Motivo
    UnhealthyNvidiaDevicePlugin False HealthyNvidiaDevicePlugin
    UnhealthyNvidiaDCGMServices False HealthyNvidiaDCGMServices
  2. Compruebe que la etiqueta de GPU administrada está presente en el nodo:

    kubectl get node $GPU_NODE -o jsonpath='{.metadata.labels.kubernetes\.azure\.com/dcgm-exporter}'
    

    Salida esperada: enabled.

  3. Compruebe que los recursos de GPU se anuncian en los recursos allocatables del nodo:

    kubectl get node $GPU_NODE -o jsonpath='{.status.allocatable}'
    

    Para un grupo de nodos que no son MIG, la salida incluye "nvidia.com/gpu": "1" (o más, dependiendo de la SKU). En el caso de un grupo de nodos MIG Mixed, la salida incluye recursos específicos de MIG, como "nvidia.com/mig-1g.10gb": "7".

  4. Ejecute una carga de trabajo de ejemplo para confirmar el acceso a GPU desde un contenedor:

    apiVersion: v1
    kind: Pod
    metadata:
      name: managed-gpu-test
    spec:
      restartPolicy: Never
      tolerations:
        - key: "sku"
          operator: "Equal"
          value: "gpu"
          effect: "NoSchedule"
      containers:
      - name: gpu-test
        image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
        command: ["nvidia-smi"]
        resources:
          limits:
            nvidia.com/gpu: 1
    

    Vea los registros del pod para ver la salida nvidia-smi que muestra el dispositivo GPU, la versión del controlador y la versión de CUDA:

    kubectl logs managed-gpu-test
    

Escalado de un grupo de nodos de GPU administrado (versión preliminar)

Escale manualmente un grupo de nodos de GPU administrado con az aks nodepool scale. Los nuevos nodos instalan el conjunto completo de GPU gestionado.

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 2

Importante

Durante la versión preliminar, los grupos de nodos de GPU administrados no admiten el escalador automático del clúster. Escale estos grupos manualmente.

Perfiles de instalación alternativos

Si el perfil de pila administrada completa no es el adecuado, AKS admite dos perfiles alternativos en grupos de nodos de GPU.

Use este perfil cuando quiera que AKS instale y mantenga el controlador de GPU de NVIDIA, pero tiene previsto implementar el complemento de dispositivo y el exportador de métricas usted mismo (por ejemplo, con el operador de GPU de NVIDIA). Establecer --enable-managed-gpu=false:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 1 \
    --node-vm-size Standard_NC6s_v3 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=false

Con esta configuración:

  • AKS instala y administra el controlador de GPU de NVIDIA (gpuProfile.driver es Install).
  • AKS no instala un complemento de dispositivo, un exportador de métricas DCGM ni reglas de mantenimiento de GPU. gpuProfile.nvidia es null.
  • No se anuncia ningún nvidia.com/gpu recurso hasta que implemente un complemento de dispositivo.

Pasos siguientes