
torch.cuda.is_available() が False なら、実行中のPythonからCUDAを利用できない状態です。GPU(並列計算に使うプロセッサー)のドライバーだけでなく、CPU向けのPyTorch、別の仮想環境、GPUを隠す設定、WSLやコンテナーへのGPU公開なども確認対象になります。いきなりCUDAを入れ直すより、使っているPython・PyTorchのビルド・実行環境を順に記録すると、調べる場所を絞れます。
この記事はNVIDIA GPUを中心に、2026年9月10日に確認した公式資料を基に整理しています。CPU版PyTorch 2.6.0での診断は検証し、GPU上の演算成功やWindows・Mac・ROCm・コンテナーでの全手順は未検証です。検証用の版を、現在のすべての環境への推奨版として扱うものではありません。
Falseは「パソコンにGPUがない」という意味?
この関数が返すのは、PyTorchの現在のプロセスでCUDAを利用できるかどうかです。GPUの物理的な有無、他のアプリで使えるかどうか、目的のモデルがメモリへ収まるかは別に確認します。PyTorch:torch.cuda.is_available
CUDA(NVIDIAのGPU計算基盤)を使う場合と、ほかのGPU向けの実行方式は分けて考えます。
| 使う環境 | 主な確認先 | 注意点 |
|---|---|---|
| NVIDIAのCUDA版PyTorch | torch.cuda.is_available()・torch.version.cuda |
GPUが搭載されていてもCPU版のPyTorchでは利用できない |
| AMDのROCm版PyTorch | torch.cuda.is_available()・torch.version.hip |
ROCm(AMDのGPU計算基盤)でも torch.cuda の名前を使う |
| MacのMPS | torch.backends.mps.is_available() |
MPS(AppleのGPU処理基盤)はCUDAとは別の確認先 |
ROCm版では torch.version.cuda が None でも、直ちにCPU専用とは判断できません。torch.version.hip も確認します。対応GPUやOSは利用する配布物の条件を確認してください。PyTorch:HIP semantics、PyTorch:MPS backend
以下はNVIDIAを使いたい場合の切り分けです。
まず、失敗しているPythonで診断する
次のコードを check_torch.py として保存し、問題が起きている環境で実行します。Notebook(コードと結果をセルで扱う実行環境)なら、そのNotebookのセルで実行してください。端末では動くのにNotebookでは失敗する場合、端末の結果だけでは原因を絞れません。
import os
import sys
import torch
# 別のPythonや別のtorchを見ていないか、同じプロセス内で確認する。
print("python:", sys.executable)
print("torch file:", torch.__file__)
print("torch version:", torch.__version__)
print("cuda build:", torch.version.cuda)
print("hip build:", torch.version.hip)
print("CUDA_VISIBLE_DEVICES:", repr(os.environ.get("CUDA_VISIBLE_DEVICES")))
print("cuda available:", torch.cuda.is_available())
print("device count:", torch.cuda.device_count())
WindowsのPowerShell、またはLinuxのBashでは次のように実行できます。Linuxでコマンド名が python3 の場合は、以降も同じPythonへそろえてください。
# 実際のアプリと同じPythonを使い、診断対象を一致させる。
python check_torch.py
python -m pip show torch
import torch 自体が ModuleNotFoundError になる場合は、そのPythonにPyTorchが入っていない可能性があります。DLL(共有ライブラリ)の読み込みエラーなら、まだ is_available() の判定へ到達していません。エラー全文を残し、パッケージの導入状態や依存関係を先に確認します。
CPU版で確認した出力
隔離したLinux環境で、Python 3.12.3と公式CPU版PyTorch 2.6.0を使い、診断項目を確認しました。以下は診断値の抜粋です。検証環境ではNumPy未導入の警告も出ましたが、下記の診断値は取得できました。
torch version: 2.6.0+cpu
cuda build: None
hip build: None
CUDA_VISIBLE_DEVICES: None
cuda available: False
device count: 0
このケースでは、読み込んだPyTorchがCUDA対応ビルドではありません。ドライバーだけを更新しても、そのCPU版がCUDA版へ切り替わることはありません。出力はこの検証条件の例で、すべての False の原因がCPU版だという意味ではありません。
診断結果から次の確認を選ぶ
| 結果 | 疑う範囲 | 次に確認すること |
|---|---|---|
python や torch file が想定外 |
仮想環境・実行設定 | アプリ、端末、Notebookで同じPythonか |
NVIDIAを使う予定で cuda build が None |
PyTorchの配布ビルド | hip build も確認し、公式のCUDA向け配布物と照合 |
cuda build は値あり、cuda available は False |
ドライバー・GPUの可視性・初期化 | nvidia-smi、環境変数、WSL・コンテナーの設定 |
CUDA_VISIBLE_DEVICES が '-1' |
起動時のGPU制限 | 誰が設定した値か、割当条件に合っているか |
cuda available は True だが演算に失敗 |
GPU世代対応・メモリ・演算実装など | 最小演算と実際のエラーを確認 |

