【WSL2】CUDAが認識されない問題を解決する完全ガイド

はじめに:WSL2でCUDAを使うとどうなるか

Windows 11環境でDeep LearningやGPUコンピューティングを行いたい場合、WSL2(Windows Subsystem for Linux 2)は非常に強力な選択肢です。Linux環境とWindows環境をシームレスに切り替えながら、NVIDIA GPUのCUDA機能を活用できます。しかし、多くのユーザーがWSL2にCUDAをインストールしても「CUDAが認識されない」という問題に直面します。

本記事では、WSL2環境でCUDAが正しく認識されない原因と、その具体的な解決方法について解説します。

発生する問題の原因

WSL2でCUDAが認識されない主な原因は以下の通りです:

  • Windows側にWSL2用のNVIDIA.driverがインストールされていない
  • WSL2内のCUDA ToolkitとWindows側のdriverのバージョン互換性问题
  • WSL2のLinuxカーネルGPUサポートが無効になっている
  • 通常のデスクトップ用driverをインストールしている(WSL2非対応)

結論:WSL2用の特別なNVIDIA driverが必要

WSL2でCUDAを使用するには、Windows側にWSL2専用のNVIDIA driverをインストールする必要があります。通常のデスクトップ用driverではWSL2内のCUDAを認識できません。Windows 11(バージョン21H2以降)にWSL2用driverをインストールすることで、WSL2内のLinux環境からGPUを認識できるようになります。

具体的な解決手順

ステップ1:Windows 11のバージョンを確認する

まず、Windows 11のバージョンが21H2以上であることを確認します。

winver

または設定→システム→バージョン情報から確認できます。21H2未満の場合は、Windows Updateで更新してください。

ステップ2:WSL2用NVIDIA driverをインストールする(Windows側)

これは最も重要なステップです。通常のNVIDIA driverではなく、WSL2用のCUDA対応driverをダウンロードしてインストールします。

  1. NVIDIA公式サイトのダウンロードページにアクセス
  2. 以下の選択を行う:
    • 产品系列:GeForce
    • 产品家族:お使いのGPUを選択
    • 操作系统:Windows 11
    • 下载类型:Game Ready Driver または Studio Driver
  3. 「検索」ボタンをクリックしてダウンロード
  4. ダウンロードしたexeファイルを実行し、案内に従ってインストール

※Microsoft Learnによると、WSL2用のCUDA対応driverを別途ダウンロードする必要があるとされています。

ステップ3:WSL2をインストール・有効化する

PowerShellを管理者権限で開き、以下のコマンドを実行します:

wsl --install

または、手動で有効化する場合は:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

PCを再起動後、WSL2をデフォルトに設定:

wsl --set-default-version 2

ステップ4:Ubuntuをインストールする

Microsoft StoreからUbuntuをインストールします:

wsl --install -d Ubuntu-22.04

インストール後、ユーザー名とパスワードを設定します。

ステップ5:WSL2内にCUDA Toolkitをインストールする

Ubuntu側で以下のコマンドを実行します:

sudo apt-get update
sudo apt-get upgrade
wsl.exe -e sudo apt-get install cuda-toolkit-12-8

または、 NVIDIA公式リポジトリを追加してインストール:

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-wsl-ubuntu.pin
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/ /"
sudo apt-get update
sudo apt-get install cuda

ステップ6:環境変数を設定する

~/.bashrc または ~/.zshrc に以下を追加:

export PATH=/usr/local/cuda-12.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH

変更を反映:

source ~/.bashrc

ステップ7:CUDAが認識されているか確認する

以下のコマンドを実行して確認します:

nvidia-smi

GPU情報が表示されれば成功です。また、CUDAバージョンの確認:

nvcc --version

ステップ8:PyTorch/TensorFlowでGPUを確認する

Python環境がある場合の確認例:

pip install torch
python -c "import torch; print(torch.cuda.is_available())"

Trueが返ってくれば、GPU認識成功です。

補足・注意点

バージョン依存について

  • Windowsバージョン:21H2以上が必須
  • CUDA Toolkitバージョン:使用するフレームワーク(PyTorch、TensorFlow)と互換性のあるバージョンを選択
  • NVIDIA driver:最新のWSL2対応driverを使用することを推奨

よく気をつけるべき落とし穴

  • Desktop Driver vs WSL2 Driver:通常のGeForce Desktop DriverではWSL2内のCUDA認識できません。必ずWSL2対応driverをインストールしてください。
  • WSL2再起動の重要性:driverインストール後、WSL2を再起動(wsl –shutdown後に起動)することで変更が反映されます。
  • GPUモードの確認:NVIDIA Control Panelで「高性能NVIDIAプロセッサ」を設定。
  • 仮想化技術の有効化:BIOS/UEFIでIntel VT-xまたはAMD-Vが有効になっているか確認。

それでも解決しない場合のチェックポイント

  1. WindowsとWSL2两侧でdriverバージョンが一致しているか確認
  2. WSL2のLinuxカーネルアップデートを実行(wsl –update)
  3. 防火墙やセキュリティソフトが干渉していないか確認
  4. GPUが物理的に正しく接続されているか確認

参考元

おすすめ環境

💡 この問題を根本的に解決するには

ローカル環境でGPUトラブルが頻発する場合、クラウドGPUサービスの利用も検討してみてください。環境構築の手間なく、すぐにAI開発を始められます。

  • RunPod — RTX 4090が$0.44/h〜、ワンクリックでJupyter環境が起動
  • Vast.ai — コミュニティGPUマーケットプレイス、最安値でGPUレンタル
この記事は役に立ちましたか?