Cette page explique comment gérer les charges de travail des unités de traitement graphique (GPU) sur Google Distributed Cloud connected. Pour profiter de cette fonctionnalité, vous devez disposer d'une configuration matérielle Distributed Cloud connectée contenant des GPU. Les serveurs Distributed Cloud ne sont pas compatibles avec les charges de travail GPU.
Pour planifier et commander une telle configuration, choisissez la configuration 2 dans les documents suivants :
Si votre rack Distributed Cloud connecté inclut des GPU, vous pouvez configurer vos charges de travail Distributed Cloud connectées pour qu'elles utilisent des ressources GPU.
Les charges de travail connectées Distributed Cloud peuvent s'exécuter dans des conteneurs et sur des machines virtuelles :
Charges de travail GPU exécutées dans des conteneurs. Toutes les ressources GPU de votre cluster connecté Distributed Cloud sont initialement allouées aux charges de travail s'exécutant dans des conteneurs. Le pilote de GPU permettant d'exécuter des charges de travail conteneurisées basées sur le GPU est inclus dans Distributed Cloud connecté. Dans chaque conteneur, les bibliothèques GPU sont montées sur
/opt/nvidia.Charges de travail GPU exécutées sur des machines virtuelles. Pour exécuter une charge de travail basée sur un GPU sur une machine virtuelle, vous devez allouer des ressources de GPU sur le nœud connecté Distributed Cloud cible aux machines virtuelles, comme décrit plus loin sur cette page. Cela permet de contourner le pilote de GPU intégré et de transmettre directement les GPU aux machines virtuelles. Vous devez installer manuellement un pilote de GPU compatible sur le système d'exploitation invité de chaque machine virtuelle. Vous devez également obtenir toutes les licences nécessaires pour exécuter des pilotes GPU spécialisés sur vos machines virtuelles.
Pour vérifier que des GPU sont présents sur un nœud Distributed Cloud connecté, assurez-vous que le nœud comporte le libellé vm.cluster.gke.io.gpu=true. Si le libellé n'est pas présent sur le nœud, cela signifie qu'aucun GPU n'est installé sur la machine physique Distributed Cloud connectée correspondante.
Allouer des ressources de GPU
Par défaut, toutes les ressources GPU de chaque nœud du cluster sont allouées aux charges de travail conteneurisées. Pour personnaliser l'allocation des ressources GPU sur chaque nœud, suivez les étapes de cette section.
Configurer l'allocation des ressources GPU
Pour allouer des ressources GPU sur un nœud Distributed Cloud connecté, utilisez la commande suivante pour modifier la ressource personnalisée
GPUAllocationsur le nœud cible :kubectl edit gpuallocation NODE_NAME --namespace vm-system
Remplacez
NODE_NAMEpar le nom du nœud Distributed Cloud cible.Dans l'exemple suivant, le résultat de la commande affiche l'allocation des ressources GPU par défaut. Par défaut, toutes les ressources GPU sont allouées aux charges de travail conteneurisées (
pod), et aucune ressource GPU n'est allouée aux charges de travail de machine virtuelle (vm) :... spec: pod: 2 # Number of GPUs allocated for container workloads vm: 0 # Number of GPUs allocated for VM workloadsDéfinissez vos allocations de ressources GPU comme suit :
- Pour allouer une ressource de GPU à des charges de travail conteneurisées, augmentez la valeur du champ
podet diminuez celle du champvmdu même montant. - Pour allouer une ressource de GPU aux charges de travail des machines virtuelles, augmentez la valeur du champ
vmet diminuez la valeur du champpoddu même montant.
Le nombre total de ressources GPU allouées ne doit pas dépasser le nombre de GPU installés sur la machine physique Distributed Cloud connectée sur laquelle le nœud s'exécute. Sinon, le nœud rejette l'allocation non valide.
Dans l'exemple suivant, deux ressources de GPU ont été réaffectées des charges de travail conteneurisées (
pod) aux charges de travail de machine virtuelle (vm) :... spec: pod: 0 # Number of GPUs allocated for container workloads vm: 2 # Number of GPUs allocated for VM workloadsLorsque vous avez terminé, appliquez la ressource
GPUAllocationmodifiée à votre cluster et attendez que son état passe àAllocationFulfilled.- Pour allouer une ressource de GPU à des charges de travail conteneurisées, augmentez la valeur du champ
Vérifier l'allocation des ressources GPU
Pour vérifier l'allocation de vos ressources GPU, utilisez la commande suivante :
kubectl describe gpuallocations NODE_NAME --namespace vm-system
Remplacez
NODE_NAMEpar le nom du nœud connecté Distributed Cloud cible.La commande renvoie un résultat semblable à l'exemple suivant :
Name: mynode1 ... spec: node: mynode1 pod: 2 # Number of GPUs allocated for container workloads vm: 0 # Number of GPUs allocated for VM workloads Status: Allocated: true Conditions: Last Transition Time: 2022-09-23T03:14:10Z Message: Observed Generation: 1 Reason: AllocationFulfilled Status: True Type: AllocationStatus Last Transition Time: 2022-09-23T03:14:16Z Message: Observed Generation: 1 Reason: DeviceStateUpdated Status: True Type: DeviceStateUpdated Consumption: pod: 0/2 # Number of GPUs currently consumed by container workloads vm: 0/0 # Number of GPUs currently consumed by VM workloads Device Model: Tesla T4 Events: <none>
Configurer un conteneur pour qu'il utilise des ressources de GPU
Pour configurer un conteneur s'exécutant sur Distributed Cloud connecté afin d'utiliser des ressources GPU, configurez sa spécification comme indiqué dans l'exemple suivant, puis appliquez-la à votre cluster :
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: containers: - name: my-gpu-container image: CUDA_TOOLKIT_IMAGE command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] env: resources: requests: nvidia.com/gpu-pod-TESLA_T4: 2 limits: nvidia.com/gpu-pod-TESLA_T4: 2 nodeSelector: kubernetes.io/hostname: NODE_NAME
Remplacez les éléments suivants :
CUDA_TOOLKIT_IMAGE: chemin d'accès complet et nom de l'image NVIDIA CUDA Toolkit. La version de CUDA Toolkit doit correspondre à la version du pilote NVIDIA exécutée sur votre cluster connecté Distributed Cloud. Pour déterminer la version de votre pilote NVIDIA, consultez les notes de version de Distributed Cloud. Pour trouver la version correspondante de CUDA Toolkit, consultez Compatibilité avec CUDA.NODE_NAME: nom du nœud Distributed Cloud connecté cible.
Configurer une machine virtuelle pour utiliser des ressources GPU
Pour configurer une machine virtuelle exécutée sur Distributed Cloud Connected afin d'utiliser des ressources GPU, configurez sa spécification de ressources VirtualMachine comme indiqué dans l'exemple suivant, puis appliquez-la à votre cluster :
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine ... spec: ... gpu: model: nvidia.com/gpu-vm-TESLA_T4 quantity: 2