Guide GPU
torch.cuda.is_available() renvoie False : causes et correctifs (Mac, PC sans NVIDIA, Docker)
Mis à jour le
Réponse courte
Sur un Mac ou un PC sans carte NVIDIA, CUDA n’existe pas : torch.cuda.is_available() renvoie toujours False et aucun réglage n’y change rien, il te faut un GPU NVIDIA, par exemple loué à l’heure chez GPU Cloud dès 0,67 $ CA/h au Canada. Sur une machine NVIDIA, les causes courantes sont une version de PyTorch sans CUDA, un pilote absent ou trop ancien, ou un conteneur lancé sans --gpus all.
Le diagnostic en une commande
Lance ce script : il dit sur quel système tu es, si ta version de PyTorch a été construite pour CUDA, et si une variable masque le GPU.
import os, platform
import torch
print("system :", platform.system(), platform.machine())
print("torch :", torch.__version__)
print("built for CUDA:", torch.version.cuda) # None = PyTorch without CUDA
print("cuda available:", torch.cuda.is_available())
print("CUDA_VISIBLE_DEVICES:", os.environ.get("CUDA_VISIBLE_DEVICES"))
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
elif torch.backends.mps.is_available():
print("Apple GPU (MPS): no CUDA on this machine")Les causes et leurs correctifs
| Cause | Comment la reconnaître | Correctif |
|---|---|---|
| Mac (puce Apple ou Intel) | platform.system() vaut Darwin, nvidia-smi n’existe pas | CUDA n’existe pas sur Mac. Utilise mps pour de petits essais, ou un serveur GPU NVIDIA pour du code CUDA. |
| PC sans carte NVIDIA (AMD, Intel) | nvidia-smi est introuvable | CUDA est propre à NVIDIA. Il te faut une carte NVIDIA, sur ton poste ou louée à l’heure. |
| PyTorch installé sans CUDA | torch.version.cuda vaut None, ou la version se termine par +cpu | Réinstalle la version CUDA de PyTorch (commande ci-dessous). |
| Pilote NVIDIA absent ou trop ancien | nvidia-smi échoue, ou affiche une version de CUDA plus ancienne que celle de PyTorch | Installe ou mets à jour le pilote NVIDIA, ou choisis une version de PyTorch compatible avec ton pilote. |
| Conteneur Docker sans accès au GPU | nvidia-smi marche sur la machine, pas dans le conteneur | Lance le conteneur avec --gpus all ; la machine doit avoir le NVIDIA Container Toolkit. |
| GPU masqué par une variable | CUDA_VISIBLE_DEVICES est vide ou vaut -1 | Retire la variable, ou donne l’index du GPU (0). |
| WSL2 sous Windows | nvidia-smi échoue dans Linux | Installe le pilote NVIDIA pour Windows qui prend en charge WSL, sans installer de pilote Linux dans WSL. |
Réinstaller PyTorch avec CUDA
Si torch.version.cuda vaut None, tu as la version pour processeur. Réinstalle une version CUDA ; le sélecteur du site pytorch.org donne la commande exacte pour ton système et ton pilote.
pip uninstall -y torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
python -c "import torch; print(torch.version.cuda, torch.cuda.is_available())"Dans Docker
Un conteneur ne voit pas le GPU par défaut. Il faut le demander au lancement, et la machine hôte doit avoir le pilote NVIDIA et le NVIDIA Container Toolkit.
# Le conteneur ne voit le GPU que si tu le demandes
docker run --rm --gpus all ton-image nvidia-smiSur Mac : MPS pour tester, un GPU NVIDIA pour CUDA
Les Mac ont un GPU que PyTorch utilise par mps, pratique pour de petits essais. Mais le code qui exige CUDA (noyaux CUDA, bitsandbytes, vLLM, beaucoup de scripts d’entraînement) ne tourne pas sur Mac. Écris ton code pour qu’il choisisse son device : CUDA s’il existe, sinon MPS, sinon le processeur.
import torch
if torch.cuda.is_available():
device = torch.device("cuda")
elif torch.backends.mps.is_available():
device = torch.device("mps")
else:
device = torch.device("cpu")
model = model.to(device)La solution sans carte NVIDIA : un GPU à l’heure
Le modèle PyTorch (CUDA) de GPU Cloud livre un serveur Ubuntu avec le pilote NVIDIA, CUDA et PyTorch prêts dans /opt/pytorch, activés à la connexion SSH. Une RTX A6000 de 48 Go coûte 0,67 $ CA/h. Le guide pour lancer ton script sur un GPU montre chaque étape, de la copie du projet à l’arrêt des frais.
| GPU | Mémoire (VRAM) | À la demande, par heure | Spot, par heure |
|---|---|---|---|
| NVIDIA RTX A6000 | 48 Go | 0,67 $ | 0,54 $ |
| NVIDIA L40 | 48 Go | 1,34 $ | 1,07 $ |
| NVIDIA A100 PCIe | 80 Go | 1,81 $ | 1,45 $ |
| NVIDIA RTX PRO 6000 | 96 Go | 2,48 $ | 1,98 $ |
| NVIDIA H100 PCIe | 80 Go | 3,35 $ | 2,68 $ |
Prix d’un serveur à 1 GPU en dollars canadiens, taxes en sus, lus dans le catalogue au moment de la publication de la page.
Ce qu’il faut savoir avant de lancer
- La facturation se fait à l’heure, au tarif horaire du serveur, à partir d’un crédit prépayé. Il n’y a pas de facturation à la minute, et la première heure est prélevée au déploiement.
- Un serveur arrêté reste facturé au plein tarif horaire. Pour payer moins, hiberne-le (0,02 $ par heure (environ 14,60 $ par mois), disque conservé) ou supprime-le. Une machine Spot ne s’hiberne pas : supprime-la quand tu as fini.
- La recharge minimale est de 25,00 $ CA, payée par carte de crédit.
- Les serveurs et leurs disques restent au Canada (région canada-montreal, à Montréal). Les renseignements du compte (identité, facturation, courriels) peuvent être traités hors du Québec, comme l’explique la politique de confidentialité.
Questions fréquentes
PyTorch peut-il utiliser CUDA sur un Mac M1, M2, M3 ou M4 ?
Non. CUDA est propre aux cartes NVIDIA, que les Mac n’ont pas. PyTorch utilise le GPU d’Apple par mps, mais le code qui exige CUDA demande un GPU NVIDIA.
Pourquoi torch.cuda.is_available() renvoie False dans Docker ?
Parce que le conteneur a été lancé sans --gpus all, ou parce que la machine hôte n’a pas le NVIDIA Container Toolkit. Vérifie avec docker run --rm --gpus all ton-image nvidia-smi.
Comment savoir si mon PyTorch a été construit avec CUDA ?
torch.version.cuda donne la version de CUDA visée, ou None pour une version processeur seulement.
Le serveur GPU Cloud a-t-il CUDA ?
Oui. Les images sont des Ubuntu avec le pilote NVIDIA, CUDA et Docker, et le modèle PyTorch (CUDA) installe PyTorch dans /opt/pytorch, activé à la connexion SSH.
Combien coûte un GPU NVIDIA à l’heure ?
Dès 0,67 $ CA/h pour une RTX A6000 de 48 Go, en dollars canadiens, taxes en sus, facturé à l’heure à partir d’un crédit prépayé.
Tu veux du GPU ? On est là.
Lance un serveur GPU NVIDIA à l’heure au Canada, payé en dollars canadiens par carte de crédit, ou réserve un GPU pour une date précise.
Autres guides
- Ton IA te dit qu’il te faut un GPU ? Lance ton script Python sur un GPU en quelques minutes
- CUDA out of memory : causes, correctifs, et quand passer à un GPU avec plus de VRAM
- Combien coûte un GPU à l’heure au Canada, en dollars canadiens ?
- API OpenAI trop chère ? Héberge ton LLM sur un GPU à l’heure, au Canada
- Louer un GPU à l’heure au Canada : prix, étapes et facturation
- GPU cloud à Montréal, au Canada : serveurs GPU NVIDIA hébergés au pays
- Louer une H100 au Canada : PCIe, NVLink ou SXM, à l’heure
- Quel GPU pour fine-tuner un LLM ? Mémoire, machine et coût
- GPU cloud pas cher : comment payer le moins possible pour un GPU