Créer un pool de nœuds GPU entièrement managé sur Azure Kubernetes Service (AKS) (préversion)

L’exécution de charges de travail GPU NVIDIA sur Azure Kubernetes Service (AKS) vous oblige traditionnellement à installer et à gérer le pilote GPU NVIDIA, le plug-in d’appareil Kubernetes et un exportateur de métriques GPU sur chaque nœud GPU. Ces composants permettent la planification GPU, l’accès GPU au niveau du conteneur et la télémétrie, mais l’installation manuelle ou via l’opérateur GPU NVIDIA ajoute une surcharge opérationnelle.

Avec des nœuds GPU complètement managés (préversion), AKS installe et gère le pilote GPU NVIDIA, le plug-in d’appareil et l’exportateur de métriques DCGM ( Data Center GPU Manager) pour vous. La création d’un pool de nœuds GPU devient une étape unique et la capacité GPU se comporte comme n’importe quel autre pool de nœuds AKS.

Vous configurez un pool de nœuds GPU managé via deux champs sous gpuProfile.nvidia:

  • managementMode (Managed ou Unmanaged) contrôle si AKS installe la pile GPU managée complète (pilote, plug-in d’appareil et exportateur de métriques DCGM) ou le pilote uniquement. La valeur par défaut est Unmanaged.
  • migStrategy(None, Single, ou Mixed) définit la stratégie GPU multi-instance (MIG) pour les GPU compatibles tels que A100 et H100. La valeur par défaut est None.

Dans cet article, vous approvisionnez un pool de nœuds GPU managé, activez éventuellement MIG, vérifiez la pile et exécutez un exemple de charge de travail GPU.

Important

Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les versions d'essai sont fournies « en l’état » et « selon disponibilité », et elles sont exclues des contrats de niveau de service et de la garantie limitée. Les versions préliminaires AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Par conséquent, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :

Avant de commencer

Composants GPU managés

Un pool de nœuds GPU managé peut inclure les composants suivants sur chaque nœud :

Composant Qu’est-ce que cela fait ? Qu’est-ce qu’AKS gère ?
Pilote GPU NVIDIA Modules de noyau et bibliothèques d’espace utilisateur qui permettent au système d’exploitation et aux conteneurs de communiquer avec le matériel GPU. Sélection de la version du pilote, installation lors du provisionnement des nœuds et réinstallation après les mises à niveau de l'image du nœud.
Plug-in d’appareil NVIDIA Kubernetes DaemonSet équivalent qui publie des ressources GPU (nvidia.com/gpu, nvidia.com/mig-*) sur le kubelet afin que les pods puissent les demander. Déploiement, configuration (y compris la stratégie MIG) et cycle de vie sur chaque nœud GPU.
Exportateur de métriques NVIDIA DCGM et DCGM Data Center GPU Manager collecte les données d’intégrité et d’utilisation du GPU et expose les métriques Prometheus (par exemple, DCGM_FI_DEV_GPU_UTIL, DCGM_FI_DEV_GPU_TEMP) sur le port 19400. Installation, activation du service et étiquette de kubernetes.azure.com/dcgm-exporter=enabled nœud utilisée pour collecter des métriques.
Signaux d’intégrité GPU NPD signale des conditions de nœud spécifiques au GPU, telles que UnhealthyNvidiaDevicePlugin et UnhealthyNvidiaDCGMServices. Surveillance NPD et rapports d'état sur les nœuds GPU.

Installer des profils

Deux gpuProfile champs déterminent quels composants AKS installe :

  • gpuProfile.driver (Install ou None) : si AKS installe le pilote GPU NVIDIA.
  • gpuProfile.nvidia.managementMode (Managed ou Unmanaged) : si AKS installe la pile GPU orientée vers Kubernetes en plus du pilote.

Ensemble, ils produisent trois profils d’installation :

