Utiliser des GPU pour les charges de travail nécessitant beaucoup de calcul (AKS sur Azure Stack HCI 23H2)
S’applique à : Azure Stack HCI, version 23H2
Notes
Pour plus d’informations sur les GPU dans AKS sur Azure Stack HCI 22H2, consultez Utiliser des GPU (HCI 22H2).
Les unités de traitement graphique (GPU) sont utilisées pour les charges de travail gourmandes en calcul, telles que le Machine Learning, le Deep Learning, etc. Cet article explique comment utiliser des GPU pour les charges de travail nécessitant beaucoup de calcul dans AKS activé par Azure Arc.
Modèles GPU pris en charge
Les modèles GPU suivants sont pris en charge par AKS sur Azure Stack HCI 23H2 :
Fabricant | Modèle GPU | Version prise en charge |
---|---|---|
Nvidia | A2 | 2311.2 |
Nvidia | A16 | 2402.0 |
Tailles des machines virtuelles prises en charge
Les tailles de machine virtuelle suivantes pour chaque modèle GPU sont prises en charge par AKS sur Azure Stack HCI 23H2.
Le Nvidia A2 est pris en charge par les références SKU NC2 A2
Taille de la machine virtuelle | GPU | Mémoire GPU : Gio | Processeurs virtuels | Mémoire : Gio |
---|---|---|---|---|
Standard_NC4_A2 | 1 | 16 | 4 | 8 |
Standard_NC8_A2 | 1 | 16 | 8 | 16 |
Standard_NC16_A2 | 2 | 48 | 16 | 64 |
Standard_NC32_A2 | 2 | 48 | 32 | 28 |
Le Nvidia A16 est pris en charge par les références SKU NC2 A16
Taille de la machine virtuelle | GPU | Mémoire GPU : Gio | Processeurs virtuels | Mémoire : Gio |
---|---|---|---|---|
Standard_NC4_A16 | 1 | 16 | 4 | 8 |
Standard_NC8_A16 | 1 | 16 | 8 | 16 |
Standard_NC16_A16 | 2 | 48 | 16 | 64 |
Standard_NC32_A16 | 2 | 48 | 32 | 28 |
Avant de commencer
Pour utiliser des GPU dans AKS Arc, assurez-vous d’avoir installé les pilotes GPU nécessaires avant de commencer le déploiement du cluster. Suivez les étapes de cette section.
Étape 1 : installer le système d’exploitation
Installez le système d’exploitation Azure Stack HCI version 23H2 localement sur chaque serveur de votre cluster Azure Stack HCI.
Étape 2 : télécharger et installer le pilote d’atténuation NVIDIA
Le logiciel peut inclure des composants développés et détenus par NVIDIA Corporation ou ses licences. L’utilisation de ces composants est régie par le contrat de licence de l’utilisateur final NVIDIA.
Consultez la documentation du centre de données NVIDIA pour télécharger le pilote d’atténuation NVIDIA. Après avoir téléchargé le pilote, développez l’archive et installez le pilote d’atténuation sur chaque ordinateur hôte.
Invoke-WebRequest -Uri "https://docs.nvidia.com/datacenter/tesla/gpu-passthrough/nvidia_azure_stack_inf_v2022.10.13_public.zip" -OutFile "nvidia_azure_stack_inf_v2022.10.13_public.zip"
mkdir nvidia-mitigation-driver
Expand-Archive .\nvidia_azure_stack_inf_v2022.10.13_public.zip .\nvidia-mitigation-driver\
Pour installer le pilote d’atténuation, accédez au dossier qui contient les fichiers extraits, puis sélectionnez le fichier de pilote GPU en fonction du type de GPU réel installé sur vos hôtes Azure Stack HCI. Par exemple, si le type est A2 GPU, cliquez avec le bouton droit sur le fichier nvidia_azure_stack_A2_base.inf , puis sélectionnez Installer.
Vous pouvez également installer à l’aide de la ligne de commande en accédant au dossier et en exécutant les commandes suivantes pour installer le pilote d’atténuation :
pnputil /add-driver nvidia_azure_stack_A2_base.inf /install
pnputil /scan-devices
Après avoir installé le pilote d’atténuation, les GPU sont répertoriés dans l’état OK sous Nvidia A2_base - Démonté :
Get-PnpDevice | select status, class, friendlyname, instanceid | findstr /i /c:"nvidia"
OK Nvidia A2_base - Dismounted PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000
OK Nvidia A2_base - Dismounted PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&3569C1D3&0&0000
Étape 3 : répéter les étapes 1 et 2
Répétez les étapes 1 et 2 pour chaque serveur de votre cluster HCI.
Étape 4 : poursuivre le déploiement du cluster Azure Stack HCI
Poursuivez le déploiement du cluster Azure Stack HCI en suivant les étapes décrites dans Déploiement d’Azure Stack HCI, version 23H2.
Obtenir la liste des références SKU de machine virtuelle avec GPU disponibles
Une fois le déploiement du cluster Azure Stack HCI terminé, vous pouvez exécuter la commande CLI suivante pour afficher les références SKU de machine virtuelle disponibles sur votre déploiement. Si vos pilotes GPU sont installés correctement, les références SKU de machine virtuelle GPU correspondantes sont répertoriées :
az aksarc vmsize list --custom-location <custom location ID> -g <resource group name>
Créer un cluster de charge de travail avec un pool de nœuds avec GPU
Actuellement, vous ne pouvez utiliser de pools de nœuds compatibles GPU que sous Linux. Pour créer un cluster Kubernetes :
az aksarc create -n <aks cluster name> -g <resource group name> --custom-location <custom location ID> --vnet-ids <vnet ID>
L’exemple suivant ajoute un pool de nœuds avec 2 nœuds avec GPU (NVDIA A2) avec une référence SKU de machine virtuelle Standard_NC4_A2 :
az aksarc nodepool add --cluster-name <aks cluster name> -n <node pool name> -g <resource group name> --node-count 2 --node-vm-size Standard_NC4_A2 --os-type Linux
Vérifiez que vous pouvez planifier des GPU
Une fois votre pool de nœuds GPU créé, vérifiez que vous pouvez planifier des GPU dans Kubernetes. Tout d’abord, listez les nœuds de votre cluster avec la commande kubectl get nodes :
kubectl get nodes
NAME STATUS ROLES AGE VERSION
moc-l9qz36vtxzj Ready control-plane,master 6m14s v1.22.6
moc-lhbkqoncefu Ready <none> 3m19s v1.22.6
moc-li87udi8l9s Ready <none> 3m5s v1.22.6
À présent, utilisez la commande kubectl describe node pour confirmer que les GPU peuvent être planifiés. Dans la section Capacité , le GPU doit apparaître comme nvidia.com/gpu : 1.
kubectl describe <node> | findstr "gpu"
La sortie doit afficher le ou les GPU du nœud Worker et ressembler à ceci :
Capacity:
cpu: 4
ephemeral-storage: 103110508Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7865020Ki
nvidia.com/gpu: 1
pods: 110
Exécuter une charge de travail compatible GPU
Une fois que vous avez effectué les étapes précédentes, créez un fichier YAML à des fins de test ; par exemple, gpupod.yaml. Copiez et collez le fichier YAML suivant dans le nouveau fichier nommé gpupod.yaml, puis enregistrez-le :
apiVersion: v1
kind: Pod
metadata:
name: cuda-vector-add
spec:
restartPolicy: OnFailure
containers:
- name: cuda-vector-add
image: "k8s.gcr.io/cuda-vector-add:v0.1"
resources:
limits:
nvidia.com/gpu: 1
Exécutez la commande suivante pour déployer l’exemple d’application :
kubectl apply -f gpupod.yaml
Vérifiez que le pod a démarré, s’est terminé en cours d’exécution et que le GPU est affecté :
kubectl describe pod cuda-vector-add | findstr 'gpu'
La commande précédente doit afficher un GPU affecté :
nvidia.com/gpu: 1
nvidia.com/gpu: 1
Vérifiez le fichier journal du pod pour voir si le test a réussi :
kubectl logs cuda-vector-add
Voici un exemple de sortie de la commande précédente :
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done
Si vous recevez une erreur d’incompatibilité de version lors de l’appel de pilotes, par exemple « La version du pilote CUDA est insuffisante pour la version du runtime CUDA », consultez le graphique de compatibilité de la matrice de pilotes NVIDIA.
Forum aux questions
Que se passe-t-il lors de la mise à niveau d’un pool de nœuds avec GPU ?
La mise à niveau des pools de nœuds avec GPU suit le même modèle de mise à niveau propagée que celui utilisé pour les pools de nœuds standard. Pour que les pools de nœuds avec GPU dans une nouvelle machine virtuelle soient correctement créés sur l’ordinateur hôte physique, un ou plusieurs GPU physiques doivent être disponibles pour que l’affectation d’appareil réussisse. Cette disponibilité garantit que vos applications peuvent continuer à s’exécuter lorsque Kubernetes planifie des pods sur ce nœud mis à niveau.
Avant la mise à niveau :
- Planifiez les temps d’arrêt pendant la mise à niveau.
- Disposez d’un GPU supplémentaire par hôte physique si vous exécutez le Standard_NK6 ou de 2 GPU supplémentaires si vous exécutez Standard_NK12. Si vous exécutez à pleine capacité et que vous n’avez pas de GPU supplémentaire, nous vous recommandons de réduire votre pool de nœuds à un seul nœud avant la mise à niveau, puis d’effectuer un scale-up après la mise à niveau.
Que se passe-t-il si je n’ai pas de GPU physiques supplémentaires sur mon ordinateur physique pendant une mise à niveau ?
Si une mise à niveau est déclenchée sur un cluster sans ressources GPU supplémentaires pour faciliter la mise à niveau propagée, le processus de mise à niveau se bloque jusqu’à ce qu’un GPU soit disponible. Si vous exécutez à pleine capacité et que vous n’avez pas de GPU supplémentaire, nous vous recommandons de réduire votre pool de nœuds à un seul nœud avant la mise à niveau, puis d’effectuer un scale-up une fois la mise à niveau réussie.
Étapes suivantes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour