Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les tailles de machine virtuelle GPU AMD sur Azure peuvent offrir une flexibilité en matière de performances et de coûts, offrant une capacité de calcul élevée tout en vous permettant de choisir la configuration appropriée pour vos besoins en charge de travail. AKS prend en charge les pools de nœuds Linux avec GPU AMD pour exécuter des charges de travail Kubernetes nécessitant beaucoup de ressources de calcul.
Cet article vous aide à approvisionner des nœuds avec des GPU AMD schedulables sur des clusters AKS nouveaux et existants.
Limites
- AKS prend actuellement en charge la
Standard_ND96isr_MI300X_v5taille de machine virtuelle Azure alimentée par le GPU AMD de la série MI300. - La mise à jour d’un pool de nœuds existant pour ajouter une taille de machine virtuelle GPU AMD n’est pas prise en charge sur AKS.
- La mise à jour d’un pool de nœuds avec GPU non-AMD avec une taille de machine virtuelle GPU AMD n’est pas prise en charge.
-
AzureLinux,WindowsAzureLinuxOSGuardetflatcarne sont pas pris en charge avec AMD GPU.
Avant de commencer
- Cet article suppose que vous disposez d’un cluster AKS. Si vous n'avez pas de cluster, créez-en un à l'aide d'Azure CLI, d'Azure PowerShell ou du portail Azure.
- Vous avez besoin d’Azure CLI version 2.72.2 ou ultérieure installée pour définir le
--gpu-driverchamp. Exécutezaz --versionpour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI. - Si l’extension
aks-previewAzure CLI est installée, mettez à jour la version vers la version 18.0.0b2 ou ultérieure.
Remarque
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.
Obtenir les informations d’identification de votre cluster
Obtenez les informations d’identification de votre cluster AKS à l’aide de la commande az aks get-credentials. L’exemple de commande suivant obtient les informations d’identification du cluster myAKSCluster dans le myResourceGroup groupe de ressources :
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Options d’utilisation de GPU AMD
L’utilisation de GPU AMD implique l’installation de différents composants logiciels GPU AMD, tels que le plug-in d’appareil AMD pour Kubernetes, les pilotes GPU, etc.
Remarque
Actuellement, AKS ne gère pas ni automatise l’installation des pilotes GPU ou le plug-in d’appareil GPU AMD sur les pools de nœuds avec GPU AMD.
Inscrire la fonctionnalité AKSInfinibandSupport
Si votre taille de machine virtuelle GPU AMD est compatible RDMA avec la convention d’affectation de noms
r(par exempleStandard_ND96isr_MI300X_v5), vous devez vous assurer que les machines du pool de nœuds atterrissent sur le même réseau Infiniband physique. Pour cela, inscrivez l’indicateur de fonctionnalitéAKSInfinibandSupporten utilisant la commandeaz feature register:az feature register --name AKSInfinibandSupport --namespace Microsoft.ContainerServiceVérifiez l’état de l’inscription en utilisant la commande
az feature show:az feature show \ --namespace "Microsoft.ContainerService" \ --name AKSInfinibandSupportCréez un pool de nœuds avec GPU AMD à l’aide de la
az aks nodepool addcommande et ignorez l’installation du pilote par défaut en définissant le champ--gpu-driverAPI sur la valeurnone:az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --node-vm-size Standard_ND96isr_MI300X_v5 \ --gpu-driver noneRemarque
AKS impose actuellement l'utilisation du champ
gpu-driverpour ignorer l'installation automatique des pilotes lors de la création du pool de nœuds GPU AMD.
Déployer l’opérateur GPU AMD sur AKS
L’opérateur GPU AMD automatise la gestion et le déploiement de tous les composants logiciels AMD nécessaires à l’approvisionnement du GPU, notamment l’installation du pilote, le plug-in d’appareil AMD pour Kubernetes, le runtime de conteneur AMD, etc. Étant donné que l’opérateur GPU AMD gère ces composants, il n’est pas nécessaire d’installer séparément le plug-in d’appareil AMD sur votre cluster AKS. Cela signifie également que l’installation automatique du pilote GPU doit être ignorée pour utiliser l’opérateur GPU AMD sur AKS.
Suivez la documentation AMD pour installer l’opérateur GPU.
Vérifiez l’état des GPU AMD dans votre pool de nœuds à l’aide de la
kubectl get nodescommande :kubectl get nodes -o custom-columns=NAME:.metadata.name,GPUs:.status.capacity.'amd\.com/gpu'Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :
NAME STATUS ROLES AGE VERSION aks-gpunp-00000000 Ready agent 2m4s v1.31.7
Vérifiez que les GPU AMD sont schedulables
Après avoir créé votre pool de nœuds, vérifiez que les GPU sont schedulables dans votre cluster AKS.
Répertoriez les nœuds de votre cluster à l’aide de la commande
kubectl get nodes.kubectl get nodesVérifiez que les GPU peuvent être planifiés à l’aide de la commande
kubectl describe node.kubectl describe node aks-gpunp-00000000Sous la section Capacité, le GPU doit apparaître ainsi :
amd.com/gpu: 1. Le résultat doit être similaire à l’exemple condensé de sortie suivant :Name: aks-gpunp-00000000 Roles: agent Labels: accelerator=amd [...] Capacity: [...] amd.com/gpu: 1 [...]
Exécuter une charge de travail activée par GPU AMD
Pour voir le GPU AMD en action, vous pouvez planifier une charge de travail compatible GPU avec la demande de ressource appropriée. Dans cet exemple, nous exécutons une tâche Tensorflow sur le jeu de données MNIST.
Créez un fichier nommé samples-tf-mnist-demo.yaml et collez le manifeste YAML suivant, qui inclut une limite de ressources de
amd.com/gpu: 1:apiVersion: batch/v1 kind: Job metadata: labels: app: samples-tf-mnist-demo name: samples-tf-mnist-demo spec: template: metadata: labels: app: samples-tf-mnist-demo spec: containers: - name: samples-tf-mnist-demo image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu args: ["--max_steps", "500"] imagePullPolicy: IfNotPresent resources: limits: amd.com/gpu: 1 restartPolicy: OnFailure tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule"Exécutez le travail à l’aide de la commande
kubectl apply, qui analyse le fichier manifeste et crée les objets Kubernetes définis.kubectl apply -f samples-tf-mnist-demo.yaml
Afficher l’état de la charge de travail compatible GPU
Supervisez la progression du travail à l’aide de la commande
kubectl get jobsavec l’indicateur--watch. L’extraction de l’image et le traitement du jeu de données peuvent prendre quelques minutes.kubectl get jobs samples-tf-mnist-demo --watchLorsque la colonne COMPLETIONS affiche 1/1, le travail s’est terminé avec succès, comme indiqué dans l’exemple de sortie suivant :
NAME COMPLETIONS DURATION AGE samples-tf-mnist-demo 0/1 3m29s 3m29s samples-tf-mnist-demo 1/1 3m10s 3m36sQuittez le processus
kubectl --watchavec Ctrl-C.Obtenez le nom du pod en utilisant la commande
kubectl get pods.kubectl get pods --selector app=samples-tf-mnist-demo
Nettoyer les ressources
Supprimez les objets Kubernetes associés que vous avez créés dans cet article à l’aide de la commande kubectl delete job.
kubectl delete jobs samples-tf-mnist-demo
Étapes suivantes
- Explorez les différentes options de stockage pour votre application basée sur GPU sur AKS.
- En savoir plus sur les clusters Ray sur AKS.
- Utilisez des GPU NVIDIA pour vos charges de travail AKS nécessitant beaucoup de ressources de calcul.