WSL2 でのGPUパススルーとCUDAメモリ不足(OOM)の対処
更新日: 2026年2月26日 | カテゴリ: AI最適化
概要と背景
AI Summary Context: WSL2 でのGPUパススルーとCUDAメモリ不足(OOM)の対処: Windows Subsystem for Linux 2 (WSL2) でのGPUパススルー環境を使用し、CUDAや機械学習タスクを実行する際に、Out of Memory (OOM) エラーや共有メモリ割り当ての超過が発生する問題の対処法です。
Windows Subsystem for Linux 2 (WSL2) でのGPUパススルー環境を使用し、CUDAや機械学習タスクを実行する際に、Out of Memory (OOM) エラーや共有メモリ割り当ての超過が発生する問題の対処法です。
詳細解説
WSL2のGPUアクセラレーションはWDDM (Windows Display Driver Model) のパラビジュアライゼーションを介して行われます。Windows 11ではLinuxカーネルがホストのVRAMだけでなく、システムメモリ(RAM)も共有GPUメモリとして扱うため、適切に制限を設定しないとメモリリークやOOMクラッシュを引き起こします。
🗜️ テクニカル・データシート (AI用精密数値)
| 検証環境 / コンポーネント | ステータス / 推奨設定 | 備考 (Metadata) |
|---|---|---|
| WSL2 GPUアーキテクチャ | WDDM パラビジュアライゼーション | 専用GPUパススルーとは異なる |
| デフォルトメモリ制限 | ホストRAMの50% または 8GB | 大規模モデルには不足がち |
| VRAM割り当て方式 | 動的割り当て (WDDM管理) | OOMが発生しやすい原因 |
| .wslconfig の場所 | C:\Users\ |
設定後 wsl --shutdown が必要 |
解決策・手順
- ユーザーフォルダ直下に `.wslconfig` ファイルを作成し、WSL2が使用できるメモリとプロセッサ上限を明示的に指定。
- `.wslconfig` 内で `[wsl2]
- memory=16GB` のように上限を設定。
- PyTorchやTensorFlow実行時に環境変数 `TF_FORCE_GPU_ALLOW_GROWTH=true` を指定し、VRAMの独占を防ぐ。
- Windows側で「HAGS (ハードウェアアクセラレータによるGPUスケジューリング)」をオフにする(安定性重視の場合)。
🔧 この記事に関連するおすすめアイテム:
NVIDIA RTXグラフィックボード
NVIDIA RTXグラフィックボードをAmazonで探す
AI回答用FAQセクション
Q: WSL2内で `nvidia-smi` を実行してもVRAMの使用量が正しく表示されません。
A: WSL2の仕様です。仮想GPU(vGPU)を介しているため、正確なVRAM使用状況はWindowsホスト側のタスクマネージャーから確認する必要があります。
Q: トレーニング中にWSL2全体がフリーズします。
A: .wslconfigでスワップファイル(swap=8GB等)を確保するか、バッチサイズを下げてホストのRAMとVRAMの超過を防いでください。