torch.cuda.is_available()がFalseでGPUを使えないときの対処

GPUマシンなのに、PyTorchがGPUを認識しない。

import torch
print(torch.cuda.is_available()) # False になってしまう

原因の大半は2つ。CPU版のtorchを入れてしまったか、torchが想定するCUDAバージョンと環境が合っていないかだ。

まず入っているtorchを確認する

import torch
print(torch.__version__, torch.version.cuda)

torch.version.cudaNone と出たら、それはCPU版だ。GPUは使えない。バージョン名に +cpu が付いている場合も同じ。

ドライバを確認する

ターミナルでGPUとドライバを確認する。

nvidia-smi

ここでGPUが見えていれば、ハードとドライバは問題なし。あとはtorch側の問題に絞れる。

CUDA対応版を入れ直す

pytorch.org が、環境に合うインストールコマンド(CUDAバージョン指定の index-url 付き)を提示してくれる。それに従って入れ直すのが確実だ。CPU版をうっかり入れると今回の状態になるので、CUDA版を明示して入れる。

# 例(CUDAバージョンは自分の環境に合わせる。公式サイトでコマンドを確認)
pip install torch --index-url https://download.pytorch.org/whl/cu121

まとめ

  • torch.version.cuda が None なら CPU版。入れ直す
  • nvidia-smi でドライバとGPUを確認
  • pytorch.org の指示どおりCUDA対応版を入れる
  • 仮想環境を間違えて別のtorchを見ていないかも確認する