11 novembre 2026 · Équipe VRAMfarm
Pilote CUDA incompatible : réparer PyTorch et ComfyUI sur un GPU loué
Vous lancez un serveur, installez votre projet, et la première vérification affiche torch.cuda.is_available() False. Ou bien ComfyUI s’arrête sur « The NVIDIA driver on your system is too old ». Sur une machine louée, plusieurs numéros de version entrent en jeu, et celui qui tranche est généralement la version de PyTorch, que vous pouvez changer. Le pilote, lui, appartient à l’hôte. La solution se résume donc presque toujours à l’une de ces deux options : installer la wheel PyTorch qui correspond au pilote, ou choisir une machine dont le pilote correspond à la version dont vous avez besoin. Dans les deux cas, quelques minutes suffisent une fois que vous savez quel numéro désigne quoi.
Pilote, toolkit CUDA et version de PyTorch : trois numéros différents
| Quoi | Où ça se trouve | Comment le voir | Modifiable sur un serveur loué ? |
|---|---|---|---|
| Pilote NVIDIA, par ex. 570.172 | Sur l’hôte ; votre conteneur l’utilise | nvidia-smi, « Driver Version » |
Non |
| « CUDA Version » dans nvidia-smi, par ex. 12.8 | La version de CUDA la plus récente prise en charge par ce pilote | nvidia-smi, en haut à droite |
Non, elle suit le pilote |
| Toolkit CUDA (nvcc) | Dans le conteneur, facultatif | nvcc --version |
Oui, mais seulement utile pour compiler du code |
| CUDA de la wheel PyTorch : cu126, cu128, cu130 | Embarqué dans les paquets pip | torch.version.cuda |
Oui, avec pip |
Une règle couvre la plupart des cas : la version CUDA de votre build PyTorch ne doit pas être plus récente que la « CUDA Version » affichée par nvidia-smi. Les pilotes sont rétrocompatibles. Un pilote qui prend en charge CUDA 12.8 fait tourner les builds cu118, cu124, cu126 et cu128. Un build cu130 n’y tournera pas, et un build cu129 peut-être, peut-être pas (voir la remarque sous le tableau).
Pilote Linux minimal pour chaque build CUDA :
| Build CUDA | Pilote nécessaire |
|---|---|
| 11.8 | 520 ou plus récent |
| 12.4 | 550 ou plus récent |
| 12.6 | 560 ou plus récent |
| 12.8 | 570 ou plus récent |
| 12.9 | 575 ou plus récent |
| 13.0 | 580 ou plus récent |
Les programmes CUDA 12.x peuvent parfois tourner sur un pilote plus ancien de la série 12 (525 ou plus récent) grâce à ce que NVIDIA appelle la compatibilité de version mineure, mais certaines fonctions exigent le pilote complet et les échecs surgissent à des endroits inattendus. Ne comptez pas dessus.
Vérifier la machine en moins d’une minute
Ouvrez le terminal Jupyter ou connectez-vous en SSH (comment configurer une clé SSH) et lancez :
nvidia-smi
nvcc --version
python -c "import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available()); print(torch.cuda.get_device_name(0), torch.cuda.get_device_capability(0)); print(torch.cuda.get_arch_list())"
Comment lire le résultat :
- nvidia-smi donne le pilote et la version de CUDA la plus récente qu’il prend en charge. Si nvidia-smi lui-même échoue, le problème vient de l’hôte, pas de vos logiciels (voir plus bas).
- nvcc peut répondre « command not found ». Aucun souci pour PyTorch, qui n’en a pas besoin.
- La ligne Python doit afficher quelque chose comme
2.8.0+cu128 12.8 True, puis le nom de la carte et sa compute capability, par exemple(12, 0)pour une RTX 5090. La liste des architectures doit inclure votre carte :sm_80pour l’A100,sm_86pour les RTX série 30 et les RTX A4000 à A6000,sm_89pour les RTX série 40, la L4, la L40 et la L40S,sm_90pour les H100 et H200,sm_120pour les RTX série 50 et la RTX PRO 6000,sm_100pour la B200.
Si torch.version.cuda affiche None, vous avez un build CPU uniquement. ComfyUI affiche les mêmes informations au démarrage : cherchez dans le journal la ligne « pytorch version » avec son suffixe +cu et la ligne « Device: cuda:0 ».
Ce que signifie chaque erreur et comment la corriger
« RuntimeError: No CUDA GPUs are available »
Elle se manifeste aussi par torch.cuda.is_available() qui renvoie False. Passez les causes en revue dans l’ordre :
echo $CUDA_VISIBLE_DEVICESaffiche une valeur vide ou un mauvais index. Supprimez la variable, ou mettez-la à0.torch.version.cudavautNone: c’est un build CPU. Réinstallez comme indiqué dans la section suivante.- Le build PyTorch est plus récent que ce que le pilote prend en charge, et la vérification du pilote a échoué sans bruit. Comparez les deux numéros.
nvidia-smiéchoue aussi : le conteneur n’a pas accès au GPU. C’est un problème de l’hôte.
« The NVIDIA driver on your system is too old (found version 12020) »
Le nombre est la version de CUDA la plus récente prise en charge par le pilote, écrite sans points : 12020 correspond à 12.2, 12080 à 12.8. Votre build PyTorch exige plus récent. Soit vous installez un build plus ancien compatible, ce qui pour un pilote 12.2 signifie une vieille version de PyTorch, soit vous passez sur une machine au pilote plus récent. Pour un projet actuel, la seconde option est généralement la plus rapide.
« AssertionError: Torch not compiled with CUDA enabled »
Un build CPU uniquement est installé. Sous Linux, il vient généralement de l’index CPU, d’une version +cpu figée dans un fichier requirements, ou d’un paquet qui a réinstallé torch comme dépendance. Les custom nodes de ComfyUI le font plus souvent qu’on ne le croit.
« CUDA error: no kernel image is available for execution on the device »
Elle est généralement précédée d’un avertissement comme « NVIDIA GeForce RTX 5090 with CUDA capability sm_120 is not compatible with the current PyTorch installation ». Le build ne contient pas de code pour l’architecture de votre carte. Sur les cartes Blackwell, cela signifie un PyTorch antérieur à 2.7 ou un build antérieur à cu128. La même erreur vient des extensions compilées sans votre architecture : xformers, flash-attn, d’anciennes versions de bitsandbytes ou des kernels d’attention figés sur une vieille version.
« nvidia-container-cli: requirement error: unsatisfied condition: cuda>=12.8 »
Celle-ci apparaît avec votre propre image Docker. Les images de base CUDA de NVIDIA déclarent la version de CUDA dont elles ont besoin, et le conteneur refuse de démarrer sur une machine dont le pilote est plus ancien. Reconstruisez sur une image de base avec une version de CUDA inférieure, ou choisissez une machine au pilote plus récent.
« Failed to initialize NVML: Driver/library version mismatch »
Si nvidia-smi échoue avec ce message ou avec « couldn’t communicate with the NVIDIA driver », le pilote de l’hôte est cassé ou a changé sous le conteneur. Impossible de le réparer de l’intérieur. Enregistrez /workspace et arrêtez le serveur (la facturation prend fin une fois l’arrêt effectué), démarrez-en un autre et indiquez au support de quelle machine il s’agissait.
« ImportError: libcudnn.so.9: cannot open shared object file »
Deux paquets attendent des bibliothèques CUDA différentes, par exemple PyTorch pour CUDA 12 et un build d’ONNX Runtime ou de TensorFlow pour une autre version. Lancez pip check, gardez tout sur une même génération de CUDA, et en cas de doute repartez d’un environnement virtuel neuf.
Installer le build PyTorch qui correspond
- Lisez la « CUDA Version » dans nvidia-smi.
- Prenez le build PyTorch le plus récent qui ne la dépasse pas : 12.8 → cu128 ; 12.6 → cu126 ; 13.0 → cu130 ou cu128. Le sélecteur de pytorch.org liste les builds proposés pour la version actuelle.
- Installez-le dans un environnement virtuel, avec torch, torchvision et torchaudio ensemble depuis le même index pour que leurs versions concordent :
python -m venv /workspace/venv
source /workspace/venv/bin/activate
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
Placer l’environnement dans /workspace permet de le retrouver dans le dossier enregistré quand vous arrêtez le serveur. N’oubliez pas que la machine suivante devra alors elle aussi avoir un pilote assez récent pour ce build.
- Empêchez les autres paquets de le remplacer. Inscrivez la version installée dans un fichier de contraintes et obligez pip à le respecter :
pip freeze | grep -E "^torch(vision|audio)?==" > /workspace/constraints.txt
export PIP_CONSTRAINT=/workspace/constraints.txt
- Installez les extensions pour le même build. xformers publie ses wheels sur le même index PyTorch ; un simple
pip install xformerspeut tirer une autre version de torch. flash-attn propose des wheels précompilées pour les couples torch/CUDA courants. Le compiler vous-même demande le toolkit CUDA de même version majeure et peut prendre une heure ou plus de temps facturé, selon le CPU.
Pour ComfyUI : après avoir installé des custom nodes via le Manager, relancez la vérification Python. Si un nœud a remplacé torch, réinstallez-le avec la ligne ci-dessus, puis lancez pip install -r requirements.txt dans le dossier de ComfyUI. Le modèle ComfyUI est livré avec PyTorch sur CUDA 12.8.
Les RTX série 50 et autres cartes Blackwell exigent CUDA 12.8 ou plus récent
Les RTX 5090, RTX 5080, RTX 5070 Ti et RTX PRO 6000 utilisent l’architecture Blackwell sm_120 ; la B200 utilise sm_100. Il leur faut les trois conditions suivantes :
- un pilote 570 ou plus récent ;
- un build PyTorch pour CUDA 12.8 ou ultérieur (cu128, cu129, cu130) ;
- PyTorch 2.7 ou plus récent, la première version stable qui prend en charge Blackwell.
Les projets figés sur une ancienne pile, comme torch 2.1 avec cu118 dans un vieux dépôt d’entraînement, ne tourneront pas du tout sur Blackwell. Les cartes Ampere et Ada font toujours tourner ces builds : pour un ancien projet, une RTX 4090 ou une RTX 3090 est le choix pratique. La plupart des extensions populaires publient désormais des wheels avec sm_120 ; leurs anciennes versions figées, non. Si une extension échoue sur une RTX 5090, vérifiez qu’elle est à jour avant de soupçonner la carte.
Impossible de mettre à jour le pilote : choisissez-le avant le lancement
Le pilote fait partie du système d’exploitation de l’hôte. Votre serveur est un conteneur qui reçoit les bibliothèques du pilote de l’extérieur. Installer un paquet de pilote à l’intérieur ne change rien d’utile et peut casser ces bibliothèques. Le paquet de compatibilité ascendante de NVIDIA n’aide que sur les cartes de data center et ne constitue pas une solution générale.
VRAMfarm affiche le pilote et la version CUDA de chaque machine avant le lancement, dans l’assistant de lancement du tableau de bord et dans le catalogue des serveurs, où vous pouvez filtrer par version CUDA minimale. Choisissez-les comme vous choisissez la mémoire :
- une pile en cu128 → CUDA 12.8 ou plus récent, pilote 570 ou plus récent ;
- cu130 → CUDA 13.0 ou plus récent, pilote 580 ou plus récent ;
- un ancien projet en cu118 → n’importe quel pilote actuel, mais pas une carte Blackwell.
Pour votre propre image Docker, partez de la version de CUDA la plus basse dont votre pile a réellement besoin, pas de la plus récente. Une image sur CUDA 12.6 démarre sur plus de machines qu’une image sur 13.0. Si une erreur de version persiste après ces vérifications, écrivez au support avec le texte de l’erreur et la sortie des trois commandes ci-dessus : cela suffit généralement à trouver la cause. Les autres questions fréquentes sur les serveurs trouvent leur réponse dans la FAQ.