図はPyTorch公式資料を基に整理したNVIDIA向けの確認先です。Mac・ROCmは前述の条件で確認します。
CUDA_VISIBLE_DEVICES はプロセスへ公開するGPUを指定する環境変数で、-1 はGPUを公開しない設定です。クラウドや共有計算機では割当のために使われることがあるので、意味を確認せず解除しないでください。変更が必要なら、Pythonを起動する側の設定を修正し、Notebookのカーネルを含めプロセスを再起動して確認します。PyTorch:CUDA環境変数
Pythonとインストール先をそろえる
pip install を実行した端末と、アプリを動かすPythonが違えば、入れ直しても結果は変わりません。sys.executable は実行中Pythonの場所、torch.__file__ は読み込んだtorchの場所を示します。プロジェクト内の torch.py など想定外のファイルを指している場合も、公式パッケージを読み込んでいるか確認します。
python -m pip は、その python に対応するpipを起動します。pip 単独のコマンド名より、操作するPythonを明示できます。pip:User Guide
入れ直す前に、公式の組合せを選ぶ
PyTorch:Start LocallyでOS、パッケージ形式、Python、計算基盤を選び、表示されるインストールコマンドを使います。既存プロジェクトで版が固定されているなら、PyTorch:Previous Versionsで対応する組合せを確認します。
| 方法 | 向いている状況 | トレードオフ |
|---|---|---|
| 新しい仮想環境で試す | 依存関係が混在している・既存環境を残したい | 追加のディスク容量と環境設定が必要 |
| 既存環境のPyTorchを変更する | 必要なバージョンと依存関係を把握している | ほかのパッケージとの整合性確認が必要 |
torchvision や torchaudio も使う場合は、torchだけを個別に新しくせず対応表に従います。公式コマンドの --index-url やバージョン指定を省略すると、選んだ配布物と異なるものを入れる可能性があります。
インストール後はアプリやNotebookカーネルを再起動し、同じ診断コードを実行します。新しい端末だけの成功ではなく、元の問題が起きた実行場所で確認してください。
nvidia-smiが動くのにFalseになる理由
NVIDIAの確認コマンドを、まずPyTorchを実行する環境から試します。
# PyTorchとは別に、ドライバー側からGPUが見えるか調べる。
nvidia-smi
GPU名やドライバー情報が出れば、ドライバーの管理機能からGPUを観測できています。ただし、これだけでPyTorchのCUDA演算まで成功するとは言えません。CPU版を読み込んでいたり、プロセス側の公開範囲が制限されていたりする場合は、結果が異なります。
nvidia-smi が見つからないときは、コマンドのパスを確認します。見つかるがドライバーと通信できない場合は、そのエラーを記録し、ドライバー・GPUの状態を確認してください。コマンド未発見だけでGPU未搭載と断定しないことも大切です。
三つの「CUDAのバージョン」を混同しない
| 表示・コマンド | 表しているもの | そこからは分からないこと |
|---|---|---|
nvidia-smi の CUDA Version |
ドライバー側が対応するCUDAの情報 | 読み込んだPyTorchのビルド |
torch.version.cuda |
PyTorchがビルドされたCUDAの版 | そのプロセスでGPU利用が成功するか |
nvcc --version |
ローカルCUDA Toolkitのコンパイラーの版 | PyTorch配布物のCUDA対応状況 |

