GPUcloud

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

Causes et correctifs
CauseComment la reconnaîtreCorrectif
Mac (puce Apple ou Intel)platform.system() vaut Darwin, nvidia-smi n’existe pasCUDA 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 introuvableCUDA est propre à NVIDIA. Il te faut une carte NVIDIA, sur ton poste ou louée à l’heure.
PyTorch installé sans CUDAtorch.version.cuda vaut None, ou la version se termine par +cpuRéinstalle la version CUDA de PyTorch (commande ci-dessous).
Pilote NVIDIA absent ou trop anciennvidia-smi échoue, ou affiche une version de CUDA plus ancienne que celle de PyTorchInstalle ou mets à jour le pilote NVIDIA, ou choisis une version de PyTorch compatible avec ton pilote.
Conteneur Docker sans accès au GPUnvidia-smi marche sur la machine, pas dans le conteneurLance le conteneur avec --gpus all ; la machine doit avoir le NVIDIA Container Toolkit.
GPU masqué par une variableCUDA_VISIBLE_DEVICES est vide ou vaut -1Retire la variable, ou donne l’index du GPU (0).
WSL2 sous Windowsnvidia-smi échoue dans LinuxInstalle 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-smi

Sur 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.

Serveurs à 1 GPU, du moins cher au plus cher
GPUMémoire (VRAM)À la demande, par heureSpot, par heure
NVIDIA RTX A600048 Go0,67 $0,54 $
NVIDIA L4048 Go1,34 $1,07 $
NVIDIA A100 PCIe80 Go1,81 $1,45 $
NVIDIA RTX PRO 600096 Go2,48 $1,98 $
NVIDIA H100 PCIe80 Go3,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