Windows 11 + RTX 50 系で PyTorch + CUDA 12.8 開発環境を立ち上げる手順(WSL2 / Docker 込み)

RTX 50 系(Blackwell, sm_120)はリリース直後ということもあり、PyTorch の配布ホイールが対応するまで時間がかかった世代です。執筆時点では PyTorch 2.7 以降の cu128 ビルドであれば動作しますが、古い cu118 / cu121 ホイールでは CUDA カーネルが見つからずに動きません。

本記事では、新規購入した RTX 50 系 GPU 上に Windows 11 ネイティブと WSL2 (Ubuntu 24.04) を組み合わせた PyTorch 開発環境を、ゼロから立ち上げるための一連の手順をまとめます。winget による Windows 側の一括インストール、WSL2 への CUDA Toolkit / cuDNN 導入、Docker Desktop からの GPU コンテナ利用まで、コピペで再現できる形で記載します。

対象読者: Windows をある程度自走できる中級エンジニアで、RTX 50 系(または 30/40 系)を新規に購入して機械学習開発を始めたい方。
所要時間: 2〜4 時間(ダウンロード時間込み、回線速度に依存します)。
得られるもの: Windows ネイティブと WSL2 の両方で動く GPU 対応 PyTorch、Docker からの GPU アクセス、Hugging Face / bitsandbytes / Ollama などの主要 ML スタック一式。


1. 構成方針

本記事では Windows ネイティブ環境と WSL2 (Ubuntu 24.04) の両方に PyTorch 環境を構築し、用途に応じて使い分ける構成を採用します。

用途 推奨環境 理由
軽量推論・プロトタイピング・ノートブック Windows venv 起動が速く、エクスプローラからファイルを扱いやすい
本格的な学習・vLLM・flash-attn・Triton 自作カーネル WSL venv Linux 専用ライブラリが豊富、ソースビルドが安定
隔離環境・再現性重視・チーム共有 Docker バージョン固定が容易、移植しやすい
手軽なローカル LLM 利用 Ollama (Windows) ダウンロード・起動が一発

Windows と WSL2 のどちらかだけで足りる方は、不要な側のセクションを飛ばしてください。


2. 前提条件

項目 必要要件
OS Windows 11(Home / Pro どちらでも可)
GPU NVIDIA RTX 30/40/50 系(本記事は Blackwell の RTX 50 系を主対象)
NVIDIA ドライバ バージョン 575 以降(CUDA 12.8 対応版)
ディスク空き容量 最低 50 GB(CUDA / WSL / Docker / モデル類で消費)
ネット回線 合計約 15 GB のダウンロードあり
管理者権限 必要(PowerShell を「管理者として実行」する場面あり)
既存ツール winget(Windows 11 標準)、Git for Windows(無ければ winget で入れる)

Blackwell (RTX 50 系) を使う場合の注意点

RTX 50 系の Compute Capability は 12.0(sm_120)です。PyTorch 2.7 以降かつ CUDA 12.8 以上に対応したホイールでないと、CUDA カーネルが見つからずに失敗します。デフォルトの PyPI で入る PyTorch は CPU 版または古い CUDA 版になるため、PyTorch 公式の --index-url https://download.pytorch.org/whl/cu128 を明示的に指定する必要があります。

GPU 世代と Compute Capability の対応:

GPU 世代 代表モデル Compute Capability
Ampere RTX 30 系, A100 8.6 / 8.0
Ada Lovelace RTX 40 系 8.9
Hopper H100 9.0
Blackwell RTX 50 系 12.0

検証した実機ハードウェア

本記事の手順は以下のハードウェア構成で動作確認しています。タワー PC・内蔵 GPU 構成でも同じ手順で動作することが想定でき、ハードウェア固有の差はドライバ認識段階までで吸収されます。

