WSL2でGPUを自在に操る!Windowsを「汚さない」最強環境構築

備忘録

はじめに

「最新のAIを動かしたい。Linuxでゲームをプレイしたい。でも、Windowsに直接ドライバやライブラリを詰め込んで、OSをグチャグチャにしたくない……」

Windowsネイティブ環境での開発や構築は、時として「地雷原」を歩くような緊張感を強いる。
パスの制限、ライブラリの衝突、そして「環境が壊れたからOSごと再インストール」という絶望。そんな不毛な試行錯誤は、もう終わりにしよう。

OSの純血を守りつつ、Linuxの機動力でGPUのパワーを100%引き出す

この理想を実現するのが、WSL2(Windows Subsystem for Linux 2)だ。
Windowsのクリーンさを保ったまま、Ubuntuという「隔離された箱」の中に、画像生成スタジオ、巨大言語モデル(LLM)の推論サーバー、さらにはLinux向けゲーミング環境までを同居させる。

本記事では、WSL2におけるGPUサポートの仕組みを解き明かし、あらゆる用途でGPUをフル活用するための実践的ステップを解説する。


スポンサーリンク
スポンサーリンク

なぜWindows(ネイティブ)ではなくWSL2(Ubuntu)なのか?

なぜ、使い慣れたWindows上でそのまま動かさないのか。そこには、複数のクリエイティブな活動を並行させるための明確な合理性がある。

  • 環境の絶対隔離
    LLM(大規模言語モデル)や画像生成AIは、それぞれ要求するライブラリのバージョンが異なることが多い。WSL2なら、Ubuntuという独立した空間でこれらを管理できる。
  • 依存関係の地獄(Dependency Hell)からの脱却
    特定のツールを入れたせいで別のツールが動かなくなっても、WSL2ならそのインスタンスを削除するだけでリセットが可能だ。
  • Linux専用アプリの動作
    SteamのProtonを活用したLinux向けゲームや、Linux環境での動作が前提となっている開発ツールを、再起動なしにそのまま実行できる。

一度この「汚さない」快適さを知ると、Windowsに直接重厚なライブラリをインストールしていた日々がいかに危ういものだったか、痛感するはずだ。


1. WSL2におけるGPUサポートの特殊な構造

WSL2におけるGPU連携は、多くのユーザーが「なんとなく」で進めてハマる、最大の難所だ。ここをブラックボックスのままにせず、仕組みを正しく理解することが、トラブルに強い環境への近道になる。

GPUの制御権は「Windows」が握る

通常、ネイティブなLinux環境であれば「ハードウェア ↔ Linuxカーネル ↔ NVIDIAドライバ」という階層で動作する。
しかし、WSL2はWindows上で動く仮想化環境だ。

「GPUの制御権は常にWindows側が握っている」

WSL2でGPUを利用するための核となるのは、Windows側にインストールした「NVIDIA Windows GPU Driver」だ。
このドライバには、WSL2内で動作するLinuxカーネルと通信するための「WDDM(Windows Display Driver Model)」の拡張機能が含まれている。

Ubuntuを起動した際、このドライバ機能が /usr/lib/wsl/lib というディレクトリに自動的にマウントされる。
つまり、Linux側から見れば、Windows側のドライバ機能を「借りてきている」状態なのだ。


2. 【警告】Linux側にドライバを入れてはいけない

多くの初心者が、そしてLinuxに慣れた人ほどやってしまう致命的なミス。それが、Ubuntu内で sudo apt install nvidia-driver-xxx を実行することだ。

これをやると、Linuxネイティブ用のドライバが「Windowsから借りてきているドライバ」と衝突し、カーネルレベルで矛盾が生じる。結果として nvidia-smi がエラーを吐き、環境が修復不能なまでに壊れる。

Linux(WSL2)側にはドライバを入れず、Windows側の最新ドライバにすべてを委ねる。


3. 多彩な用途でGPUを使い分ける

この構成が完成すれば、あとは用途に合わせてライブラリを積み上げるだけだ。

大規模言語モデル(Llama 3, Command Rなど)

「Ollama」などをWSL2に導入すれば、ローカルでLLMを動かすサーバーが即座に立ち上がる。
CUDAを介した高速な推論は、もはやクラウドサービスを必要としないレベルに達している。

画像生成AI(Stable Diffusion Forgeなど)

Pythonの仮想環境(venv)を作り、PyTorchをインストールするだけで、Windows側のドライバを介してVRAMがフル活用される。
Forgeのようなメモリ効率に優れたツールも、WSL2上で驚くほどスムーズに動作する。

Linuxゲーミング

SteamをWSL2上で動かす、あるいはVulkanドライバを適切にリンクさせることで、Windowsでは味わえないカスタマイズ性の高いゲーミング環境を構築できる。


4. 疎通確認:nvidia-smi が見ているもの

ターミナルで以下のコマンドを叩くと、様々な情報が表示される。

nvidia-smi

表示される情報は「正常にパスが開通したか」の判定基準だ。

  1. Driver Version
    Windows側にインストールされているドライバのバージョン。
  2. CUDA Version
    そのドライバがサポートしている「最大」のCUDAバージョン。
  3. GPU Name / VRAM Usage
    物理的なハードウェアの状態。

これが表示されているということは、「WindowsからLinuxへのGPUパスが正常に開通している」という動かぬ証拠になる。


5. 現場で役立つトラブルシューティング

もしGPUを認識しない場合は、以下の3点を順に確認してほしい。

WSLのバージョン確認

以下のコードをPowerShellで実行し、バージョンが「2」であることを確認する。

wsl --list --verbose

カーネルの更新

WSL2のGPUサポートは、比較的新しいカーネルを要求する。

wsl --update

Windowsドライバのクリーンインストール

稀にドライバの不整合でマウントが失敗することがある。
その際は、NVIDIAの公式サイトから最新版をダウンロードし、「カスタムインストール」から「クリーンインストールの実行」を選択して再導入するのが最も確実な解決策だ。


まとめ

WSL2でのGPU利用は、「Windowsドライバを信じ、Linux側では余計なことをしない」という引き算の思考が成功の鍵を握る。
この強固な土台さえ作ってしまえば、あとはUbuntuの中で自由に、大胆に、AIやゲームの世界を構築できる。

  1. Windowsに最新のNVIDIAドライバを入れる。
  2. WSL2(Ubuntu)をインストールし、wsl --update を実行。
  3. Linux側でドライバは絶対に入れない。
  4. nvidia-smi で開通を確認。

OSを汚さず、最高速度でテクノロジーの最前線を探求していこう。

コメント