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 meilleure flexibilité 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 afin de les 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 périphériques GPU. Nous vous recommandons d'utiliser l'opérateur GPU NVIDIA pour bénéficier des avantages et de la flexibilité suivants :
Choix du type de GPU : Google Distributed Cloud Software-Only est compatible avec un large éventail de types de GPU pris en charge par le dernier opérateur de GPU NVIDIA.
Choix d'un système d'exploitation compatible : les nœuds de calcul du cluster peuvent utiliser n'importe quel système d'exploitation compatible avec les GPU NVIDIA. Vous avez la possibilité d'utiliser des pilotes de GPU préinstallés ou l'installation dynamique de pilotes 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 Rôles utilisateur et tâches courantes de GKE.
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 calcul 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 du pilote NVIDIA compatible : la version du pilote NVIDIA que vous utilisez doit être compatible avec votre GPU, votre système d'exploitation et la version CUDA utilisée par vos applications. Vous disposez des options d'installation suivantes pour les pilotes NVIDIA :
Utilisez l'opérateur GPU NVIDIA pour installer la version appropriée du pilote 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 pour l'installation du pilote 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 packages 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 valider l'opérateur GPU NVIDIA
Les étapes suivantes vous guident dans l'installation de l'opérateur GPU NVIDIA sur votre cluster Bare Metal et vous aident à vérifier qu'il fonctionne avec vos GPU :
Pour les GPU connectés via Peripheral Component Interconnect Express (PCIe), exécutez la commande suivante pour obtenir la liste des bus PCI du système dont le nom contient "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 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 la station de travail de l'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, il existe trois variantes de commandes de base :
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 séparées par des virgules afin de spécifier les 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 la liste détaillée des options de configuration, consultez Common Chart Customization Options dans la documentation NVIDIA. Pour en savoir plus sur la logistique de l'utilisation de l'indicateur
--set
, consultez 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 pilote GPU le plus récent ou spécifié sur tous les nœuds de calcul GPU du cluster. Pour utiliser le conteneur de pilote de GPU NVIDIA, tous les nœuds de calcul avec GPU doivent exécuter la même version du système d'exploitation. Pour contourner ce problème, vous pouvez installer manuellement les 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 de GPU NVIDIA de déployer les 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 Scénarios de déploiement courants dans 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 fonctionnant correctement, vous devriez constater 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 du 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.Consultez les journaux pour voir le résultat de l'exemple de job :
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 LTS 1.6 de containerd, qui n'active pas Container Device Interface (CDI). Si vous suivez les instructions de la section Support for Container Device Interface de la documentation NVIDIA, il est possible que le runtime
nvidia-cdi
ne fonctionne pas. Le cluster devrait toujours fonctionner comme prévu, mais il est possible que certaines fonctionnalités CDI ne soient pas disponibles.Les pools de nœuds de l'équilibreur de charge exécutent automatiquement un job de mise à jour tous les sept jours. Ce job écrase les configurations containerd, 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 d'éventuels conflits ou problèmes avec la configuration containerd, n'utilisez pas les 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 Cloud Customer Care.
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, l'assistance NVIDIA directement.
Vos commentaires nous sont utiles.