カテゴリ 構成
ベアボーン PC MINISFORUM UM890 Pro(AMD Ryzen 9 8945HS 搭載のミニ PC)
外付け GPU ドック MINISFORUM DEG1(OCuLink 接続の eGPU エンクロージャ)
GPU ASUS PRIME GeForce RTX 5070 Ti 16GB GDDR7
ATX 電源 玄人志向 KRPW-GA750W/90+(750W、80PLUS Gold)

電源ケーブルに関する注意(購入前確認推奨)

ASUS PRIME GeForce RTX 5070 Ti は GPU 側に PCIe 補助電源コネクタが 3 つあり、3 本すべてに電源ケーブルを接続しないと電力不足で起動できず、OS / ドライバから GPU が認識されない事例があります。一部の GPU では補助電源コネクタを減らしても動作するモデルがありますが、本機種では 3 本すべて必須でした。

検証に使った KRPW-GA750W/90+ には PCIe 電源ケーブルが 2 本しか付属していなかったため、同型の PCIe 電源ケーブルを 1 本追加調達し、3 本接続したところ正常に認識・動作しました。

GPU 購入時のチェック項目:

  • GPU 側の補助電源コネクタ本数(公式仕様で確認)
  • 電源ユニット付属の PCIe 補助電源ケーブル本数
  • 必要本数を満たさない場合は、同型ケーブルの追加調達または電源ユニットの見直し

3. インストール対象一覧

Windows 側

カテゴリ ソフトウェア バージョン例 用途
ランタイム Python 3.12.10 スクリプト実行・venv の元
パッケージ管理 uv 0.11+ 高速な pip / venv の代替
Node 系 Node.js LTS 24.x フロント・各種ツール
エディタ Visual Studio Code 最新 開発エディタ
ビルド環境 Visual Studio 2022 Build Tools C++ ワークロード CUDA 拡張等のビルド
GPU NVIDIA CUDA Toolkit 12.8 nvcc コンパイラ
GPU PyTorch 2.11.0 + cu128 DL フレームワーク
ML スタック transformers, accelerate, datasets, safetensors, sentencepiece, huggingface_hub, jupyter, ipywidgets 最新 Hugging Face エコシステム
量子化 bitsandbytes 0.49+ 量子化推論
LLM Ollama 0.22+ ローカル LLM サーブ
Git Git LFS 3.7+ 大容量モデルファイル
コンテナ Docker Desktop 29+ WSL2 backend で GPU コンテナ

WSL2 / Linux 側

カテゴリ ソフトウェア バージョン例 用途
ディストリ Ubuntu LTS 24.04 WSL2 上で動作
ベース build-essential, python3-pip, python3-venv, python3-dev ビルド基盤
パッケージ管理 uv 0.11+ Python 環境
GPU NVIDIA CUDA Toolkit 12.8 nvcc(Linux 版)
GPU cuDNN 9.21+ DL ライブラリ
GPU PyTorch 2.11.0 + cu128 DL フレームワーク(Triton 対応)
加速 Triton 3.6+ カーネルコンパイラ(PyTorch 2.11 同梱)

4. Windows 側セットアップ

4.1 NVIDIA ドライバの確認(最初にやる)

PowerShell で nvidia-smi を実行します。

nvidia-smi

