① 結論
結論:
torch.cuda.is_available() が False になる原因の多くは、
(1)GPUドライバが正しく入っていない、または
(2)CUDA対応のPyTorchを入れていない(CPU版を入れている)ことです。
まず nvidia-smi でGPUがOSから見えているか確認し、
次にPyTorchがCUDA対応ビルドかを確認して、対応版PyTorchを再インストールすれば解決します。
「GPUはあるのにPyTorchだけ見えない」場合はPyTorch(CUDA対応版)の問題が多く、
「そもそもnvidia-smiが出ない」場合はドライバ/環境側の問題が濃厚です。
② 起きている症状
pythonでtorch.cuda.is_available()を実行するとFalse- 学習がCPUで走り、GPUが使われない
RuntimeError: CUDA errorやCUDA driver not foundが出ることがある- 別環境(別PC)ではGPUが使えるが、今回の環境では使えない
③ よくある原因(優先度順)
原因①:GPUドライバがOSに正しく認識されていない
【詳細】
PyTorchがCUDAを使う前提として、OSがGPUとドライバを正常に認識している必要があります。
ドライバが未導入・古い・破損していると、PyTorch以前にCUDAが利用できません。
特にWindows/WSL環境では、Windows側のNVIDIAドライバが正しく入っていないと、WSLからGPUが見えません。
起きやすい条件:
・PC初期セットアップ直後
・GPUドライバ更新に失敗した/長期間更新していない
・WSLを使い始めたばかり(WSL用GPU環境が未整備)
判断ポイント:
以下を実行し、GPU情報が表示されない(またはコマンド自体が見つからない)場合は、この原因に該当します。
nvidia-smi
原因②:CUDA対応のPyTorchを入れていない(CPU版PyTorch)
【詳細】
PyTorchにはCPU版とCUDA版があり、CPU版を入れているとGPUが存在していても
torch.cuda.is_available() は False になります。
また、pipで何も考えずに pip install torch を実行すると、
環境やタイミングによってはCPU版が入ることがあります。
起きやすい条件:
・初回インストール時に公式のCUDA対応手順を見ていない
・requirements.txtにtorchだけが書かれていてCUDA版指定がない
・仮想環境を作り直した直後に再インストールした
判断ポイント:
以下を実行し、PyTorchがCUDA対応ビルドかを確認します。
torch.version.cuda が None の場合、CUDA非対応(CPU版)の可能性が高いです。
python -c "import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available())"
原因③:CUDA(PyTorch)と環境(ドライバ/WSL)の組み合わせが不一致
【詳細】
CUDAは「PyTorchが想定するCUDAバージョン」と「環境側のドライバ」が噛み合わないと動作しません。
たとえば、PyTorchが特定のCUDAランタイム前提で配布されているのに、
ドライバが古いとGPUが使えない(または実行時エラー)になります。
またWSLの場合、Windows側のドライバがWSL対応であることが前提です。
起きやすい条件:
・GPUドライバが古いまま
・PyTorchを別のCUDAバージョン向けで入れている
・WSL/Windows Updateの後に急に動かなくなった
判断ポイント:
nvidia-smi は表示されるのに、PyTorchが False のままの場合、
この原因(②または③)が濃厚です。
また、実行時に CUDA initialization error などが出る場合もここに該当します。
④ 切り分け手順(上から順に実行)
手順1:OSがGPUを認識しているか確認(最重要)
nvidia-smi
ここでGPUが表示されない場合、PyTorch以前の問題です(原因①)。
まずドライバ側を解決してください。
手順2:PyTorchがCUDA対応か確認
python -c "import torch; print(torch.version.cuda); print(torch.cuda.is_available())"
torch.version.cuda が None ならCPU版の可能性が高いです(原因②)。
手順3:PyTorchのインストール状況を確認
python -m pip show torch
仮想環境を使っている場合は、必ずactivateした状態で実行してください。
⑤ 具体的な解決方法
解決策①:CUDA対応のPyTorchを入れ直す(最短で効く)
まず現在のtorchをアンインストールし、CUDA対応版を入れ直します。
python -m pip uninstall -y torch torchvision torchaudio
次に、CUDA対応版をインストールします(例:cu118)。
※ 環境により最適なCUDA版は変わるため、インストール後に必ず動作確認します。
python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
解決策②:動作確認(ここまでで直っているか確認)
python -c "import torch; print(torch.version.cuda); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'no gpu')"
解決策③:仮想環境を作り直してクリーンにする
依存関係の衝突が疑われる場合は、venvを作り直すのが最短です。
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
⑥ 再発防止チェックリスト
- torchは「CUDA対応版」を入れる(CPU版を避ける)
nvidia-smiでOS側のGPU認識を先に確認する(切り分けの基本)- 仮想環境(venv)を使って依存関係を分離する(衝突防止)
- requirements.txtにtorchの導入方法を明記する(再構築を最短化)
⑦ それでも解決しない場合の次の一手
- CUDA関連のエラー全文で再検索(エラー種別で対処が変わる)
- まずCPUで動作確認し、問題がCUDAだけかを切り分ける
python -c "import torch; x=torch.randn(1); print(x)"
- 最終手段:新しいvenvで最小コード(torch import→is_available)だけ試し、プロジェクト固有の衝突か確認する

コメント