Alibaba Cloud Container Compute Service (ACS) fournit une puissance de calcul serverless pour les conteneurs. Lorsque vous utilisez des ressources GPU, ACS vous permet de déclarer les modèles de GPU et les versions de pilotes prises en charge dans les pods. Cette fonctionnalité réduit considérablement la gestion de l'infrastructure ainsi que les coûts d'exploitation et de maintenance. Cette rubrique explique comment spécifier un modèle de GPU et une version de pilote lors de la création d'un pod.
Modèles de GPU
ACS prend en charge plusieurs modèles de GPU. Vous pouvez les utiliser avec des réservations de capacité ou les demander à la demande lors de la création d'un pod. La méthode utilisée dépend de la classe de calcul.
-
GPU haute performance pour le réseau
Vous ne pouvez demander que des réservations de nœuds. Après l'achat des réservations, associez chaque réservation à votre cluster. Chaque réservation s'exécute en tant que nœud virtuel indépendant au sein du cluster. Pour plus d'informations, consultez la section Réservation de capacité GPU-HPN.
-
Instances GPU
Vous pouvez utiliser les ressources GPU à la demande ou configurer des réservations de capacité. Après la création d'un pod, ACS déduit automatiquement les ressources GPU de votre réservation de capacité.
Pour afficher la liste des modèles de GPU pris en charge, soumettez un ticket.
Spécifier un modèle de GPU pour un pod
Pour GPU-HPN, vous ne pouvez demander que des réservations de nœuds. Chaque réservation s'exécute en tant que nœud virtuel dans le cluster. Le libellé du nœud virtuel inclut le modèle de GPU. Utilisez la planification par affinité de nœud pour planifier les pods sur ce nœud virtuel. Pour plus d'informations, consultez la section Planifier des pods sur des nœuds virtuels GPU-HPN avec des libellés d'attribut.
Pour les pods accélérés par GPU, spécifiez explicitement le modèle de GPU dans les champs labels et nodeSelector du pod.
Classe de calcul | Champ de protocole | Exemple |
Types d'instances GPU à réseau haute performance | spec.nodeSelector | |
Type d'instance GPU | metadata.labels[ alibabacloud.com/gpu-model-series] | |
Versions de pilote
Les applications GPU dépendent généralement de l'architecture CUDA (Compute Unified Device Architecture), une plateforme de calcul parallèle et un modèle de programmation publiés par NVIDIA en 2007. La figure suivante illustre l'architecture CUDA. L'API Driver et l'API Runtime de la pile logicielle CUDA diffèrent sur les points suivants.
API Driver : offre des fonctionnalités complètes, mais son utilisation est complexe.
API Runtime : encapsule une partie de l'API Driver et masque certaines étapes d'initialisation du pilote. Elle est plus simple à utiliser.
L'API CUDA Driver est incluse dans le package du pilote NVIDIA. La bibliothèque CUDA et l'environnement d'exécution CUDA sont inclus dans le package CUDA Toolkit.

