はい、承知いたしました。PyTorchのCUDAエラー「torch not compiled with cuda enabled」の詳細な対処法に関する記事を記述します。約5000語を目指し、具体的な手順、原因、背景情報を含めて詳しく解説します。
PyTorch CUDAエラー「torch not compiled with cuda enabled」の完全対処法:詳細解説
ディープラーニングの世界では、PyTorchはその柔軟性と使いやすさから多くの研究者や開発者に愛用されています。しかし、計算コストの高いニューラルネットワークの学習や推論には、CPUだけでは時間がかかりすぎることがほとんどです。ここで重要になるのが、NVIDIA製のGPUとその並列計算技術であるCUDA(Compute Unified Device Architecture)です。PyTorchはCUDAを利用することで、GPU上で高速な計算を実行できます。
しかし、PyTorchをインストールし、いざGPUを使おうとした際に、「torch not compiled with cuda enabled」というエラーメッセージに遭遇し、困惑した経験を持つ方もいるかもしれません。このエラーは、PyTorchライブラリ自体がGPU(CUDA)をサポートするようにコンパイルされていないバージョンであることを示しています。つまり、インストールしたPyTorchが、GPUを使うための機能を持っていない状態です。
この記事では、このエラーが発生する原因から、それを解決するための詳細な手順、さらに将来的なエラー発生を防ぐためのベストプラクティスまで、約5000語にわたって徹底的に解説します。
1. エラーの理解:「torch not compiled with cuda enabled」とは何か?
まず、このエラーメッセージが正確に何を意味するのかを理解しましょう。
torch not compiled with cuda enabled
これは文字通り、「PyTorchはCUDAが有効な状態でコンパイルされていません」という意味です。PyTorchは、様々な環境で動作するようにビルド(コンパイル)されています。大きく分けて、以下の2つの主要なバージョンがあります。
- CPU版: CPU上でのみ動作するようにコンパイルされたバージョン。GPUは利用できません。
- GPU版 (CUDA版): NVIDIA GPU上で動作するように、CUDAツールキットを利用してコンパイルされたバージョン。GPUによる高速計算が可能です。
このエラーメッセージは、あなたがPyTorchのCPU版をインストールしているにも関わらず、コード内でGPU (CUDA) を利用しようとした際に発生します。例えば、以下のようなコードを実行しようとした場合です。
“`python
import torch
CUDAが利用可能かチェック
if torch.cuda.is_available():
# GPUデバイスを指定
device = torch.device(“cuda”)
print(“GPUが利用可能です!”)
# GPU上でテンソルを作成しようとする
x = torch.randn(3, 3).to(device)
print(f”GPU上のテンソル:\n{x}”)
else:
print(“GPUは利用できません。CPUを使用します。”)
device = torch.device(“cpu”)
x = torch.randn(3, 3).to(device)
print(f”CPU上のテンソル:\n{x}”)
もしくは、直接 .cuda() メソッドを呼び出す場合
model = your_model.cuda()
tensor = some_tensor.cuda()
“`
上記のコードで、torch.cuda.is_available()
が False
を返す場合でも、device = torch.device("cuda")
や .cuda()
を呼び出そうとすると、このエラーが発生します。これは、PyTorchライブラリ自体に torch.cuda
という名前空間が存在しないか、存在してもその中の関数がスタブ(何もしないか、エラーを発生させるだけの最小限の実装)になっているためです。GPU機能がコンパイル時に組み込まれていないため、実行時にその機能が見つからない、というわけです。
2. なぜこのエラーが発生するのか?一般的な原因
このエラーが発生する最も一般的な原因は、PyTorchの誤ったインストールです。具体的には、以下のシナリオが考えられます。
-
PyTorchのインストール時にGPUサポートを指定しなかった:
- 最もよくある原因です。pipやcondaでPyTorchをインストールする際に、単に
pip install torch
やconda install pytorch
と実行した場合、デフォルトではCPU版がインストールされることがあります(特にpipの場合、CUDA版のURLを指定しないとCPU版が優先される傾向があります)。 - CUDA対応版をインストールするには、追加のパッケージ (
cudatoolkit
など) を指定したり、特定のダウンロードURL (--index-url
やチャネル指定-c
) を指定する必要があります。これらを忘れるとCPU版がインストールされてしまいます。
- 最もよくある原因です。pipやcondaでPyTorchをインストールする際に、単に
-
複数のPython環境があり、意図しない環境でPyTorchを実行している:
- PCに複数のPythonバージョンや仮想環境(venv, conda env)が存在する場合、GPU対応版をインストールした環境とは別の、CPU版しかインストールされていない環境でスクリプトを実行してしまっている可能性があります。環境が正しくアクティベートされていない、あるいはスクリプトが意図しないPythonインタープリターで実行されている、といった状況です。
-
過去にCPU版をインストールしており、GPU版をインストールしたつもりでも更新されていない:
- 以前にCPU版のPyTorchをインストールした環境で、後から同じ環境にGPU版を上書きインストールしようとした場合、古いCPU版のファイルが完全に削除されず、競合が発生している可能性があります。
-
システム側の問題(NVIDIAドライバー、CUDA Toolkitのバージョン不一致など) – 直接的な原因ではないが関連する場合:
- このエラーメッセージ自体はPyTorchのコンパイル状態に関するものなので、システム側のドライバーやCUDA Toolkitのインストール状況が直接の原因ではありません。しかし、システムに必要なドライバーやCUDA Toolkitがインストールされていなかったり、バージョンがPyTorchがコンパイルされたCUDAバージョンと互換性がない場合、そもそもPyTorchのGPU版をインストールするための条件が満たせないことがあります。また、たとえGPU版がインストールできたとしても、その後に
torch.cuda.is_available()
がFalse
になる原因となり得ます。そのため、問題解決のためにはシステム側の確認も重要になります。
- このエラーメッセージ自体はPyTorchのコンパイル状態に関するものなので、システム側のドライバーやCUDA Toolkitのインストール状況が直接の原因ではありません。しかし、システムに必要なドライバーやCUDA Toolkitがインストールされていなかったり、バージョンがPyTorchがコンパイルされたCUDAバージョンと互換性がない場合、そもそもPyTorchのGPU版をインストールするための条件が満たせないことがあります。また、たとえGPU版がインストールできたとしても、その後に
3. 現在のPyTorchインストールの確認方法
エラーメッセージが出ている、あるいはGPUが使えないと感じたら、まず現在インストールされているPyTorchがCUDA対応版であるかを確認しましょう。以下のコードを実行します。
“`python
import torch
import platform
print(f”PyTorchバージョン: {torch.version}”)
print(f”OS: {platform.system()} {platform.release()}”)
print(f”Pythonバージョン: {platform.python_version()}”)
print(f”CUDAが利用可能か: {torch.cuda.is_available()}”)
if torch.cuda.is_available():
print(f”利用可能なGPU数: {torch.cuda.device_count()}”)
print(f”使用中のGPUインデックス: {torch.cuda.current_device()}”)
print(f”GPU名: {torch.cuda.get_device_name(0)}”) # 0番目のGPU名を表示
print(f”PyTorchがコンパイルされたCUDAバージョン: {torch.version.cuda}”)
# PyTorchがリンクしているcuDNNバージョンも確認(深層学習ライブラリ)
print(f”PyTorchがリンクしているcuDNNバージョン: {torch.backends.cudnn.version()}”)
else:
print(“PyTorchはGPUサポートなしでインストールされているか、GPUデバイスが利用できません。”)
print(f”PyTorchがコンパイルされたCUDAバージョン: {torch.version.cuda}”)
“`
このコードの出力で最も重要なのは、以下の2点です。
CUDAが利用可能か: torch.cuda.is_available()
- これが
False
の場合、GPUは使えません。PyTorchがCPU版であるか、システム側の問題でGPUを認識できていない可能性があります。
- これが
PyTorchがコンパイルされたCUDAバージョン: torch.version.cuda
- これが
None
または'0.0'
のような値の場合、インストールされているPyTorchはCUDAサポートなしでコンパイルされています。つまり、これがエラーの直接的な原因です。 - 具体的なバージョン番号 (例:
'11.8'
,'12.1'
) が表示されれば、PyTorch自体はCUDA対応版としてインストールされています。この場合、エラーの原因はシステム側の問題(ドライバー、CUDA Toolkitのバージョン不一致など)である可能性が高いです。
- これが
今回のエラー「torch not compiled with cuda enabled」は、主に torch.version.cuda
が None
または '0.0'
と表示されるケースに対応します。
4. エラー解決のためのステップバイステップ詳細手順
エラーの原因が、PyTorchがCUDA有効でコンパイルされていないことにあると特定できた場合、解決策は「CUDA有効版のPyTorchを正しくインストールし直すこと」です。
ここでは、最も推奨される方法である「PyTorch公式サイトからのインストール」を中心に、詳細な手順を解説します。
ステップ 1: システム環境の確認
正しいバージョンのPyTorchをインストールするために、まずは以下の情報を確認します。
- オペレーティングシステム (OS): Windows, macOS (Intel/Apple Silicon), Linux (Ubuntu, CentOSなど)
- 使用するパッケージマネージャー: pip または Conda
- 必要なPyTorchバージョン: 通常はStable(安定版)が推奨されます。特定のプロジェクトで古いバージョンが必要な場合もあります。
- NVIDIAドライバのバージョン: コマンドプロンプトやターミナルで
nvidia-smi
コマンドを実行して確認します。出力の中にDriver Versionが表示されます。
bash
nvidia-smi - システムにインストールされているCUDA Toolkitのバージョン(任意): コマンドプロンプトやターミナルで
nvcc --version
コマンドを実行して確認します。ただし、多くの場合、PyTorchのインストールでCUDA Toolkitも一緒に提供されるため、システムにCUDA ToolkitがインストールされていなくてもGPU版PyTorchは動作します。重要なのは、システムにインストールされているNVIDIAドライバが、PyTorchがコンパイルされたCUDAバージョンと互換性があることです。PyTorch公式サイトのインストールセクションに、必要なドライバの最低バージョンが記載されています。
ステップ 2: 既存のPyTorchのアンインストール
クリーンな状態で再インストールを行うために、現在インストールされているPyTorch(おそらくCPU版)をアンインストールします。
-
pipを使用した場合:
bash
pip uninstall torch torchvision torchaudio
torchvision
やtorchaudio
も一緒にインストールしている場合は、これらもアンインストールしておくと良いでしょう。pip list
やpip freeze
でインストール済みのパッケージを確認できます。 -
Condaを使用した場合:
bash
conda uninstall pytorch torchvision torchaudio cudatoolkit
Condaの場合、関連パッケージも含めてアンインストールします。conda list
でインストール済みのパッケージを確認できます。
アンインストール時に確認メッセージ (Proceed (y/n)?
) が表示されたら y
を入力してEnterを押します。
ステップ 3: PyTorch公式サイトのインストールセクションにアクセス
ウェブブラウザを開き、PyTorchの公式ウェブサイト(https://pytorch.org/)にアクセスします。
トップページにある「Install PyTorch」または「Get Started」のようなボタンをクリックし、インストールコマンドを生成するセクションに移動します。
ステップ 4: インストールオプションの選択
PyTorchのインストールセクションでは、以下のオプションを選択して、自分に適したインストールコマンドを生成します。
- PyTorch Build: Stable (安定版) を選択するのが一般的です。Nightly(開発版)は最新機能が含まれますが不安定な場合があります。
- Your OS: 使用しているOSを選択します(Linux, Windows, macOS)。
- Package: 使用するパッケージマネージャーを選択します(Conda, Pip, LibTorchなど)。通常はCondaかPipです。
- Compute Platform: ここが最も重要です。必ず CUDA を選択してください。すると、その横に利用可能なCUDAバージョンが表示されます(例: CUDA 11.8, CUDA 12.1)。
- どのCUDAバージョンを選ぶべきか? PyTorchが提供しているCUDAバージョンの中から、あなたのシステムのNVIDIAドライバーがサポートしている、最も新しいバージョンを選ぶのが推奨されます。
nvidia-smi
で確認したドライバーバージョンが、PyTorchサイトで選択肢として表示されているCUDAバージョンの必要ドライバーバージョンを満たしているか確認してください。一般的に、新しいドライバーは古いCUDAバージョンとも互換性がありますが、古いドライバーは新しいCUDAバージョンをサポートしない場合があります。迷ったら、nvidia-smi
で表示されるCUDA Versionに近いバージョンを選ぶか、PyTorchのドキュメントで互換性情報を確認してください。多くのGPUは新しいドライバーを入れることで、古いCUDAバージョンから新しいCUDAバージョンまで幅広くサポートできます。PyTorchサイトに表示されるCUDAバージョンは、PyTorchがそのバージョンでコンパイルされていることを意味します。
- どのCUDAバージョンを選ぶべきか? PyTorchが提供しているCUDAバージョンの中から、あなたのシステムのNVIDIAドライバーがサポートしている、最も新しいバージョンを選ぶのが推奨されます。
これらのオプションを選択すると、画面の下部に推奨されるインストールコマンドが表示されます。
ステップ 5: 生成されたコマンドを実行してインストール
PyTorch公式サイトで生成されたコマンドを、コマンドプロンプトまたはターミナルで実行します。必ず、PyTorchをインストールしたいPython環境(仮想環境など)をアクティベートした状態で実行してください。
以下に、一般的なコマンドの例をいくつか示しますが、必ずPyTorch公式サイトで最新の正しいコマンドを確認してください。 コマンドはバージョンやOSによって頻繁に変更されます。
-
Pipを使用する場合 (例: CUDA 11.8):
bash
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118--index-url https://download.pytorch.org/whl/cu118
: これが非常に重要です。pipは通常PyPIからパッケージを取得しますが、このオプションはPyTorchのCUDA対応版が置かれている特定のインデックスURLを指定します。cu118
の部分は、選択したCUDAバージョンに対応しています。CUDA 12.1を選んだ場合はcu121
となります。この指定がないと、デフォルトのPyPIからCPU版がダウンロードされる可能性が高いです。
-
Condaを使用する場合 (例: CUDA 11.8):
bash
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c conda-forgecudatoolkit=11.8
: Condaの場合、cudatoolkit
というパッケージを依存関係として指定します。これにより、PyTorch本体だけでなく、GPUでPyTorchを動作させるために必要なCUDAランタイムライブラリなどが同時にインストールされます。バージョン番号 (11.8
) は、選択したCUDAバージョンに対応します。-c pytorch -c conda-forge
: これらはパッケージを検索するチャネルを指定します。PyTorchとcudatoolkit
は通常pytorch
チャネルやconda-forge
チャネルから取得されます。
コマンドを実行すると、必要なパッケージがダウンロードされ、インストールが進みます。環境によっては、数分から数十分かかる場合があります。
重要な注意点:
* 仮想環境の利用を強く推奨します。 後述の「ベストプラクティス」セクションで詳しく説明しますが、システム全体にインストールするのではなく、プロジェクトごとに独立した仮想環境にPyTorchをインストールすることで、依存関係の衝突を防ぎ、環境管理が容易になります。
* コマンドは正確にコピー&ペーストしてください。 一文字でも間違えると、正しくインストールされない可能性があります。
ステップ 6: インストール後の確認
インストールが完了したら、再度Pythonインタープリターを起動し、ステップ3で実行した確認コードを実行してください。
“`python
import torch
print(f”PyTorchバージョン: {torch.version}”)
print(f”CUDAが利用可能か: {torch.cuda.is_available()}”)
if torch.cuda.is_available():
print(f”PyTorchがコンパイルされたCUDAバージョン: {torch.version.cuda}”)
print(f”GPU名: {torch.cuda.get_device_name(0)}”)
# GPU上で簡単な計算を実行してみる
x = torch.randn(3, 3, device=”cuda”)
print(f”GPU上のテンソル:\n{x}”)
else:
print(“エラー:インストール後もCUDAが利用できません。システム設定を確認してください。”)
“`
今度は、torch.cuda.is_available()
が True
を返し、torch.version.cuda
に具体的なバージョン番号が表示され、GPU名も正しく表示されるはずです。また、テンソルをGPU上に作成 (device="cuda"
) してエラーが出なければ、PyTorchのGPU版が正しくインストールされ、システムがGPUを認識している状態です。
もし、このステップでも torch.cuda.is_available()
が False
のままだったり、torch.version.cuda
が None
や '0.0'
のままだったりする場合は、以下の追加のトラブルシューティングを試す必要があります。
5. 追加のトラブルシューティングと注意点
上記の再インストール手順で問題が解決しない場合、以下の点を確認してください。
5.1 環境の問題: 仮想環境が正しくアクティベートされているか?
複数のPython環境がある場合、正しい環境でPyTorchをインストールしたとしても、スクリプトを実行する際にその環境がアクティベートされていないと、システムにデフォルトでインストールされているPython(CPU版PyTorchしかない可能性)が使われてしまいます。
- Conda環境: コマンドプロンプト/ターミナルの先頭に
(環境名)
が表示されているか確認してください。表示されていなければ、conda activate 環境名
でアクティベートしてください。 - venv環境: コマンドプロンプト/ターミナルの先頭に
(環境名)
が表示されているか確認してください。表示されていなければ、環境フォルダ内のactivateスクリプト(Linux/macOS:source 環境名/bin/activate
、Windows:.\環境名\Scripts\activate
)を実行してアクティベートしてください。
スクリプトを実行する際は、python your_script.py
と実行する前に、必ず正しい環境がアクティベートされていることを確認してください。
5.2 システム側の問題: NVIDIAドライバー、CUDA Toolkitの互換性
torch.cuda.is_available()
が False
になる原因は、PyTorchがCPU版であること以外に、システム側の問題である可能性もあります。特に、GPU版PyTorchをインストールしたはずなのに is_available()
が False
になる場合は、以下の互換性問題が考えられます。
-
NVIDIAドライバーが古すぎる、または破損している:
- PyTorchがコンパイルされたCUDAバージョンには、それをサポートする最低限のNVIDIAドライバーバージョンが必要です。PyTorch公式サイトのインストールページで、選択したCUDAバージョンに対応するドライバー要件を確認してください。
nvidia-smi
で表示されるドライバーバージョンが要件を満たしているか確認し、必要であればNVIDIAの公式サイトから最新版または互換性のあるバージョンのドライバーをダウンロードしてインストールし直してください。- ドライバーのインストールには、しばしばOSの再起動が必要です。
-
システムにインストールされているCUDA ToolkitのバージョンがPyTorchと不一致:
- PyTorchのGPU版をインストールすると、通常、PyTorchがコンパイルされたCUDAバージョンに対応するCUDAランタイムライブラリが含まれています。そのため、システム全体にCUDA Toolkitがインストールされている必要は必ずしもありません。
- しかし、システムに特定のバージョンのCUDA Toolkitがインストールされている場合、そのバージョンとPyTorchがコンパイルされたバージョンとの間に互換性問題が発生することがごく稀にあります。
- 最も確実なのは、PyTorchのインストールコマンドで指定したCUDAバージョン(例: cu118)と、
torch.version.cuda
で表示されるバージョンが一致していることです。 - もしシステムにCUDA Toolkitをインストールする必要がある(例えば、他のCUDAを利用するソフトウェアも使う場合)なら、PyTorchがコンパイルされたCUDAバージョンと同じか、互換性のあるバージョンのCUDA ToolkitをNVIDIA Developerサイトからダウンロードしてインストールしてください。そして、システム環境変数 (
PATH
) が正しく設定されているか確認してください。
-
GPU自体がCUDAをサポートしていない、または物理的に接続されていない/無効になっている:
- CUDAはNVIDIA製の特定のGPUでのみ利用可能です。AMD製やIntel製のGPU、あるいは古いNVIDIA製GPUではCUDAは使えません。お使いのGPUモデルがCUDA対応であるか確認してください。
- デスクトップPCであれば、GPUがPCIeスロットにしっかり挿入されているか、電源ケーブルが接続されているか確認してください。ノートPCであれば、BIOS設定などで内蔵グラフィックスと外部GPUの切り替え設定が正しくなっているか確認する必要がある場合もあります(NVIDIA Optimusなど)。
5.3 インストールコマンドが正しくない、またはネットワークの問題
- コマンドの再確認: PyTorch公式サイトで再度オプションを選択し、表示されるコマンドを正確にコピー&ペーストしてください。特にpipの
--index-url
やcondaのcudatoolkit=...
および-c
オプションが正しいか注意してください。 - ネットワーク接続: パッケージのダウンロード中にネットワークエラーが発生した可能性があります。安定したネットワーク接続を確保して、再度インストールコマンドを実行してみてください。
5.4 Windowsユーザー向けの注意点: Visual Studio
WindowsでPyTorchをソースからビルドする場合や、一部のライブラリ(例: TorchVisionの一部機能)を利用する場合、Visual StudioとC++ビルドツールが必要になることがあります。しかし、PyTorchのバイナリパッケージ(pipやcondaでインストールするもの)を利用する場合、通常はVisual Studioのインストールは必須ではありません。もし、torch not compiled with cuda enabled
エラーではなく、インストール後のimportエラーなどでVisual Studio関連のエラーが出た場合は、Visual Studio Community Editionなどをインストールし、「C++によるデスクトップ開発」ワークロードを選択してC++ビルドツールをインストールする必要があるかもしれません。ただし、今回のエラーとは直接関係ありません。
6. ベストプラクティス:エラーを未然に防ぐために
「torch not compiled with cuda enabled」エラーやその他のPyTorchインストール関連のエラーを将来的に防ぐために、以下のベストプラクティスを強く推奨します。
6.1 仮想環境を常に使用する (Condaまたはvenv)
Pythonプロジェクトごとに独立した仮想環境を作成し、その中に必要なライブラリ(PyTorchを含む)をインストールすることを習慣づけてください。
-
なぜ仮想環境が必要か?
- 依存関係の隔離: プロジェクトAでPyTorch 1.xと特定のライブラリが必要で、プロジェクトBでPyTorch 2.xと別のライブラリが必要になった場合、仮想環境を使わないとバージョン衝突が発生する可能性があります。仮想環境はそれぞれのプロジェクトに必要なバージョンのライブラリを独立して管理できます。
- クリーンなインストール: システムグローバルなPython環境は、様々なライブラリのインストールやアンインストールを繰り返すうちに複雑になり、予期しない問題が発生しやすくなります。仮想環境は最初クリーンな状態から始められるため、ライブラリのインストールが成功しやすいです。
- 再現性: プロジェクトで使用したライブラリとそのバージョンを
pip freeze > requirements.txt
やconda env export > environment.yml
として保存しておけば、他の環境でも同じ仮想環境を簡単に再現できます。 - 管理の容易さ: 特定のプロジェクトが不要になったら、その仮想環境ごと削除すれば、システムを汚染せずに済みます。
-
仮想環境の作成方法:
- Conda:
bash
conda create -n my_pytorch_env python=3.9 # my_pytorch_envは任意の環境名、python=3.9は任意のPythonバージョン
conda activate my_pytorch_env
# この状態でPyTorchをインストールする - venv (Python標準モジュール):
bash
python -m venv my_pytorch_env # my_pytorch_envは作成する環境フォルダ名
# 環境をアクティベート
# Windows
.\my_pytorch_env\Scripts\activate
# Linux/macOS
source my_pytorch_env/bin/activate
# この状態でPyTorchをインストールする
- Conda:
6.2 PyTorchのインストールは常に公式サイトから
PyTorchのインストールコマンドは、OS、パッケージマネージャー、必要なPyTorchバージョン、CUDAバージョンによって異なります。古い情報やインターネット上の不正確な情報に基づいてインストールしようとすると、CPU版がインストールされたり、依存関係の問題が発生したりすることがあります。
PyTorch公式サイトの「Install PyTorch」セクションで、常に最新かつ正確なコマンドを確認し、それを実行するようにしてください。 これが最も確実な方法です。
6.3 CUDAバージョンとNVIDIAドライバーの互換性を意識する
PyTorchのGPU版をインストールする際には、選択するCUDAバージョンが、現在システムにインストールされているNVIDIAドライバーと互換性があることを確認してください。PyTorch公式サイトには、各PyTorch/CUDAバージョンに必要なドライバーの最低バージョンが記載されています。nvidia-smi
でドライバーバージョンを確認し、必要に応じてドライバーを更新してください。
システム全体のCUDA Toolkitのインストールは必須ではありませんが、インストールする場合はPyTorchのCUDAバージョンとの互換性を考慮してください。
6.4 インストール後は必ず動作確認を行う
PyTorchをインストールしたら、すぐにステップ3で紹介した確認コードを実行し、torch.cuda.is_available()
が True
を返し、torch.version.cuda
が正しく表示されることを確認する習慣をつけましょう。問題が発生していても、早めに気づけば原因特定と対処が容易になります。簡単なテンソル演算をGPU (device="cuda"
) で実行してみるのも有効です。
python
import torch
if torch.cuda.is_available():
print("CUDA is available. Testing device operations.")
tensor_gpu = torch.randn(2, 2, device="cuda")
print(tensor_gpu)
print(f"Tensor device: {tensor_gpu.device}")
else:
print("CUDA is not available.")
6.5 不要になった環境は削除する
使用しなくなった仮想環境は削除しましょう。特にConda環境は、多くのパッケージを含むためディスク容量を消費しますし、環境が増えすぎると管理が煩雑になります。conda env list
で環境を確認し、conda env remove -n 環境名
で削除できます。
7. よくある質問 (FAQ)
- Q:
torch.cuda.is_available()
はTrueなのに、なぜかGPU計算が遅いです。- A: このエラーメッセージとは直接関係ありませんが、GPU計算が遅い場合は、データやモデルが実際にGPUメモリ上に転送されているか確認してください (
.to('cuda')
や.cuda()
が正しく適用されているか)。また、バッチサイズが小さすぎたり、CPUとのデータ転送が頻繁に発生していると、GPUの性能を十分に引き出せないことがあります。GPUの使用率をnvidia-smi
などで監視してみると良いでしょう。
- A: このエラーメッセージとは直接関係ありませんが、GPU計算が遅い場合は、データやモデルが実際にGPUメモリ上に転送されているか確認してください (
- Q:
torch.version.cuda
はバージョンが表示されていますが、torch.cuda.is_available()
がFalse
になります。- A: PyTorch自体はCUDAサポート付きでコンパイルされていますが、システム側でGPUやCUDAが認識されていない、または利用できない状態です。原因としては、NVIDIAドライバーがインストールされていない/古すぎる/破損している、システムに適切なNVIDIA GPUが存在しない、GPUが物理的に認識されていない(ノートPCの省電力設定など)、システムにインストールされているCUDA ToolkitとPyTorchのバージョン間に稀な非互換性がある、などが考えられます。この場合、PyTorchの再インストールではなく、NVIDIAドライバーの更新やシステム設定の確認が主な解決策となります。
- Q: PyTorchをインストールする際、どのCUDAバージョンを選べば良いですか?
- A: 基本的には、PyTorch公式サイトで提供されている中で、あなたのNVIDIAドライバーがサポートしている最も新しいバージョンを選ぶのが良いでしょう。
nvidia-smi
でドライバーバージョンを確認し、PyTorch公式サイトで選択肢として表示されているCUDAバージョンと必要なドライバーバージョンの対応表を確認してください。通常、新しいドライバーは幅広いCUDAバージョンに対応しています。
- A: 基本的には、PyTorch公式サイトで提供されている中で、あなたのNVIDIAドライバーがサポートしている最も新しいバージョンを選ぶのが良いでしょう。
- Q: システムにCUDA Toolkitを別途インストールする必要がありますか?
- A: ほとんどの場合、PyTorchのバイナリパッケージ(pipやcondaでインストールするもの)を使用するだけなら、システム全体にCUDA Toolkitを別途インストールする必要はありません。PyTorchのインストールに含まれるCUDAランタイムライブラリで十分です。ただし、NVCCコンパイラを使ってCUDAカーネルを自分でコンパイルしたい場合や、他のCUDA依存ソフトウェアも使う場合は、システムにCUDA Toolkitをインストールする必要があります。その場合も、PyTorchがコンパイルされたCUDAバージョンと互換性のあるバージョンを選ぶことが重要です。
- Q: インストールコマンドの
cu118
やcudatoolkit=11.8
は何を意味しますか?- A: これはPyTorchがどのCUDAバージョンでコンパイルされているか、あるいはどのCUDAランタイムライブラリに依存するかを示しています。
cu118
はCUDA 11.8、cu121
はCUDA 12.1に対応します。pipの場合はダウンロードURLの一部として、condaの場合はcudatoolkit
パッケージのバージョンとして指定します。
- A: これはPyTorchがどのCUDAバージョンでコンパイルされているか、あるいはどのCUDAランタイムライブラリに依存するかを示しています。
8. まとめ:トラブルシューティングのチェックリスト
「torch not compiled with cuda enabled」エラーに遭遇した場合のトラブルシューティング手順をまとめます。
- エラーメッセージの確認: 本当に
torch not compiled with cuda enabled
エラーか、あるいは他のエラーかを確認します。 - 現在のPyTorchインストールの確認: Pythonインタプリタで
import torch
して、torch.cuda.is_available()
とtorch.version.cuda
の値を確認します。もしis_available()
がFalse
でversion.cuda
がNone
または'0.0'
なら、このエラーの原因です。 - 使用中のPython環境の確認: 正しい仮想環境(conda env または venv)がアクティベートされているか確認します。必要であればアクティベートし直し、再度ステップ2を確認します。
- 既存のPyTorchをアンインストール:
pip uninstall torch torchvision torchaudio
またはconda uninstall pytorch torchvision torchaudio cudatoolkit
を実行し、現在のPyTorchを完全に削除します。 - PyTorch公式サイトでコマンド生成: https://pytorch.org/ にアクセスし、OS、パッケージマネージャー、必要なPyTorchバージョン、そして必ずCUDAを選択して、インストールコマンドを生成します。利用可能なCUDAバージョンとシステムのNVIDIAドライバーの互換性を確認します。
- 新しい環境にインストール(推奨): 可能な限り、新しく作成した仮想環境をアクティベートし、そこでステップ5で生成したコマンドを実行します。既存の環境にインストールし直す場合は、クリーンな状態にするためにアンインストールが必須です。
- インストール後の確認: 再度Pythonインタプリタで
torch.cuda.is_available()
とtorch.version.cuda
を確認します。今度はTrue
と具体的なバージョン番号が表示されるはずです。GPUでの簡単な計算も試します。 - それでも解決しない場合(システム側):
- NVIDIAドライバーが、PyTorchのCUDAバージョンと互換性があるか確認し、必要なら更新します。
- システムに別途CUDA Toolkitをインストールしている場合は、そのバージョンがPyTorchのCUDAバージョンと互換性があるか確認します。
- お使いのGPUがCUDA対応か確認します。
- PCのハードウェア(GPUの接続など)やBIOS設定を確認します。
- それでも解決しない場合(稀なケース):
- 別のバージョンのPyTorchやCUDAバージョンを試してみる。
- PyTorchの公式フォーラムやGitHub Issuesで似たような事例がないか検索し、質問してみる。
- OSのクリーンインストールも含む、より根本的な解決策が必要になる可能性もあります(これは最終手段です)。
9. 結論
「torch not compiled with cuda enabled」エラーは、PyTorchがGPUサポートなしでコンパイルされたバージョンとしてインストールされていることを意味します。この問題の最も一般的かつ効果的な解決策は、PyTorch公式サイトから提供される正確なインストールコマンドを使用して、GPU (CUDA) 対応版のPyTorchを再インストールすることです。
再インストールの際には、仮想環境を利用し、PyTorch公式サイトでOS、パッケージマネージャー、CUDA、そして適切なCUDAバージョンを正確に選択することが重要です。インストール後は、torch.cuda.is_available()
などで必ず動作確認を行いましょう。
もし再インストールしても問題が解決しない場合は、NVIDIAドライバーやシステム側のCUDA Toolkitの互換性、あるいはGPUハードウェア自体の問題など、より深層的な原因を調査する必要があります。
この記事が、PyTorchでのGPU活用を目指す皆さんにとって、「torch not compiled with cuda enabled」エラーを克服し、スムーズな開発を進めるための一助となれば幸いです。CUDAによる高速化の恩恵を享受し、ディープラーニングの力を最大限に引き出してください。