Installer le profil Indicateurs CLI Ce qu'AKS installe et gère
Pile managée complète --enable-managed-gpu=true (ou aucun indicateur) Les quatre composants ci-dessus : pilote, plug-in de périphérique, surveillance de l’intégrité GPU dans NPD et exportateur de métriques DCGM.
Pilote uniquement (par défaut) --enable-managed-gpu=false Pilote GPU NVIDIA uniquement. Vous installez et gérez le plugin de périphérique, l’exportateur de métriques et la surveillance de l'état de santé vous-même (par exemple, avec l’opérateur GPU NVIDIA).
None (BYO) --enable-managed-gpu=false --gpu-driver None Rien. AKS n’installe aucun des quatre composants. Vous êtes propriétaire de la pile complète. Consultez Apportez votre propre pilote GPU.

Valeurs par défaut et remplacements

  • Valeurs par défaut : si vous ne passez pas --enable-managed-gpu ou --gpu-driver, AKS applique le profil Pilote uniquement sur le pool de nœuds créé avec une taille de machine virtuelle NVIDIA équipée d'un GPU.
  • Remplacement : managementMode: Managed requiert le pilote, donc --gpu-driver None est ignoré lorsque --enable-managed-gpu=true et que le pilote est toujours installé. Pour ignorer le pilote, définissez à la fois --enable-managed-gpu=false et --gpu-driver None.
  • Immuabilité : managementMode, migStrategyet driver sont tous fixes au moment de la création. Pour changer de profil, créez un nouvel ensemble de nœuds.

Installez l’extension CLI aks-preview

  1. Installez l’extension CLI aks-preview à l’aide de la commande az extension add. La version 19.0.0b29 ou ultérieure est requise.

    az extension add --name aks-preview
    
  2. Mettez à jour l’extension pour vous assurer que la dernière version est installée à l’aide de la commande az extension update.

    az extension update --name aks-preview
    

Inscrire l’indicateur de fonctionnalité ManagedGPUExperiencePreview

Inscrivez l’indicateur de fonctionnalité ManagedGPUExperiencePreview dans votre abonnement à l’aide de la commande az feature register.

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

Limites

  • Cette fonctionnalité prend actuellement en charge uniquement les tailles de machines virtuelles compatibles GPU NVIDIA .
  • La mise à jour d’un pool de nœuds à usage général pour ajouter une taille de machine virtuelle GPU n’est pas prise en charge sur AKS.
  • Les pools de nœuds Windows ne sont pas pris en charge avec cette fonctionnalité, car les métriques GPU ne sont pas supportées. Lorsque vous créez Windows pools de nœuds GPU, AKS installe et gère automatiquement les pilotes et le plug-in d’appareil DirectX. Pour plus d’informations, consultez la documentation AKS Windows GPU.
  • La migration de vos pools de nœuds GPU multi-instances existants pour utiliser cette fonctionnalité n’est pas prise en charge.
  • Les mises à niveau sur place d’un pool de nœuds GPU NVIDIA existant vers un pool de nœuds GPU managé ne sont pas prises en charge. Pour migrer, mettre en cordon et vider vos nœuds GPU existants, puis redéployer vos charges de travail vers un nouveau pool de nœuds GPU créé avec --enable-managed-gpu=true. Pour plus d’informations, consultez Redimensionner les pools de nœuds sur AKS.
  • Les managementMode, migStrategy et driver champs sous gpuProfile sont immuables après la création du pool de nœuds. Pour modifier ces valeurs, créez un pool de nœuds.
  • L’autoscaler de cluster n’est pas pris en charge sur les pools de nœuds GPU managés pendant la préversion. Mettez à l’échelle ces groupes de ressources manuellement.

Note

Les machines virtuelles avec GPU contiennent du matériel spécialisé, plus cher et dépendant de la disponibilité régionale. Pour plus d’informations, voir l’outil de tarification et la disponibilité régionale.

Créer un pool de nœuds GPU géré par AKS (préversion)

Ajoutez un pool de nœuds GPU managé à un cluster AKS existant en passant --enable-managed-gpu=true à az aks nodepool add. AKS configure gpuProfile.nvidia.managementMode sur Managed et installe automatiquement le pilote GPU, le plugin de périphérique et l'exportateur DCGM de métriques.

