メインコンテンツへスキップ
vLLMはWindows上ではネイティブに動作しません。推奨される方法はWSL2とDocker、さらにNVIDIA Container Toolkitを組み合わせることです。これによりデュアルブートなしで完全なGPUパススルーが可能となり、Linux側の推論関連ツール群もすべて利用できます。本ガイドではNVIDIA GPU搭載のWindows 11環境におけるセットアップ手順を詳細に解説します。
最終テスト日:七月 2026。Windowsネイティブ対応のための コミュニティPR が提出されましたが、安定版にはまだマージされていません。そのため現時点ではWSL2とDockerの組み合わせが推奨される方法となります。

前提条件

  • Windows 11 (22H2 or later) with WSL2 enabled
  • 1 or more NVIDIA GPUs with driver version ≥535
  • WSL2バックエンドが有効化されたDocker Desktop for Windows
  • At least 16 GB of system RAM (32 GB recommended for models ≥13B)

手順1:GPU対応のWSL2をインストールする

管理者権限でPowerShellを開き、WSL2をインストールします:
この手順ではデフォルトでUbuntuがインストールされる。再起動後にWSLカーネルのバージョンを確認してください。
GPUパススルーを利用するにはカーネンバージョンが5.15以上である必要がある。必要に応じて更新してください。
WSL2内でご使用のGPUが認識されているか確認してください。
正しいドライバーバージョンを持つGPUが一覧に表示されるはずだ。もしnvidia-smiでデバイスが検出されない場合は、Windows用NVIDIAドライバーを535以上に更新してからWSLを再起動してください。

手順2:NVIDIA Container Toolkitを併用してDockerをインストールする。

  1. Windows上でDocker Desktopをインストールしてください。
  2. Docker Desktopの設定画面を開き、Use the WSL 2 based engineのチェックが入っていることを確認してください。
  3. Under Resources → WSL Integration, enable your Ubuntu distribution.
WSL2内でNVIDIA Container Toolkitをインストールします。
インストール完了後、Dockerを再起動してください。

手順3:Docker Composeを利用してvLLMを起動する。

Create a docker-compose.yml file:
docker-compose.yml
コンテナを起動してください。
モデルのダウンロードおよび読み込み中にログを確認してください。
When you see Uvicorn running on http://0.0.0.0:8000, the server is ready.

手順 4:正常に動作するかを確認します。

WSL2内からテストリクエストを送信してください。
期待される応答内容は、モデルの返答が格納された choices配列を持つJSONオブジェクトです。

マルチGPU構成(MCDM)

WSL2ではMicrosoft Compute Driver Model(MCDM)を通じてマルチGPUテンサー並列処理が可能です。これにより旧来のTCCモードが置き換えられ、NVIDIAドライバーのバージョンは≥535である必要があります。

MCDMモードへ切り替える方法

Windowsホスト上で管理者権限付きのコマンドプロンプトを開いてください。
各GPUごとに同様の手順を実行し(0の部分をGPUインデックスに置き換えてください)、再起動してください。再起動後、すべてのGPUがWSL2内に認識されていることを確認してください。

テンサー並列処理機能付きで起動する方法

Update your docker-compose.yml command to use multiple GPUs:
テンサー並列処理ではレイヤーを複数のGPUに分散させるため、単一ノード内で複数GPUを使用する場合はパイプライン並列処理よりも推奨される。デコード処理時のスループット向上にも寄与する。

Windowsホストからの接続方法

WSL2は軽量な仮想マシン内で動作し、独自のネットワーク環境を持ちます。Dockerのポートマッピング機能により、localhost:8000がWSL2仮想マシンからWindowsホストへ自動的に転送されるため、Windows上のアプリケーションからvLLMにアクセスすることが可能です:
もしlocalhostによる転送が機能しない場合は、WSL2のIPアドレスを確認し、直接そのアドレスを利用すればよい:
次にWindows側で以下の操作を行う:
WSL2のIPアドレスは再起動ごとに変更される。IPアドレスを直接指定している場合は、再起動後ごとに設定の更新が必要となる。可能であればlocalhost転送機能を利用することを推奨する。

Tokiosを利用してエンドポイントを公開する

WSL2上でvLLMを実行すればローカル環境で推論処理が可能だが、アクセス可能な範囲は同一マシン内に限られる。WSL2内にvLLMコンテナと共にTokiosコネクターを導入すれば、ポート転送やファイアウォール設定なしで安全なトンネル経由でモデルにアクセス可能となり、あらゆるデバイスから利用できるようになる:
ペアリングが完了したら、ModelsタブからvLLMのデプロイ情報を登録し、APIキーを生成する。これでどこからでもhttps://api.tokios.com/v1経由でモデルにアクセスできるようになる。 詳細な手順については コネクターのインストール を参照されたい。

トラブルシューティング

お使いのNVIDIAドライバが古すぎるか、WSL2のカーネルが古くなっています。Windows用NVIDIAドライバを535以上にアップデートした後、PowerShellからwsl --updateを実行し、wsl --shutdownを使ってWSLを再起動してください。
Specific vLLM versions (v0.22/v0.23) ship CUDA kernels that don’t match every WSL2 CUDA toolkit version. Pin your Docker image to a known-good tag, for example vllm/vllm-openai:v0.21.0, instead of latest.
vLLMはOllamaよりも多くのVRAMをCUDAグラフ用に確保します。もし 32B モデルが 2x RTX 3090 上でメモリ不足を起こす場合、--gpu-memory-utilization の値を 0.85 まで下げるか、--max-model-len の設定を減らしてみてください。
Docker DesktopのWSL2連携機能がご使用のディストリビューションで有効になっているか確認してください。docker compose logs vllmを実行すると終了理由が確認できますが、多くの場合GPUドライバが見つからないかモデルパスが不正確であることが原因です。
If nvidia-smi inside WSL2 only shows 1 GPU on a multi-GPU system, MCDM may not be active. Run nvidia-smi -g <GPU_ID> -dm 0 on the Windows host for each GPU, then reboot.

Windowsネイティブ環境での対応状況

SystemPanic氏によるコミュニティフォーク版では、WSL2やDockerを使わずにvLLMをWindowsネイティブ環境で利用できるようになっています。このプルリクエストは2025初頭に提出されましたが、現時点では安定版にマージされていません。進捗状況はvLLMのGitHubリポジトリで確認できます。 安定版リリースでネイティブサポートが実装されるまで、WSL2とDockerの組み合わせがWindows環境における本番用の運用手段となります。

次に行うべき手順

vLLMのリモートアクセス設定

Tokiosを利用すればポートフォワーディングなしで、どのデバイスからでもご自身のvLLMサーバーにアクセス可能です。

モデルの適合性確認

ご使用のGPUのVRAM容量に適したモデルや、期待できるスループット値を確認しましょう。