Configuration d'hôte GPU NVIDIA
Utilisez cette compétence de configuration avant l'exécution des workflows TAO sur le backend docker, local-docker ou kubernetes. Elle standardise le runtime GPU de l'hôte sur :
- Branche de pilote NVIDIA
580(module de noyau ouvert préféré) - Package CUDA Toolkit
cuda-toolkit-13-0 - NVIDIA Container Toolkit
1.19.0 - Moteur Docker — installé uniquement pour les backends
docker/local-dockeret uniquement si Docker est absent. Le package choisi dépend de la famille de distribution (docker.iosur Debian par défaut,moby-engine/docker-cedepuisdownload.docker.comsur RHEL,dockersur SUSE). Passez--skip-docker-installpour refuser.
La vérification est sûre et en lecture seule par défaut — elle fonctionne sur n'importe quelle distribution Linux car elle interroge uniquement nvidia-smi, le chemin du toolkit CUDA, la version du package container-toolkit installé (via dpkg/rpm/la version du binaire nvidia-ctk), et le runtime NVIDIA du daemon Docker.
L'installation doit être explicitement autorisée par l'utilisateur et relancée avec --install. Le chemin d'installation est automatisé pour ces familles de distributions :
| Famille | Distributions testées | Gestionnaire | Notes |
|---|---|---|---|
| debian | Ubuntu 22.04 / 24.04, Debian 12 (et dérivés Pop!_OS, Mint, Zorin, Raspbian, KDE Neon, etc. via UBUNTU_CODENAME / VERSION_CODENAME) |
apt-get |
Ajoute NVIDIA cuda-keyring + Container Toolkit .list. Docker via docker.io (remplaçable par $DOCKER_PACKAGE_DEBIAN). |
| rhel | Fedora 39+, RHEL / Rocky / AlmaLinux 9 et 10 | dnf (ou yum) |
Ajoute NVIDIA cuda-<distro>.repo + Container Toolkit .repo. Docker via Fedora moby-engine si disponible, sinon docker-ce depuis download.docker.com. |
| suse | openSUSE Leap 15, SLES 15 | zypper |
Ajoute les mêmes fichiers NVIDIA .repo. Docker via le package docker de la distribution. |
| other (Arch, Alpine, Gentoo, NixOS, FreeBSD, …) | n/a | n/a | --install quitte avec une erreur claire listant les cibles de version et les URLs du guide d'installation NVIDIA. Installez manuellement, puis relancez --check-only. |
Démarrage rapide
Depuis la racine de la banque de compétences :
# Vérifier l'hôte du backend Docker local.
bash skills/platform/tao-setup-nvidia-gpu-host/scripts/setup-nvidia-gpu-host.sh --backend docker --check-only
# Installer ou réparer après approbation de l'utilisateur (demande une confirmation ; voir la note ci-dessous pour les exécutions non-interactives).
bash skills/platform/tao-setup-nvidia-gpu-host/scripts/setup-nvidia-gpu-host.sh --backend docker --install
# Vérifier un hôte worker GPU Kubernetes.
bash skills/platform/tao-setup-nvidia-gpu-host/scripts/setup-nvidia-gpu-host.sh --backend kubernetes --check-only
⚠️ Note — exécution non-interactive (exécutions d'agent / compétence) : une exécution de compétence n'a pas de terminal, donc la confirmation
Continue? [y/N]de l'installateur ne peut pas être répondue. Après avoir exécuté--check-onlypour prévisualiser ce qui manque et obtenir l'approbation explicite de l'utilisateur, ajoutez le flag d'acceptation automatique (--yes) à la commande--installafin qu'elle procède sans prompt. Cela confirme automatiquement l'installation des packages système (branche de pilote NVIDIA 580, CUDA Toolkit 13.0, NVIDIA Container Toolkit, et — pour les backends Docker — Docker) et modifie l'hôte : elle ajoute les dépôts de packages NVIDIA, peut redémarrer Docker, et ajoute l'utilisateur qui l'invoque au groupedocker, donc ne faites cela que sur un hôte que vous contrôlez et que vous avez les privilèges de modifier. Quand une personne exécute--installdirectement au terminal, le script affiche à la place une confirmation avec la liste exacte des packages avant de faire des modifications.
Dans une copie de plugin installée qui expose skills/, utilisez :
bash skills/tao-setup-nvidia-gpu-host/scripts/setup-nvidia-gpu-host.sh --backend docker --check-only
Contrat de workflow
Les workflows Docker et Kubernetes doivent exécuter la vérification avant de soumettre du travail GPU :
SETUP_SCRIPT="${TAO_SKILL_BANK_ROOT:-$PWD}/skills/tao-setup-nvidia-gpu-host/scripts/setup-nvidia-gpu-host.sh"
[ -x "$SETUP_SCRIPT" ] || SETUP_SCRIPT="${TAO_SKILL_BANK_ROOT:-$PWD}/platform/tao-setup-nvidia-gpu-host/scripts/setup-nvidia-gpu-host.sh"
bash "$SETUP_SCRIPT" --backend docker --check-only || {
echo "MISSING: TAO GPU host runtime is not ready."
echo "After user approval, run (append --yes for non-interactive agent runs):"
echo " bash \"$SETUP_SCRIPT\" --backend docker --install"
exit 1
}
N'installez jamais en silence. Si la vérification échoue, expliquez ce qui manque, demandez à l'utilisateur d'autoriser la correction, puis exécutez la commande d'installation et relancez la vérification.
Ce que fait l'installateur
L'installateur se dispatche en fonction de la famille de distribution détectée. Sur chaque famille supportée, il ajoute les dépôts NVIDIA CUDA et Container Toolkit (s'ils manquent), installe les packages runtime épinglés, installe optionnellement Docker, configure le runtime NVIDIA Docker, et ajoute l'utilisateur qui l'invoque au groupe docker.
Étapes communes (toutes les familles) :
- Ajoute le dépôt CUDA NVIDIA s'il manque (apt
cuda-keyringdeb,cuda-<distro>.repopour dnf/zypper). - Ajoute le dépôt NVIDIA Container Toolkit s'il manque (
.listpour apt,.repopour dnf/zypper). - Installe le package kernel header / devel correspondant pour le noyau en cours d'exécution.
- Installe les packages de la branche pilote 580,
cuda-toolkit-13-0, et le Container Toolkit épinglé à1.19.0(le suffixe dpkg1.19.0-1est la même version upstream exprimée pour apt). - Pour les backends Docker et quand Docker manque, installe Docker (flags de remplacement / refus ci-dessous), active/démarre le daemon, puis exécute
nvidia-ctk runtime configure --runtime=dockeret redémarre Docker quandsystemctlest disponible. - Ajoute l'utilisateur qui l'invoque (
$SUDO_USERsi disponible, sinon$USER) au groupedockerafin que les shells suivants puissent exécuterdockersanssudo— refuser avec--skip-docker-group. L'adhésion au nouveau groupe ne prend effet que dans le shell actuel : déconnectez-vous et reconnectez-vous, ou exécuteznewgrp dockerdans chaque nouveau shell. - Tente
modprobe nvidiaafin que la vérification puisse passer avant le redémarrage.
Sélections de packages spécifiques à la famille :
| Étape | debian-family | rhel-family | suse-family |
|---|---|---|---|
| Kernel headers | linux-headers-$(uname -r) |
kernel-devel-$(uname -r), kernel-headers-$(uname -r) |
kernel-default-devel |
| Pilote | nvidia-driver-pinning-580, nvidia-open-580 (remplacement : $NVIDIA_DRIVER_PACKAGE_DEBIAN) |
nvidia-driver-cuda, kmod-nvidia-open-dkms (remplacement : $NVIDIA_DRIVER_PACKAGE_RHEL, $NVIDIA_DRIVER_KMOD_RHEL) |
nvidia-open-driver-G06-signed-kmp-default (remplacement : $NVIDIA_DRIVER_PACKAGE_SUSE) |
| CUDA toolkit | cuda-toolkit-13-0 |
cuda-toolkit-13-0 |
cuda-toolkit-13-0 |
| Container Toolkit | nvidia-container-toolkit=1.19.0-1 + base/tools/libs |
nvidia-container-toolkit-1.19.0 + base/tools/libs |
même que rhel |
| Docker | docker.io (remplacement : $DOCKER_PACKAGE_DEBIAN) |
moby-engine+moby-cli sur Fedora si disponible, sinon docker-ce docker-ce-cli containerd.io depuis download.docker.com |
docker |
Vérification
Après installation, vérifiez :
nvidia-smi
/usr/local/cuda-13.0/bin/nvcc --version
docker info --format '{{json .Runtimes}}' | grep nvidia
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
La sortie nvidia-smi attendue inclut le pilote 580.x et la version CUDA 13.0.
La sortie nvcc attendue inclut release 13.0.
Notes Kubernetes
Pour les clusters Kubernetes auto-gérés, exécutez l'installateur d'hôte sur chaque nœud worker GPU ou intégrez le même ensemble de packages dans l'image de nœud avant d'installer l'NVIDIA GPU Operator ou le plugin d'appareil.
La vérification de workflow avertit également si kubectl est disponible mais que le cluster ne rapporte pas de capacité allocatable nvidia.com/gpu. Dans ce cas, installez/configurez l'NVIDIA GPU Operator après que le runtime de l'hôte worker soit prêt :
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm install --wait gpu-operator -n gpu-operator --create-namespace nvidia/gpu-operator
Les fournisseurs Kubernetes gérés peuvent posséder l'installation du pilote via les images de nœud ou la politique GPU Operator. Ne remplacez pas un nœud GPU géré par un fournisseur sans approbation de l'utilisateur et un plan de restauration.
Modes de défaillance
Famille de distribution non supportée : --install automatise les hôtes des familles debian-, rhel- et suse-. Sur Arch, Alpine, Gentoo, NixOS, FreeBSD, ou tout système sans /etc/os-release (par exemple macOS), le script quitte avec une erreur claire listant les quatre cibles de version et les URLs du guide d'installation NVIDIA en amont :
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.htmlhttps://docs.docker.com/engine/install/
Installez ces quatre composants en utilisant le gestionnaire de packages de votre distribution et relancez le script avec --check-only pour vérifier. La vérification est universellement portable — elle interroge uniquement les binaires / bases de données de packages — donc une fois le runtime en place le contrat de workflow est satisfait indépendamment de la distro sous-jacente.
Dérivé Ubuntu/Debian non supporté : Quand ID est par exemple pop, mint, zorin, raspbian, ou un autre dérivé debian-family, le script mappe l'hôte sur le dépôt CUDA Ubuntu/Debian en amont via UBUNTU_CODENAME / VERSION_CODENAME (focal/jammy/noble → Ubuntu 20.04/22.04/24.04 ; bullseye/bookworm/trixie → Debian 11/12/12). Si le nom de code de l'hôte ne correspond pas à une version en amont connue, --install quitte avec les mêmes instructions d'installation manuelle décrites ci-dessus.
Docker non installé : --check-only rapporte MISSING: Docker is not installed et affiche la commande de relancement exacte appropriée à la famille de distro détectée. Le chemin --install par défaut installe Docker (docker.io / moby-engine / docker-ce / docker selon la famille), active/démarre le daemon, configure le runtime NVIDIA, et ajoute l'utilisateur qui l'invoque au groupe docker. Si vous préférez gérer Docker vous-même, installez-le avant de relancer le script ou passez --skip-docker-install.
Docker installé mais docker run a encore besoin de sudo : Le script ajoute l'utilisateur qui l'invoque au groupe docker, mais Linux ne rafraîchit l'adhésion au groupe que lors d'une nouvelle session de connexion. Déconnectez-vous et reconnectez-vous, ou exécutez newgrp docker dans chaque nouveau shell, jusqu'à ce que la nouvelle adhésion soit active.
Runtime Docker toujours absent : Redémarrez Docker, puis relancez nvidia-ctk runtime configure --runtime=docker.
Branche de pilote détectée != 580 : L'épinglage de la branche de pilote est exact sur debian-family (nvidia-open-580). Sur rhel-/suse-family le script installe le dernier pilote ouvert fourni dans le dépôt NVIDIA CUDA 13.0 pour la distro détectée, qui est toujours ≥ 580. Si votre hôte nécessite un épinglage plus strict, définissez $NVIDIA_DRIVER_PACKAGE_RHEL / $NVIDIA_DRIVER_KMOD_RHEL / $NVIDIA_DRIVER_PACKAGE_SUSE aux noms de packages exacts que vous voulez avant d'exécuter --install.
Pilote installé mais nvidia-smi échoue : Chargez le module avec sudo modprobe nvidia ou redémarrez. Secure Boot peut nécessiter l'inscription MOK sur les systèmes où il est activé.
Kubernetes n'a toujours pas de capacité GPU : Confirmez que le pilote fonctionne sur chaque nœud GPU avec nvidia-smi, puis vérifiez les pods GPU Operator/device plugin et les étiquettes de nœud.