Driver Version: 575 以降、CUDA Version: 12.8 以降が表示されれば OK です。古い場合は GeForce Experience または NVIDIA 公式サイト(https://www.nvidia.com/Download/index.aspx)から最新ドライバに更新してから先に進んでください。

4.2 winget で主要ツールを一括インストール

通常の PowerShell(管理者でなくてよい)で順番に実行します。

winget install --id Python.Python.3.12 -e --accept-package-agreements --accept-source-agreements
winget install --id astral-sh.uv -e --accept-package-agreements --accept-source-agreements
winget install --id OpenJS.NodeJS.LTS -e --accept-package-agreements --accept-source-agreements
winget install --id Microsoft.VisualStudioCode -e --accept-package-agreements --accept-source-agreements
winget install --id Ollama.Ollama -e --accept-package-agreements --accept-source-agreements
winget install --id GitHub.GitLFS -e --accept-package-agreements --accept-source-agreements --skip-dependencies

Git LFS は依存関係(Git for Windows の再インストール)でエラーになる場合があるため --skip-dependencies を付けています。Git 自体は別途インストールが必要です(未導入なら winget install --id Git.Git -e で導入できます)。

4.3 Visual Studio 2022 Build Tools(C++ ワークロード)

CUDA 拡張のソースビルドに必要です。

winget install --id Microsoft.VisualStudio.2022.BuildTools -e --accept-package-agreements --accept-source-agreements --override "--quiet --wait --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows11SDK.22621"

ダウンロードと展開で 10〜30 分かかります。

4.4 CUDA Toolkit 12.8

winget install --id Nvidia.CUDA --version 12.8 -e --accept-package-agreements --accept-source-agreements

3 GB 超のダウンロードです。完了後、新しい PowerShell を開いて nvcc --version を実行し、Cuda compilation tools, release 12.8 が出れば成功です。

公式ダウンロードページから直接取得する場合は https://developer.nvidia.com/cuda-12-8-0-download-archive を参照してください。

4.5 PowerShell を再起動して PATH を反映

ここまでで入れたツールが PATH に乗るので、PowerShell を一度閉じて開き直します

python --version    # Python 3.12.10
uv --version        # uv 0.11.x
node --version      # v24.x
nvcc --version      # 12.8

python.exe が Microsoft Store の誘導スタブを参照してしまう場合の対処: Python 公式インストーラを入れた後でも、C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\python.exe が PATH に残ることがあります。本物の Python 3.12 が PATH の先頭にあれば実害はありませんが、気になる場合は 設定 → アプリ → アプリの詳細設定 → アプリ実行エイリアスpython.exepython3.exe を OFF にしてください。

4.6 検証用 venv の作成と PyTorch インストール

作業用 venv を任意のパスに作成します(以下は C:\work\gpu-env を例にしていますが、お好みのパスで構いません)。

mkdir C:\work\gpu-env
cd C:\work\gpu-env
uv venv --python 3.12 .venv
uv pip install --python .venv\Scripts\python.exe torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

Blackwell (sm_120) を使う場合は --index-url https://download.pytorch.org/whl/cu128 の指定が必須です。PyPI のデフォルトホイールは CPU 版または旧 CUDA 版になり、torch.cuda.is_available() が False を返します。

4.7 GPU 認識テスト

.\.venv\Scripts\python.exe -c "import torch; print('cuda:', torch.cuda.is_available()); print('device:', torch.cuda.get_device_name(0)); print('cc:', torch.cuda.get_device_capability(0)); x = torch.randn(2048,2048,device='cuda'); print('matmul ok, sum:', (x@x).sum().item())"

期待される出力:

cuda: True
device: NVIDIA GeForce RTX 5070 Ti
cc: (12, 0)
matmul ok, sum: <数値>

4.8 Hugging Face スタックと bitsandbytes

uv pip install --python .venv\Scripts\python.exe transformers accelerate datasets safetensors sentencepiece huggingface_hub jupyter ipywidgets
uv pip install --python .venv\Scripts\python.exe bitsandbytes

4.9 Docker Desktop のインストール

winget でも導入できますが、UAC 関連のトラブルが出やすいため、インストーラを手動で管理者起動する方が確実です。

  1. ブラウザで https://www.docker.com/products/docker-desktop/ から Docker Desktop Installer.exe をダウンロード
  2. エクスプローラでファイルを 右クリック → 「管理者として実行」(ダブルクリックは不可)
  3. UAC ダイアログで「はい」
  4. 「Use WSL 2 instead of Hyper-V (recommended)」にチェック → OK
  5. インストール完了後、スタートメニューから Docker Desktop を起動 → 利用規約に Accept
  6. タスクトレイの Docker(鯨)アイコンが緑になればインストール成功

c:\programdata\dockerdesktop must be owned by an elevated account」エラーが出る場合の対処:

  1. 管理者 PowerShell で Remove-Item -Recurse -Force C:\ProgramData\DockerDesktop
  2. インストーラを必ず管理者として実行で再起動

WSL2 統合は後の 6.1 節で設定します。

Docker Desktop のライセンスに関する注意

Docker Desktop は個人利用および小規模事業者では無償ですが、従業員数 250 人以上または年間売上 1000 万ドル以上の組織で商用利用する場合は有償サブスクリプションが必要です。最新のライセンス条件は Docker 公式 (https://www.docker.com/pricing/) を確認してください。


5. WSL2 + Ubuntu 24.04 セットアップ

5.1 WSL2 本体のインストール

管理者 PowerShell で次を実行します。

wsl --install

完了したら PC を再起動します。

5.2 Ubuntu 24.04 のインストール

再起動後、Microsoft Store を開いて Ubuntu を検索し、インストールします。

CLI (wsl --install -d Ubuntu-24.04) はタイムアウトで失敗することがあるため、Microsoft Store からの導入のほうが安定しています。

5.3 Ubuntu の初回起動

スタートメニューから Ubuntu を起動すると、初回セットアップが始まります。

Enter new UNIX username:    # 小文字英数字
New password:                # sudo 用パスワード(入力中は画面に何も表示されません)
Retype new password:

シェルプロンプトが出れば成功です。

5.4 状態確認(Windows PowerShell から)

wsl -l -v

期待される出力:

  NAME      STATE           VERSION
* Ubuntu    Running         2

GPU の透過確認:

wsl -- nvidia-smi

RTX シリーズが表示されれば、Windows 側ドライバが WSL2 に透過されています。


6. Linux 側(WSL Ubuntu)セットアップ

以降は Ubuntu のターミナルで実行します。

6.1 Docker Desktop の WSL 統合を有効化

  1. タスクトレイの Docker アイコン → Settings
  2. Resources → WSL Integration
  3. 「Enable integration with my default WSL distro」 を ON
  4. 「Enable integration with additional distros:」Ubuntu トグルを ON
  5. 「Apply & restart」

WSL 内で確認:

docker --version
docker info | head -5

6.2 基本ツールのインストール

sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential python3-pip python3-venv python3-dev pkg-config curl wget git ca-certificates gnupg unzip

6.3 uv のインストール

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uv --version

6.4 NVIDIA CUDA repo の登録(WSL 専用 + 通常 Ubuntu の併用)

# WSL 用(CUDA Toolkit 本体)
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
rm cuda-keyring_1.1-1_all.deb

# Ubuntu 24.04 用(cuDNN はこちらにある)
echo "deb [signed-by=/usr/share/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/ /" | sudo tee /etc/apt/sources.list.d/cuda-ubuntu2404-x86_64.list

sudo apt update

WSL 専用リポジトリ (wsl-ubuntu) には cuDNN が含まれていません。通常の Ubuntu 24.04 リポジトリ (ubuntu2404) を併用する必要があります。WSL では Windows 側ドライバが透過されるため、ubuntu2404 リポジトリ側の NVIDIA ドライバパッケージは無視して構いません(明示的に指定しなければ依存関係で引っ張られません)。

6.5 CUDA Toolkit + cuDNN

sudo apt install -y cuda-toolkit-12-8 cudnn9-cuda-12

数 GB のダウンロード、5〜15 分かかります。

6.6 PATH 設定

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

6.7 動作確認

nvcc --version
nvidia-smi
ls /usr/lib/x86_64-linux-gnu/libcudnn*

nvcc release 12.8libcudnn.so.9.21.x などが表示されれば成功です。

6.8 Linux 側 Python venv と PyTorch

mkdir -p ~/gpu-env && cd ~/gpu-env
uv venv --python 3.12 .venv
uv pip install --python .venv/bin/python torch torchvision --index-url https://download.pytorch.org/whl/cu128

venv の配置場所はお好みのパスで構いません。

6.9 PyTorch + cuDNN + Triton 動作確認

.venv/bin/python -c "
import torch
print('torch:', torch.__version__)
print('cuda available:', torch.cuda.is_available())
print('device:', torch.cuda.get_device_name(0))
print('capability:', torch.cuda.get_device_capability(0))
print('cudnn version:', torch.backends.cudnn.version())
print('triton:', __import__('triton').__version__)
x = torch.randn(8, 3, 224, 224, device='cuda')
conv = torch.nn.Conv2d(3, 64, 3, padding=1).cuda()
print('conv2d via cuDNN ok, shape:', conv(x).shape)
"

期待される出力:

torch: 2.11.0+cu128
cuda available: True
device: NVIDIA GeForce RTX 5070 Ti
capability: (12, 0)
cudnn version: 91900
triton: 3.6.0
conv2d via cuDNN ok, shape: torch.Size([8, 64, 224, 224])

6.10 Docker からの GPU アクセス確認

docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu24.04 nvidia-smi

コンテナ内から GPU が見えれば、Windows ドライバ → WSL2 → Docker → コンテナ の三段透過が動作しています。


7. この環境でできるようになること

7.1 機械学習・深層学習

  • PyTorch (GPU 加速) を Windows / WSL の両方で実行
  • Blackwell (sm_120) ネイティブ対応
  • Windows 側と WSL 側でそれぞれ独立した venv を持てる
  • 学習・ファインチューニング
  • Hugging Face transformers / accelerate / datasets を使った学習・LoRA / QLoRA
  • cuDNN 高速化 (Conv, RNN, Attention) が有効
  • Triton カーネル経由のカスタムオペレータ実装(WSL 側)
  • 量子化推論
  • bitsandbytes による 4bit / 8bit 量子化モデルのロード・推論
  • 大規模モデルのダウンロード
  • Git LFS 経由で Hugging Face Hub から数十 GB 級のモデルをチェックアウト

7.2 ローカル LLM 運用

  • Ollama でワンコマンド LLM 起動
  • 例: ollama run llama3.2ollama run qwen2.5-coder
  • 16 GB VRAM で 7B〜13B モデルを高速推論可能
  • WSL 側で vLLM / text-generation-inference 等の本格サーブ(追加 install で)
  • Hugging Face transformers での自前推論サーバ実装

7.3 画像生成・ビジョン

  • Stable Diffusion / SDXL / Flux 系モデルのローカル生成
  • diffusers ライブラリ経由
  • ControlNet, LoRA, IP-Adapter 等の追加コンポーネントも GPU 動作
  • 画像分類・物体検出・セグメンテーション
  • torchvision, ultralytics (YOLO), Detectron2 等
  • 動画・3D 系
  • OpenCV (CUDA backend のソースビルド版), Open3D 等

7.4 開発・実験基盤

  • Jupyter / VS Code Notebook で対話的な GPU 実験
  • Docker コンテナで GPU を使った隔離環境
  • NVIDIA NGC, nvcr.io イメージ、PyTorch / TensorFlow 公式イメージ
  • CUDA カスタムカーネルのビルド
  • flash-attn / xformers / vLLM 等のソースビルドが可能(WSL 推奨)
  • WSL → Windows のシームレスなファイル共有
  • WSL 側から /mnt/c/... で Windows ドライブにアクセス

8. トラブルシューティング

8.1 winget で Docker Desktop インストールに失敗する / c:\programdata\dockerdesktop must be owned by an elevated account が出る

winget 経由だとダブルクリック相当で起動されてしまい、ProgramData フォルダが一般ユーザー権限で先に作られて警告が出ます。

対処:

  1. 管理者 PowerShell で Remove-Item -Recurse -Force C:\ProgramData\DockerDesktop
  2. インストーラを 右クリック → 管理者として実行 で再起動

8.2 wsl --install -d Ubuntu-24.04 がタイムアウト (WININET_E_TIMEOUT)

Canonical CDN または Microsoft Store の接続不調が原因です。

対処: Microsoft Store アプリから「Ubuntu」(バージョンなしのメタパッケージ)を検索してインストールします。これで現在の最新 LTS(24.04)が入ります。

8.3 apt install cudnn9-cuda-12Unable to locate package で失敗する

wsl-ubuntu リポジトリには cuDNN が含まれていません。

対処: ubuntu2404 リポジトリを追加(6.4 節参照)。

8.4 PyTorch が torch.cuda.is_available() == False を返す

考えられる原因:

  • cu128 ホイールではなく CPU 版が入っている → pip list | findstr torch(Windows)または pip list | grep torch(Linux)でバージョン名を確認し、+cu128 が付いているかをチェック
  • ドライバが古すぎる → nvidia-smi で Driver Version を確認、575 以上が必要
  • Blackwell サポート前の古い PyTorch → torch.__version__ が 2.7 以上であることを確認

8.5 PowerShell で uv / python が見つからない

PATH が反映されていません。PowerShell を閉じて開き直すのが最初の手段です。それでもダメな場合:

$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

8.6 Docker からの GPU アクセスで could not select device driver

Docker Desktop の WSL Integration が無効になっています。Settings → Resources → WSL Integration で Ubuntu トグルを ON にし、Apply & restart を実行してください。


9. オプション(必要に応じて)

9.1 Windows 側 cuDNN

WSL 側 cuDNN で大半の用途はカバーできるため通常は不要です。Windows ネイティブで TensorRT / ONNX Runtime GPU を使う場合のみ、NVIDIA Developer (https://developer.nvidia.com/cudnn) からダウンロードして手動インストールします。

9.2 高度な GPU 推論ライブラリ(WSL 側)

source ~/gpu-env/.venv/bin/activate
uv pip install --python ~/gpu-env/.venv/bin/python flash-attn --no-build-isolation
uv pip install --python ~/gpu-env/.venv/bin/python vllm

flash-attn のビルドには 10〜30 分かかります。CUDA Toolkit と build-essential が両方必要です。

9.3 Conda

本記事では uv のみで完結させていますが、特定プロジェクトで conda が必須の場合は Miniforge を別途インストールしてください(https://github.com/conda-forge/miniforge)。


10. 検証済みバージョン(執筆時点)

ソフトウェア バージョン
Windows 11 Pro 10.0.26200
NVIDIA Driver 591.86
CUDA (driver 表示) 13.1
CUDA Toolkit 12.8.93
cuDNN (WSL) 9.21.1
Python 3.12.10 (Windows) / 3.12.3 (Ubuntu)
PyTorch 2.11.0+cu128
Triton 3.6.0
transformers 5.7.0
bitsandbytes 0.49.2
Ollama 0.22.1
Docker Desktop 29.4.1
Docker Engine (WSL) 29.4.1
Node.js 24.15.0
uv 0.11.8
Git LFS 3.7.1
Ubuntu (WSL) 24.04.1 LTS

11. まとめ

本記事の手順を一通り実行することで、RTX 50 系(Blackwell)を含む NVIDIA GPU 上で、Windows ネイティブと WSL2 の両方から動く PyTorch 環境が手に入ります。要点は以下の通りです。

  • Blackwell サポートには PyTorch 2.7+ かつ cu128 ホイールが必須
  • Windows ネイティブと WSL2 の 両方 を整備することで、軽量実行と本格学習の使い分けが可能になる
  • WSL 専用リポジトリには cuDNN が無いため、Ubuntu 24.04 リポジトリを併用する
  • Docker Desktop の WSL Integration を有効にすると、コンテナから GPU を利用できる
  • GPU の補助電源コネクタは全本数の接続が原則。電源ユニットの付属ケーブル本数を購入前に確認する

NVIDIA 製品の利用に際しては、NVIDIA EULA(https://docs.nvidia.com/cuda/eula/)および各ソフトウェア(PyTorch, Docker Desktop, Ollama 等)のライセンスを商用利用前に確認してください。

参考