図はNVIDIAとPyTorchの資料を基に独自作成しています。同じ「CUDA」の表記でも、ドライバー・ビルド・コンパイラーという異なる場所を見ています。
NVIDIAの資料では、新しい表示名として CUDA UMD Version も説明されています。表示名やレイアウトが変わっても、ドライバー側の情報とPyTorchのビルド情報を分ける点は同じです。NVIDIA:nvidia-smi
通常のPyTorch配布バイナリはCUDA実行時の依存ライブラリを伴います。ローカルにCUDA Toolkitを入れることは、CPU版PyTorchをCUDA版に変える操作ではありません。Toolkitは、PyTorch本体や独自CUDA拡張をソースからビルドする場合に関係します。PyTorch公式フォーラム:CUDA installationの検出
一方、NVIDIAドライバーは必要です。PyTorchのCUDA系統とドライバーの互換条件を確認し、文字列のバージョンが同じかだけで判断しないでください。古いGPUでは、選んだPyTorch配布物がそのGPU世代をサポートするかも確認が必要です。NVIDIA:CUDA互換性
Notebook・WSL・Dockerでは「どこで動くか」を確認する
NotebookだけFalseになる
Notebookはカーネル(セルのコードを実行するPythonプロセス)を使います。セル内の sys.executable と、端末の診断結果を比べ、利用したい仮想環境のカーネルを選びます。パッケージを変更した後も、すでに起動中のカーネルが古いモジュールを保持している場合があるため、再起動して確かめます。
WSL2でFalseになる
WSL2(Windows上でLinuxを動かす環境)では、Windowsに入れたPythonとWSL内のPythonは別です。Windows側の成功を確認したら、PyTorchの診断はWSL内でも行います。
NVIDIAのWSLガイドではWindows側のGPUドライバーを使用し、WSL内へLinuxのディスプレイドライバーを入れないよう案内しています。WSL内で nvidia-smi が見つからない場合は、次の場所にあるか確認できます。NVIDIA:CUDA on WSL
# WSLでは通常のPATHから見つからない場合があるため、既知の配置先を確認する。
/usr/lib/wsl/lib/nvidia-smi
Windows側のPowerShellでは wsl --list --verbose で対象がWSL2かを確認します。WSL内のドライバーを闇雲に追加する前に、WindowsドライバーとWSLの対応条件を確認してください。
Dockerの中だけFalseになる
コンテナーは、ホストで使えるGPUを自動で自由に使えるとは限りません。NVIDIA Container Toolkitなどの実行基盤と、--gpus などの起動時の公開設定を確認します。設定方法はDockerの実行環境によって異なります。NVIDIA:Container Toolkitのサンプル実行
ホストの nvidia-smi、コンテナー内の nvidia-smi、コンテナー内Pythonの診断を分けます。コンテナー内でGPUが見えていても、そこで読み込んだPyTorchがCPU版ならCUDAを使えません。すでに動いているコンテナーでは、起動時設定の見直しや作り直しが必要な場合があります。
Trueになった後は小さな演算で確認する
利用可否が True になったら、モデル全体を動かす前に小さなテンソル(数値の配列)で確認します。次は確認用に独自作成したコードです。
import torch
# CUDAが使えないときに黙ってCPUへ切り替えると、診断の成否が曖昧になる。
if not torch.cuda.is_available():
raise RuntimeError("CUDA is not available in this Python process")
x: torch.Tensor = torch.tensor([1.0, 2.0, 3.0], device="cuda")
y: torch.Tensor = x * 2
# 非同期のGPU処理で起きた失敗も、この確認処理内で表面化させる。
torch.cuda.synchronize()
print("device:", y.device)
print("result:", y.cpu().tolist())
成功した場合はデバイスが cuda:0 などになり、結果は [2.0, 4.0, 6.0] になります。これは期待する結果であり、この記事でGPU実行を実測したログではありません。PyTorch:CUDA semantics
ここで no kernel image is available などが出る場合はGPU世代と配布物の対応を、メモリ不足なら必要メモリやほかの処理を確認します。小さな演算が成功しても、大きなモデルやすべての演算の成功を保証するものではありません。
相談時は、診断結果、OS、実行場所、GPU名、ドライバー版、インストールに使ったコマンド、警告を含むエラー全文をまとめると原因を共有しやすくなります。パスに含まれる個人名や、認証付きのパッケージURLは伏せて共有してください。
OllamaでGPUを使う場合はアプリ側の実行環境が異なるため、OllamaがGPUを使わないときの対処法も参考にしてください。



コメント