Home / Microsoft / Windows / 【2026年最新版】Windows 11のWSL2でNVIDIA GPU/CUDAが認識されない対処法【完全ガイド】

【2026年最新版】Windows 11のWSL2でNVIDIA GPU/CUDAが認識されない対処法【完全ガイド】

※本ページにはプロモーション(広告)が含まれています

【2026年最新版】Windows 11のWSL2でNVIDIA GPU/CUDAが認識されない対処法【完全ガイド】

Windows 11のWSL2(Windows Subsystem for Linux 2)で機械学習やディープラーニングを行う際、Ubuntu側でNVIDIAのGPUをそのまま利用できるのは大きな魅力です。しかし実際にnvidia-smiコマンドを実行してみると、「No devices were found」「command not found」「Failed to initialize NVML」といったエラーが表示され、CUDAが全く認識されない事例が後を絶ちません。

この記事では、2026年時点でもっともハマりやすい「Windows 11のWSL2でGPU/CUDAが認識されない」問題について、原因の切り分けと具体的な対処手順を網羅的に解説します。Windows側のWSL対応NVIDIAドライバー、WSL2カーネルの更新、CUDAツールキットのLinux版インストール、NVIDIA Container Toolkitによるコンテナ連携、対応GPUモデルの確認まで、このページだけで完結できるよう丁寧にまとめました。

WSL対応NVIDIAドライバー

この記事でわかること

  • WSL2でGPUが認識されない典型的な5つの原因
  • WSL対応ドライバー(Game Ready / Studio)の正しい入手方法
  • WSL2カーネル更新とwsl --updateの違い
  • Ubuntu側へのCUDAツールキットの入れ方(重要: Windows側にCUDAを入れない)
  • Docker + NVIDIA Container Toolkitの設定
  • 対応GPUモデルと非対応GPUの見分け方

WSL2のGPUサポートの基礎知識

WSL2で使われるGPU仮想化の仕組み

WSL2は従来のLinuxエミュレーションではなく、軽量なHyper-V上で本物のLinuxカーネルを動かしています。GPUの利用は、Windows側のNVIDIAドライバーが用意する仮想GPUデバイス(/dev/dxg)をLinux側のカーネルが認識することで実現します。この仕組みは「GPU Paravirtualization(GPU-PV)」と呼ばれ、ホスト側のドライバーが1つあれば、WSL側にはごく軽量なユーザーランドライブラリを入れるだけで動きます。

誤解されがちなポイント

  • CUDAドライバーはLinux側に入れない: 伝統的なLinuxではCUDAドライバーも入れますが、WSL2では禁止事項です
  • 入れるのはCUDAツールキットのみ: コンパイラ(nvcc)やランタイムライブラリだけを入れます
  • Windows側のドライバーだけが本物: GPUに直接触るのはWindows側のドライバーです

発生する典型的なエラーメッセージ

  • Command 'nvidia-smi' not found
  • NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver
  • Failed to initialize NVML: Driver/library version mismatch
  • torch.cuda.is_available()がFalseになる
  • No CUDA-capable device is detected

GPUが認識されない主な5つの原因

原因1: Windows側のNVIDIAドライバーが古い・WSL非対応版

GeForce ExperienceやGPU Boxの自動アップデートで入るドライバーは、必ずしもWSL対応版とは限りません。WSL2でGPUを使うには「WSL対応と明記されたGame Readyドライバー、またはStudioドライバー」が必要です。

原因2: WSL2カーネルが古い

WSLカーネルは独自のバージョン体系を持ち、Microsoft Storeやwsl –updateで更新します。GPU-PVに対応したカーネルは5.10.43以降、ベストは最新のLTSです。

原因3: Ubuntu側にCUDAドライバーを入れてしまった

従来の感覚でUbuntu内にnvidia-driver-xxxを入れると、WSLの仮想GPUと競合して「No devices were found」になります。

原因4: CUDAツールキットのバージョン不一致

PyTorchやTensorFlowが要求するCUDAバージョンと、導入済みのToolkitのバージョンが噛み合っていないと、ランタイムが落ちます。

原因5: そもそもGPUが非対応

古いKeplerやMaxwell世代、またはノートPCの一部のOptimus構成GPUはWSL2のGPU-PVに対応していません。

WSL2カーネル更新

対処法1: Windows側にWSL対応NVIDIAドライバーを入れ直す

手順

  1. https://www.nvidia.co.jp/Download/index.aspx?lang=jp にアクセス
  2. 自分のGPUモデルを選ぶ
  3. オペレーティングシステムで「Windows 11 64-bit」を選ぶ
  4. ダウンロードタイプで「Game Ready Driver」または「Studio Driver」を選ぶ
  5. ダウンロードしてインストール。インストール時「クリーンインストール」にチェック
  6. Windows再起動

確認

PowerShellでnvidia-smi.exeを実行し、GPU情報が表示されればWindows側はOKです。

対処法2: WSL本体とカーネルを最新に更新

手順

wsl --update
wsl --shutdown
wsl --status

wsl --statusで「カーネルバージョン: 5.15.x」以降が表示されればOKです。古いバージョンではwsl --set-version 2でWSL2に切り替わっていることも確認してください。

対処法3: Ubuntu側のNVIDIA関連パッケージを削除

Ubuntu内に誤って入れてしまったNVIDIAドライバーを削除します。