Lorsque vous exécutez des applications GPU dans un cluster ACS, tenez compte des éléments suivants :
Utilisez les images de base CUDA fournies par NVIDIA pour installer le CUDA Toolkit dans l'image de votre conteneur. Ces images de base incluent déjà le CUDA Toolkit. Vous pouvez ensuite créer directement l'image de votre application sur la base d'une image correspondant à la version spécifique du CUDA Toolkit requise par votre application.
Pour spécifier une version de pilote lors de la création d'un pod, consultez la section Spécifier une version de pilote pour un pod.
Pour obtenir des informations sur la compatibilité entre le CUDA Toolkit et les pilotes NVIDIA, consultez le document officiel de NVIDIA intitulé Notes de version du CUDA Toolkit.
La version de l'API runtime CUDA utilisée par votre application doit correspondre à la version de l'image de base CUDA utilisée pour générer l'image de son conteneur. Par exemple, si l'image de votre conteneur est générée à partir de l'image de base CUDA NVIDIA/CUDA:12.2.0-base-Ubuntu20.04, votre application utilise la version 12.2.0 de l'API runtime CUDA.
Spécifier une version de pilote pour un pod
ACS vous permet de spécifier une version de pilote à l'aide de libellés de pod lorsque votre application utilise des ressources GPU. Utilisez le format indiqué dans le tableau suivant.
Classe de calcul | Champ de protocole | Exemple |
Instances GPU | metadata.labels[alibabacloud.com/gpu-driver-version] | |
Instance GPU avec réseau haute performance | |
Versions de pilote GPU
Assurez-vous que la version de pilote spécifiée est prise en charge par ACS. Pour plus d'informations, consultez la section Versions de pilote GPU prises en charge.
Version de pilote GPU par défaut pour les pods
ACS vous permet de configurer des attributs de pod spécifiques à l'aide de règles. Si la version de pilote par défaut ne répond pas à vos besoins, ajoutez la configuration suivante à la ConfigMap kube-system/acs-profile pour attribuer différentes versions de pilote GPU à des types spécifiques de pods GPU. Pour plus d'informations, consultez la section Configurer les sélecteurs.
La configuration suivante définit la version du pilote sur 1.5.0 pour tous les pods GPU-HPN du cluster.
apiVersion: v1
kind: ConfigMap
metadata:
name: acs-profile
namespace: kube-system
data:
# Keep other system configurations unchanged.
selectors: |
[
{
"name": "gpu-hpn-driver",
"objectSelector": {
"matchLabels": {
"alibabacloud.com/compute-class": "gpu-hpn"
}
},
"effect": {
"labels": {
"alibabacloud.com/gpu-driver-version": "1.5.0"
}
}
}
]
Exemple
-
Créez un fichier nommé
gpu-pod-with-model-and-driver.yamlet ajoutez le contenu YAML suivant au fichier. Ce fichier définit un pod ayant la classe de calculgpu. Le pod demande un GPU avec le modèleexample-modelet la version de pilote535.161.08.apiVersion: v1 kind: Pod metadata: name: gpu-pod-with-model-and-driver labels: # Set the compute class to gpu. alibabacloud.com/compute-class: "gpu" # Set the GPU model to example-model, such as T4. alibabacloud.com/gpu-model-series: "example-model" # Set the driver version to 535.161.08. alibabacloud.com/gpu-driver-version: "535.161.08" spec: containers: - image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5 name: tensorflow-mnist command: - sleep - infinity resources: requests: cpu: 1 memory: 1Gi nvidia.com/gpu: 1 limits: cpu: 1 memory: 1Gi nvidia.com/gpu: 1 -
Exécutez la commande suivante pour déployer
gpu-pod-with-model-and-driver.yamldans votre cluster.kubectl apply -f gpu-pod-with-model-and-driver.yaml -
Exécutez la commande suivante pour vérifier l'état du pod.
kubectl get podSortie attendue :
NAME READY STATUS RESTARTS AGE gpu-pod-with-model-and-driver 1/1 Running 0 87s -
Exécutez la commande suivante pour vérifier les informations GPU dans le pod.
RemarqueLa commande
/usr/bin/nvidia-smide l'exemple est préconfigurée dans l'image de conteneur d'exemple.kubectl exec -it gpu-pod-with-model-and-driver -- /usr/bin/nvidia-smiSortie attendue :
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI xxx.xxx.xx Driver Version: 535.161.08 CUDA Version: xx.x | |-----------------------------------------+----------------------+----------------------+ ... |=========================================+======================+======================| | x NVIDIA example-model xx | xxxxxxxx:xx:xx.x xxx | x | | xxx xxx xx xxx / xxxx | xxxx / xxx| x% xxxxxxxx| | | | xxx | +-----------------------------------------+----------------------+----------------------+La sortie affiche le modèle de GPU
example-modelet la version de pilote535.161.08, qui correspondent aux libellés de la définition du pod.ImportantLa sortie affichée est fournie à titre indicatif uniquement. Les résultats réels peuvent varier en fonction de votre environnement.