Pour utiliser la référence SKU du système d’exploitation Ubuntu par défaut, vous créez le pool de nœuds sans spécifier de référence SKU de système d’exploitation. Le pool de nœuds est configuré pour le système d’exploitation par défaut en fonction de la version Kubernetes du cluster.

  1. Ajoutez un pool de nœuds à votre cluster à l’aide de la az aks nodepool add commande avec l’indicateur --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. Vérifiez que les composants logiciels GPU NVIDIA gérés sont installés correctement :

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

    Votre sortie doit inclure les valeurs suivantes :

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

Créer un pool de nœuds GPU multi-instance managé (MIG) (préversion)

Pour les références SKU GPU qui prennent en charge le GPU multi-instance (par exemple, A100 et H100), configurez une stratégie MIG lors de la création du pool de nœuds avec l’indicateur --gpu-mig-strategy . La stratégie contrôle la façon dont les partitions MIG sont exposées à Kubernetes :

  • Single: toutes les instances MIG sont agrégées sous la ressource standard nvidia.com/gpu .
  • Mixed: chaque profil MIG est exposé en tant que ressource distincte, telle que nvidia.com/mig-1g.10gb.
  • None (valeur par défaut) : MIG n’est pas configuré.

Le migStrategy champ est immuable une fois le pool de nœuds créé.

Pour plus d’informations sur le partitionnement MIG, les tailles de machine virtuelle prises en charge et les profils d’instance GPU, consultez Créer un pool de nœuds GPU multi-instances dans AKS et NVIDIA Multi-Instance GPU.

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

Avec cette configuration, les pods demandent des ressources GPU à l’aide du nom de ressource standard nvidia.com/gpu .

Vérifiez le pool de nœuds GPU géré (préversion)

Une fois le pool de nœuds prêt, exécutez les vérifications suivantes pour vérifier que la pile managée complète est installée et saine.

  1. Vérifiez les conditions de nœud spécifiques au GPU à partir du Détecteur de problèmes de nœud (NPD) :

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

    Sur un nœud GPU managé, les conditions suivantes doivent tous deux signaler False:

    Pathologie État Reason
    UnhealthyNvidiaDevicePlugin False HealthyNvidiaDevicePlugin
    UnhealthyNvidiaDCGMServices False HealthyNvidiaDCGMServices
  2. Vérifiez que l’étiquette GPU managée est présente sur le nœud :

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

    Sortie attendue : enabled.

  3. Vérifiez que les ressources GPU sont publiées dans les ressources allocatables du nœud :

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

    Pour un pool de nœuds non-MIG, la sortie inclut "nvidia.com/gpu": "1" (ou plus, selon la référence SKU). Pour un pool de nœuds MIG Mixed, la sortie inclut des ressources spécifiques du MIG telles que "nvidia.com/mig-1g.10gb": "7".

  4. Exécutez un exemple de charge de travail pour confirmer l’accès GPU à partir d’un conteneur :

    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
    

    Consultez les journaux des pods pour voir nvidia-smi la sortie montrant le périphérique GPU, la version du pilote et la version CUDA.

    kubectl logs managed-gpu-test
    

Mettre à l’échelle un pool de nœuds GPU géré (aperçu)

Mettre à l’échelle manuellement un pool de nœuds GPU managé avec az aks nodepool scale. Les nouveaux nœuds installent la pile GPU managée complète.

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

Important

Pendant la préversion, les pools de nœuds GPU managés ne prennent pas en charge la mise à l’échelle automatique du cluster. Redimensionnez ces groupes manuellement.

Autres profils d’installation

Si le profil de pile managée complète n’est pas adapté, AKS prend en charge deux profils alternatifs sur les pools de nœuds GPU.

Utilisez ce profil lorsque vous souhaitez qu’AKS installe et conserve le pilote GPU NVIDIA, mais que vous envisagez de déployer vous-même le plug-in d’appareil et l’exportateur de métriques (par exemple, avec l’opérateur GPU NVIDIA). Définir --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

Avec cette configuration :

  • AKS installe et gère le pilote GPU NVIDIA (gpuProfile.driver est Install).
  • AKS n’installe pas de plug-in d’appareil, d’exportateur de métriques DCGM ou de règles d’intégrité GPU. gpuProfile.nvidia a la valeur null.
  • Aucune ressource n’est nvidia.com/gpu annoncée tant que vous n’avez pas déployé un plug-in d’appareil.

Étapes suivantes