Les nœuds virtuels GPU-HPN des clusters ACS exposent des libellés d'attribut GPU qui permettent de cibler un modèle de GPU ou une zone réseau spécifique pour vos pods, sans modifier le code de votre application.
Prérequis
Avant de commencer, assurez-vous que vous avez :
Associé le cluster à une réservation de capacité GPU-HPN
Libellés d'attribut GPU
Chaque nœud virtuel GPU-HPN comporte les libellés suivants.
| Libellé | Description |
|---|---|
alibabacloud.com/gpu-model-series |
Modèle de GPU utilisé par le nœud virtuel |
alibabacloud.com/node-series |
Type de ressource réservée du nœud virtuel |
alibabacloud.com/hpn-zone |
Zone du réseau haute performance |
Pour consulter les modèles de GPU pris en charge par votre réservation de capacité, ouvrez un ticket .
Choisir une méthode de planification
Kubernetes propose deux méthodes pour assigner un pod à un nœud spécifique.
| Méthode | Fonctionnement | Cas d'usage |
|---|---|---|
| node selector | Correspondance stricte : le pod est planifié uniquement sur les nœuds portant la valeur de libellé exacte | Ancrage à un modèle de GPU précis, sans option de repli |
| node affinity | Prise en charge de contraintes strictes (required) et souples (preferred) |
Règles plus flexibles, par exemple préférer un modèle de GPU tout en acceptant un autre |
L'exemple suivant utilise un node selector. Pour la syntaxe de node affinity, reportez-vous à la documentation Kubernetes.
Planifier des pods sur un modèle de GPU spécifique
Cet exemple exécute une tâche d'entraînement TensorFlow MNIST sur un nœud virtuel doté d'un modèle de GPU spécifique.
-
Créez un fichier nommé
tensorflow-mnist.yamlavec le contenu suivant.apiVersion: batch/v1 kind: Job metadata: name: tensorflow-mnist spec: parallelism: 1 template: metadata: labels: app: tensorflow-mnist spec: nodeSelector: alibabacloud.com/gpu-model-series: "gpu-example" # Replace with your GPU model containers: - name: tensorflow-mnist image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5 command: - python - tensorflow-sample-code/tfjob/docker/mnist/main.py - --max_steps=1000 - --data_dir=tensorflow-sample-code/data resources: requests: cpu: 1 memory: 1 nvidia.com/gpu: 1 limits: cpu: 1 memory: 1 nvidia.com/gpu: 1 workingDir: /root restartPolicy: Never -
Déployez le Job.
kubectl apply -f tensorflow-mnist.yaml -
Vérifiez l'état du pod.
kubectl get pod -l app=tensorflow-mnist -o wideConsultez la colonne NODE pour confirmer que le pod s'exécute sur le nœud virtuel attendu.
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES default tensorflow-mnist-xxx 0/2 Running 0 4h2m <none> cn-shanghai-b.cr-u4ub6c3un2mrjlct2l9c <none> <none>La sortie indique que le pod s'exécute sur le nœud virtuel utilisant le GPU gpu-example.