sudo apt-get --purge remove "*nvidia*" "libnvidia*"
sudo apt-get autoremove
sudo apt-get autoclean

その後、WSLをwsl --shutdownで一度落としてから再度起動してください。

対処法4: CUDAツールキット(WSL版)をインストール

NVIDIA公式の「WSL-Ubuntu」用リポジトリを使う

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4

重要: 必ずcuda-toolkit-xx-xを指定すること。cudaパッケージだけ指定するとLinuxドライバーまで入ってしまい失敗します。

PATH設定

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

対処法5: nvidia-smiで動作確認

Ubuntu側で以下を実行します。

nvidia-smi

ここでGPU情報が表示されれば、CUDAランタイムは無事に仮想GPUを認識できています。表示されない場合は、ls /usr/lib/wsl/lib/libcuda.soなどがあるかを確認してください。Windows側のドライバーインストール時に自動配布されるファイルで、これが無ければドライバーインストールに失敗しています。

対処法6: Docker + NVIDIA Container Toolkitを設定

Docker Desktopでの利用

Docker Desktop for Windowsを使う場合、設定から「WSL統合」を有効にすれば、WSLのGPUもDockerコンテナに引き継がれます。

Docker Engine(WSL内)直接の場合

distribution=$(. /etc/os-release; echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

動作確認:

docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

対処法7: PyTorch/TensorFlowでの確認

python3 -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"

TrueとGPU名が出れば成功です。

対処法8: 対応GPUモデルを確認

NVIDIA公式では次の世代のGPUが公式サポート対象です。

  • GeForce RTX 20シリーズ以降(Turing, Ampere, Ada Lovelace, Blackwell)
  • Quadro RTX / A / Lシリーズ
  • データセンター向けのT4, A100, H100など
  • GTX 16シリーズはTuringベースなので対応

GTX 10シリーズ(Pascal)までは公式サポート外ですが、実用上動作する例も多いです。Maxwell以前は動作しないと考えて差し支えありません。

Dockerとの連携

主な対処法の比較表

対処法 難易度 所要時間 効果 推奨度
Windows側ドライバー更新 ★☆☆ 15分 非常に高い
wsl –update ★☆☆ 3分 高い
Ubuntu側ドライバー削除 ★★☆ 5分 状況次第で必須
CUDA Toolkit(WSL版)導入 ★★☆ 15分 必須
NVIDIA Container Toolkit ★★★ 20分 Docker用途で必須
PyTorch動作確認 ★☆☆ 2分 検証目的
📦関連商品をAmazonでチェック
NVIDIA RTX 4070 グラフィックカード
約98,000円
CUDA対応最新GPU

Amazonで見る

PCI-E電源ケーブル 8ピン
約1,500円
高性能GPU電力供給

Amazonで見る

よくある質問(FAQ)

Q1. Linux版のNVIDIAドライバーをUbuntuに入れてはいけない理由は?

WSL2ではWindows側のドライバーが仮想化レイヤー経由でGPUを提供します。Linux側にドライバーが入っていると、同じデバイスを二重に握ろうとして衝突し、「Driver/library version mismatch」で完全に動かなくなります。

Q2. nvidia-smiは動くのにPyTorchでcuda.is_available()がFalseです

PyTorchが要求するCUDAバージョンと、インストール済みのCUDA Toolkitのバージョンが合っていません。PyTorch公式サイトで対応CUDA版のwhlを取得するか、Toolkitのバージョンを合わせてください。

Q3. 会社PCでadmin権限がないのですが使えますか?

Windows側のドライバー更新とwsl --updateは管理者権限が必要です。企業管理の端末ではIT部門に依頼する必要があります。

Q4. ノートPC(Optimus構成)で動きません

内蔵Intel GPUと外付けNVIDIA GPUを動的に切り替えるOptimus環境では、Windowsの「グラフィック設定」でWSLのvmcompute.exeに対して「高パフォーマンス(NVIDIA)」を明示的に割り当てる必要があります。

Q5. Dockerで--gpus allが認識されません

Docker Desktopの「WSL統合」設定が有効になっているか、またはWSL内のDocker Engineに対してnvidia-container-toolkitがインストールされているかを確認してください。

Q6. WSLgの描画にGPUが使われますか?

はい。WSLgのGUI描画にも同じGPU-PV仕組みが使われます。GUIアプリが正常に出ていれば、GPU仮想化の土台は動いている可能性が高いです。

まとめ

WSL2でGPU/CUDAが認識されない問題の9割は、「Windows側のドライバーがWSL対応版ではない」「Ubuntu側に誤ってドライバーを入れてしまっている」「CUDA Toolkitの入れ方を間違えている」のいずれかです。まずはWindows側ドライバーを最新のGame Ready/Studioに更新し、wsl --updateを実行、Ubuntu側ではToolkitのみを入れる、この3ステップを守れば、ほぼすべてのケースでnvidia-smiがGPUを表示するようになります。

Docker連携まで構築すれば、機械学習フレームワークのバージョン違いで苦しむこともなくなります。本記事の順序どおりに進めて、快適なWSL2 + GPU環境を構築してください。

Check Also

Windows 11の新機能「sudo」コマンドが認識されない・使えない対処法

【2026年最新版】Windows 11の新機能「sudo」コマンドが認識されない・使えない対処法【完全ガイド】

【2026年最新版】Windo …