L'aspect apportez votre propre nœud de Google Distributed Cloud (logiciel uniquement) sur Bare Metal vous permet de tirer parti de votre matériel avancé, y compris des machines avec GPU, pour obtenir les meilleures performances et la flexibilité optimale pour vos clusters.
Ce document explique comment installer et utiliser l'opérateur GPU NVIDIA pour configurer des clusters Bare Metal créés avec Google Distributed Cloud à utiliser avec des GPU NVIDIA.
L'opérateur GPU NVIDIA utilise le framework d'opérateur pour gérer les composants logiciels NVIDIA nécessaires au provisionnement et à la gestion des appareils GPU. Nous vous recommandons d'utiliser l'opérateur de GPU NVIDIA pour bénéficier des avantages et de la flexibilité suivants:
Choix du type de GPU: Google Distributed Cloud logiciel uniquement est compatible avec un large éventail de types de GPU compatibles avec le dernier opérateur GPU NVIDIA.
Choix du système d'exploitation compatible: les nœuds de calcul du cluster peuvent utiliser n'importe quel système d'exploitation (OS) compatible avec les GPU NVIDIA. Vous pouvez utiliser des pilotes de GPU préinstallés ou une installation de pilote dynamique avec l'opérateur de GPU NVIDIA.
Choix des modèles de déploiement: vous pouvez utiliser des GPU NVIDIA sur n'importe quel type de cluster avec des nœuds de calcul: clusters utilisateur, clusters autonomes ou clusters hybrides.
Cette page s'adresse aux administrateurs et opérateurs informatiques qui gèrent le cycle de vie de l'infrastructure technologique sous-jacente. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez la section Rôles utilisateur et tâches courantes de l'utilisateur dans GKE Enterprise.
Avant de commencer
Avant de suivre les étapes des sections suivantes, assurez-vous de disposer des éléments suivants:
Cluster opérationnel: assurez-vous d'avoir créé un cluster bare metal fonctionnel avec Google Distributed Cloud.
GPU NVIDIA: assurez-vous que les GPU NVIDIA sont installés sur les nœuds de travail de votre cluster. La section suivante sur l'installation de l'opérateur GPU NVIDIA inclut des étapes permettant de vérifier que les GPU sont correctement installés et reconnus par votre système d'exploitation.
Version de pilote NVIDIA compatible: la version de pilote NVIDIA que vous utilisez doit être compatible avec votre GPU, votre système d'exploitation et la version de CUDA utilisée par vos applications. Vous avez les options d'installation des pilotes NVIDIA suivantes:
Utilisez l'opérateur de GPU NVIDIA pour installer la version appropriée du pilote de GPU NVIDIA, comme décrit dans les sections suivantes.
Utilisez le pilote NVIDIA préinstallé dans l'image de votre système d'exploitation.
Suivez les instructions du guide de démarrage rapide de l'installation des pilotes NVIDIA pour installer manuellement le pilote NVIDIA.
Helm version 3.0.0 ou ultérieure: installez l'interface de ligne de commande Helm pour la gestion des paquets sur votre poste de travail administrateur. Vous utilisez Helm pour installer l'opérateur GPU NVIDIA. Vous pouvez exécuter les commandes suivantes pour télécharger et installer l'outil de ligne de commande Helm:
curl -fsSL -o get_helm.sh \ https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh \ ./get_helm.sh
Installer et vérifier l'opérateur GPU NVIDIA
Les étapes suivantes vous guident lors de l'installation de l'opérateur de GPU NVIDIA sur votre cluster bare metal et vous aident à vérifier qu'il fonctionne avec vos GPU:
Pour les appareils GPU connectés via PCIe (Peripheral Component Interconnect Express), exécutez la commande suivante afin d'obtenir la liste des bus PCI système contenant le nom "NVIDIA" :
sudo lspci | grep NVIDIA
Le résultat ressemble à ce qui suit :
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)
Vous pouvez utiliser l'outil de ligne de commande NVIDIA System Management Interface (
nvidia-smi
) sur un nœud donné pour obtenir des informations plus détaillées sur les appareils GPU:nvidia-smi
Le résultat ressemble à ce qui suit :
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.1 CUDA Veersion 12.2 | |-----------------------------------------+----------------------+----------------------| | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA A100 80GB PCIe Off | 00000000:25:00.0 Off | 0 | | N/A 30C P0 44W / 300W | 0MiB / 81920MiB | 0% Default | | | | Disabled | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
Ajoutez le dépôt Helm NVIDIA sur le poste de travail administrateur:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo update
Installez l'opérateur GPU NVIDIA.
Lorsque vous installez l'opérateur GPU NVIDIA, trois variantes de commande de base sont disponibles:
Installez l'opérateur GPU NVIDIA avec la configuration par défaut:
helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator
Utilisez l'indicateur
--set
pour transmettre un ensemble de paires clé-valeur délimitées par une virgule afin de spécifier des options de configuration:helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set OPTION_1_NAME=OPTION_1_VALUE,OPTION_2_NAME=OPTION_2_VALUE
Pour obtenir une liste détaillée des options de configuration, consultez la section Options de personnalisation courantes des graphiques de la documentation NVIDIA. Pour en savoir plus sur la logistique de l'utilisation de l'option
--set
, consultez la section Format et limites de--set
dans la documentation Helm.Désactivez l'installation du pilote si vous avez déjà installé le pilote de GPU NVIDIA sur vos nœuds:
Par défaut, l'opérateur GPU NVIDIA déploie le dernier pilote de GPU ou celui spécifié sur tous les nœuds de calcul GPU du cluster. Pour utiliser le conteneur du pilote de GPU NVIDIA, tous les nœuds de travail avec GPU doivent exécuter la même version du système d'exploitation. Pour contourner ce problème, vous pouvez installer manuellement des pilotes de GPU sur les nœuds et exécuter la commande
helm install
avec--set driver.enabled=false
pour empêcher l'opérateur GPU NVIDIA de déployer des pilotes.helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set driver.enabled=false
Pour connaître les scénarios de déploiement courants et des exemples de commandes, consultez la section Scénarios de déploiement courants de la documentation NVIDIA.
Vérifiez l'exportation des ressources GPU:
Une fois l'opérateur de GPU NVIDIA installé avec un pilote de GPU et un plug-in d'appareil en cours d'exécution, vous devriez voir que le nombre de GPU est correctement configuré dans le champ
Allocatable
pour la ressource de nœud.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
Remplacez
GPU_NODE_NAME
par le nom de la machine de nœud avec le GPU que vous testez.Le résultat ressemble à ce qui suit :
Allocatable: cpu: 127130m ephemeral-storage: 858356868519 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 509648288Ki nvidia.com/gpu: 1 pods: 250
Pour vérifier que les GPU fonctionnent, exécutez l'exemple de tâche GPU suivant, qui exécute la commande
nvidia-smi
:export NODE_NAME=GPU_NODE_NAME cat <<EOF | kubectl create --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: batch/v1 kind: Job metadata: name: test-job-gpu spec: template: spec: runtimeClassName: nvidia containers: - name: nvidia-test image: nvidia/cuda:12.0.0-base-ubuntu22.04 command: ["nvidia-smi"] resources: limits: nvidia.com/gpu: 1 nodeSelector: kubernetes.io/hostname: ${NODE_NAME} restartPolicy: Never EOF
Remplacez
CLUSTER_KUBECONFIG
par le chemin d'accès au fichier kubeconfig du cluster.Vérifiez les journaux pour obtenir l'exemple de sortie de la tâche:
kubectl logs job/test-job-gpu –kubeconfig=CLUSTER_KUBECONFIG
Le résultat ressemble à ce qui suit :
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.1 CUDA Veersion 12.2 | |-----------------------------------------+----------------------+----------------------| | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA A100 80GB PCIe Off | 00000000:25:00.0 Off | 0 | | N/A 30C P0 44W / 300W | 0MiB / 81920MiB | 0% Default | | | | Disabled | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
Limites
Les limites suivantes s'appliquent lorsque vous utilisez l'opérateur GPU NVIDIA avec des clusters créés avec Google Distributed Cloud:
Si vous installez une version récente de l'opérateur GPU NVIDIA, les configurations containerd appliquées par l'opérateur peuvent être écrasées lors des mises à jour ou des mises à niveau du cluster ou du pool de nœuds.
Les versions compatibles de Google Distributed Cloud installent la version 1.6 de containerd LTS, qui n'active pas l'interface de conteneur (CDI). Si vous suivez les instructions de la section Compatibilité avec l'interface de périphérique de conteneur de la documentation NVIDIA, l'environnement d'exécution
nvidia-cdi
risque de ne pas fonctionner. Le cluster devrait toujours fonctionner comme prévu, mais certaines fonctionnalités CDI peuvent ne pas être disponibles.Les pools de nœuds d'équilibrage de charge exécutent automatiquement une tâche de mise à jour tous les sept jours. Cette tâche écrase les configurations conteneurisées, y compris celles ajoutées par l'opérateur GPU NVIDIA.
Bonnes pratiques
Pour minimiser les conflits et les problèmes liés à vos configurations NVIDIA, nous vous recommandons de prendre les précautions suivantes:
Sauvegardez le fichier de configuration containerd,
/etc/containerd/config.toml
, avant de mettre à niveau ou de mettre à jour le cluster ou les pools de nœuds. Ce fichier contient la configuration d'exécutionnvidia
. Restaurez le fichierconfig.toml
une fois la mise à niveau ou la mise à jour terminée, puis redémarrez containerd pour que les modifications de configuration prennent effet.Pour éviter les conflits ou les problèmes potentiels avec la configuration containerd, n'utilisez pas de nœuds GPU comme nœuds d'équilibreur de charge (
loadBalancer.nodePoolSpec
).
Obtenir de l'aide
Si vous avez besoin d'aide supplémentaire concernant l'utilisation de GPU avec Google Distributed Cloud, contactez l'assistance client Cloud.
Pour les problèmes liés à la configuration ou à l'utilisation du matériel GPU sur votre système d'exploitation, contactez votre fournisseur de matériel ou, le cas échéant, directement l'assistance NVIDIA.
Merci de vos commentaires.