- WSL2を使用すると、CUDAとDirectMLをサポートする実際のLinuxシステムから、Windowsの物理GPUを利用できます。
- 最新のWindows、適切なドライバー、そして適切に設定されたWSL2ディストリビューションを組み合わせることが不可欠です。
- CUDA Toolkit、cuDNN、Docker、そしてPyTorchやTensorFlowといったフレームワークは、完全な仮想マシンを必要とせずに統合されています。
- 適切なGPUの選択とnvidia-smiによる監視は、機械学習におけるパフォーマンスと安定性を確保します。

一緒に働くなら 機械学習、深層学習、またはデータサイエンス Windowsユーザーなら、Linuxディストリビューションを別途セットアップするべきか、クラウドを利用するべきか、一度ならず考えたことがあるでしょう。WSL2で公式にGPUがサポートされたことで、複雑な設定は不要になりました。CUDAで高速化された本格的なLinux環境を、Windows PC上で直接利用できるようになったのです。
このガイドでは、ステップバイステップで、 WSL2で機械学習とCUDAのGPUサポートを有効にする方法システムレベルで必要なもの、適切なドライバのインストール方法、Ubuntu(または他のディストリビューション)の準備方法、CUDA、cuDNN、Docker、TensorFlow、PyTorch、DirectMLの統合方法、そして途中で遭遇する可能性のある典型的な問題の解決方法について説明します。
アーキテクチャ:WSL2内でのGPUの動作
WSL2 は 軽量仮想マシン内の実際のLinuxカーネル これはWindows自体によって管理されています。粗悪なエミュレーションではなく、カーネルとユーザー空間を備えた正真正銘のLinuxであり、ホストシステムと極めて高度に統合されています。
そのカーネル内からGPUを活用するために、NVIDIA(とMicrosoft)は WindowsホストGPUをWSL2に公開する特定のスタックLinux の観点から見ると、表示されるのは、 libcuda.soこれにより、ソフトウェアは「ネイティブ」なLinuxシステム上で動作していると認識できるようになります。
そのレイヤーのおかげで、WSL2 内では nvidia-smi、nvcc、CUDA Toolkit、cuDNN また、大規模な仮想マシンをセットアップしたり、常にクラウドに依存したりすることなく、事実上あらゆるCUDA互換の機械学習フレームワーク(PyTorch、TensorFlowなど)を利用できます。
さらに、この統合は以下まで及ぶ。 DockerとNVIDIAコンテナツールキットつまり、専用のLinuxサーバー上で実行するのと同じように、GPU対応コンテナを実行できます。例えば、TensorFlow、PyTorch、その他のAIフレームワーク用の公式NVIDIA NGCイメージなどです。
グラフィックスに関しては、WSLg では Linux のグラフィック アプリケーションに使用する GPU を制御することもできます。これは、コンピューターに Intel iGPUまたはAMD統合GPUと専用のNVIDIAグラフィックカード そして、あなたは重労働をNVIDIAに任せたいのですね。
Windowsの要件、GPU、および必要なバージョン

これらすべてが機能するためには、最初のフィルターはオペレーティングシステムです。 Windows 11またはWindows 10バージョン21H2以降以前のバージョンでは、WSL2におけるGPUサポートが十分に整備されていない(あるいはそもそも搭載されていない)。
ハードウェアレベルでは、 最新のドライバーを搭載した最新のGPU純粋なCUDAを使用するには、互換性のあるNVIDIA製GPU(理想的には最新のRTXシリーズ)が必要ですが、GPUがAMDまたはIntel製の場合、あるいはNVIDIA製GPU上でDirectMLに対応したフレームワークを使用したい場合は、DirectMLを利用することもできます。
さらに、WSL2 は十分に新しいカーネルを実行する必要があります。GPU 機能については、 カーネルバージョン5.10.43.3以上PowerShell からこれを確認できます:
wsl cat /proc/バージョン
最新のWindowsシステム上で環境を新規にセットアップする場合は、おそらく既に互換性のあるバージョンがインストールされているはずですが、コンピューターがしばらくアップデートを受け取っていない場合や、WSLの設定を手動で変更した場合は、確認しておく価値があります。
適切なLinuxディストリビューションを使用してWSL2をインストールおよび更新します。

ドライバーとCUDAに入る前に、次のことを確認する必要があります。 WSL2は正しくインストールされ、設定されています。機械学習開発においては、NVIDIAのリポジトリやパッケージとの互換性が高いため、UbuntuやDebianなどのglibcベースのディストリビューションを使用することをお勧めします。
管理者権限を持つ PowerShell から、適切な Windows コマンドを使用して WSL と WSL2 に必要なコンポーネントを有効にできます。最新バージョンの Windows 10/11 では、最も直接的な方法は、 wsl –インストール そして、例えば以下のように分布を指定します。
wsl –install -d Ubuntu-22.04
インストールが完了すると、スタートメニューに新しいUbuntuアプリが表示されます。初めて起動すると、基本的なセットアップ(ユーザー名、パスワードなど)を完了するように求められます。次の重要な手順は パッケージキャッシュとシステムを更新する そのディストリビューション内では:
sudo apt update && sudo apt -y upgrade
さらに、WSL自体がWindowsで利用可能な最新のカーネルを使用していることを確認することをお勧めします。PowerShellから、以下を実行してください。
wsl –更新
この手順の組み合わせにより、 WSL2上でUbuntuがアップデートされましたCUDAのインストール、機械学習フレームワーク、さらにはDockerのベースとしても最適です。
WSL2 用の CUDA サポート付き NVIDIA ドライバーのインストール

WSL2でCUDAを使用してGPUを使用する上で重要な部分は、 WindowsにNVIDIAドライバーがインストールされていますLinux では不要です。多くの人が、ディストリビューション内にもドライバーをインストールする必要があると勘違いしていますが、WSL2 では必要ありません。
ダウンロードする必要があります CUDAおよびWSL対応コントローラー NVIDIAの公式WSLページ(または、GPUとシステムを選択して一般的なドライバー検索)からダウンロードしてください。古いドライバーを使い続けるのは避けてください。WSL2とGPUのサポートは大幅に改善されています。
Windows にドライバーがインストールされたら、PowerShell を使用してシステムが GPU とドライバーを正しく認識していることを確認できます。アダプター情報を表示するコマンドを実行するか、NVIDIA コントロール パネルを開いてバージョンを確認してください。WSL から、すべてが正しく動作している場合は、 アンビディアスミ 利用可能なCUDAデバイスのリストを返します。
サーバーシナリオ(例:WSL2 を使用した Windows Server)では、流れは似ています。まず WSL と Linux ディストリビューションをインストールし、次に Windows Server 用 NVIDIA ドライバー次に、Linux側では、WSLカーネル内に追加のGPUドライバをインストールすることなく、CUDAツールキットと必要なライブラリのみをインストールします。
WSL2内でCUDAツールキット、cuDNN、および基本ツールをインストールする
WSLとNVIDIAドライバーの準備が整ったので、Linux内で開発環境を構成しましょう。目標は、以下のものをインストールすることです。 CUDAツールキット、cuDNN、および基本的なPythonツール コンパイル、サンプル実行、および機械学習フレームワークを快適に操作できること。
2 つのアプローチがあります: WSL/Ubuntu 用の公式 NVIDIA リポジトリ または、お使いのディストリビューションに含まれる nvidia-cuda-toolkit パッケージを使用することもできます。最新のワークフローでは、汎用パッケージよりも最新の情報が含まれていることが多いため、お使いのディストリビューション専用の NVIDIA リポジトリを追加するのが最適です。
WSL2 の Ubuntu ターミナルからリポジトリを追加し、CUDA をインストールできます。一部の環境では、より簡単な代替方法もあります。
sudo apt -y install python3-pip nvidia-cuda-toolkit
このパッケージを使用する場合は、インストールされる CUDA バージョンが、使用予定の PyTorch または TensorFlow バージョンと互換性があることを確認してください。インストール後、CUDA バイナリへのパスを に含めることをお勧めします。 PATH変数例えば、ファイルを編集することによって 〜/ .bashrc そして、次のような行を追加します。
export PATH=/home/user/.local/bin${PATH:+:${PATH}}
保存して閉じたら、新しいターミナルセッションを開くか、 ソース〜/ .bashrc 変更を有効にするには、まずnvccなどのツールを使用したり、CUDAを使用するサンプルスクリプトを実行したりする必要があります。
WSL2でDockerとNVIDIA Container Toolkitを使用する

多くの機械学習ワークフロー、特に大規模な企業やプロジェクトでは、すべてをコンテナにカプセル化するのが一般的です。WSL2 内で Docker の GPU を活用するには、 DockerエンジンはNVIDIA Container Toolkitを介してGPUにアクセスできます。.
主な選択肢は 2 つあります: インストール Windows 上の Docker Desktop WSL2との統合を利用するか、WSL内のLinuxディストリビューションにDockerエンジンを直接インストールします。後者の場合は、以下の手順で実行できます。
curl https://get.docker.com | sh
sudo サービス docker 開始
Dockerのインストールが完了したら、次は安定版のNVIDIA Container Toolkitリポジトリを設定します。WSL内のUbuntuの場合、一般的な手順に従ってください。/etc/os-releaseから始まる配布変数を定義し、GPGキーとnvidia-docker用のNVIDIAリポジトリのリストを追加します。
次に、以下のコマンドで必要なパッケージをインストールします。
sudoのapt-get updateを実行し
sudo apt-get install -y nvidia-docker2
これが稼働状態であれば、オプションを使用してGPUを認識するコンテナを起動できます。 –GPU例えば、NGC上の公式TensorFlowコンテナの場合:
docker run –gpus all -it –shm-size=1g –ulimit memlock=-1 –ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3
そのコンテナ内には、すでに多くのサンプルが用意されています。例えば、NVIDIAのCNNサンプルにアクセスして、事前学習済みのResNetを実行できます。
cd nvidia-examples/cnn/python
resnet.py –batch_size=64
複数の GPU を備えたサーバー環境では、従来のサンプル コンテナも試すことができます。 誰も CUDAを使用して、すべてのカードがDocker経由で正しく応答していることを確認します。
docker run –rm -it –gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -numdevices=5
WSL2におけるTensorFlow、PyTorch、DirectML
WSL2 は純粋な CUDA に限定されません。 TensorFlow-DirectMLとPyTorch-DirectMLこれは、GPUがAMD製またはIntel製の場合、あるいはNVIDIA製カードを使用している場合でもDirectMLを活用したい場合に特に興味深い情報です。
出発点は同じです。 GPUベンダーから更新されたドライバー Windowsにインストールします(AMD、Intel、NVIDIAのいずれのプロセッサでも構いません)。そこから、Linuxディストリビューション内に仮想Python環境を作成します。一般的な方法としては、Minicondaを使用する方法があります。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create –name directml python=3.7 -y
conda activate directml
環境を有効化したら、目的のフレームワークをインストールします。 TensorFlow-DirectML:
pip install tensorflow-directml
Yの PyTorch-DirectMLまず、BLASとLAPACKの基本的な依存関係について説明し、次に該当するパッケージをインストールします。
sudo apt install liblas3 libomp5 liblapack3
pip install torch-directml
すべてが正常に動作していることを確認するには、Pythonセッションを開き、簡単な操作(例えば、テンソルの和)を実行して、エラーが発生しないこと、およびフレームワークの出力でDirectMLアクセラレーションが検出されることを確認できます。
WSL2にCUDAサポート付きのPyTorchをインストールする
NVIDIA GPU 上で「従来型」の CUDA を使用して PyTorch を利用するのが目的であれば、最も簡単な方法は、特定の CUDA バージョン用に特別に設計されたバージョンをインストールすることです。たとえば、 CUDA 11.8PyTorchは、互換性のあるホイールのための特定のインデックスを提供します。
Pythonとpip、またはConda環境が準備できたら、次のようなコマンドを実行できます。
pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu118
PyTorchがGPUを正しく認識していることを確認するには、WSL2内の対話型Pythonコンソールに入り、次のコマンドを実行します。
インポートトーチ
torch.cuda.device_count()
torch.cuda.is_available()
最初のコマンドは PyTorch をインポートし、2 番目のコマンドはシステムが検出した CUDA 互換デバイスの数を表示し、3 番目のコマンドは ◯ フレームワークがGPUに対応している場合。問題が発生した場合は、通常はドライバー、CUDAのバージョン、WSLが最新の状態であるかどうかを確認します。
マルチGPU環境では、PyTorchは環境変数などを使用して特定のカードの使用を制限することもできます。 CUDA_VISIBLE_DEVICES または、デバイス選択に特化したAPI。これは、機器を複数のプロセスやユーザーと共有する場合に便利です。
WSL2 上での CUDA を使用した TensorFlow と完全な機械学習フロー
TensorFlowは、特にNVIDIA DockerイメージやCUDAおよびcuDNNリポジトリからの厳選されたインストールと組み合わせることで、CUDAを介してWSL2のGPUを活用することもできます。一般的なフローは次のとおりです。
1) WindowsにCUDAサポート付きのNVIDIAドライバーをインストールする既に述べたように、これにより、使用するTensorFlowのリリースとバージョンが互換性があることが保証されます。
2) WSL2で設定します CUDAツールキットとcuDNN WSLにおけるNVIDIA公式CUDAガイドに従っています。
3) オプションとして、GPU サポート付きの TensorFlow の NGC イメージを使用します。このイメージには、適切な CUDA/cuDNN バージョンが既に調整されているため、ライブラリの互換性の問題を回避できます。
環境がGPUを認識すると(これは次のように確認できます) アンビディアスミ (WSL2以降)フル仮想マシンやクラウドへのアップロードを必要とせずに、Windows上のLinuxから直接、負荷の高いモデルをトレーニングできます。これは、 VS Code リモート – WSL そして、ノートブックで快適に作業するためのJupyter。
初心者にとって自信をつける良い方法は、ニューラルネットワークの簡単な例を試して、消費を監視することです。 アンビディアスミ バッチサイズ、レイヤー数、精度(FP16/FP32)などを変更して、GPU負荷がどのように変化するか実験してみましょう。
GPUアクセス検証と監視
大規模モデルのトレーニングを開始する前に、すべてが正しく構成されていることを確認することが重要です。WSL2 以降、star コマンドは アンビディアスミこれにより、GPUの一覧、合計メモリと使用済みメモリ、GPUを消費しているプロセス、温度などが表示されるはずです。
コマンドが「デバイスが見つかりませんでした」のようなメッセージを返した場合、通常は Windowsドライバーが正しくインストールされていないか、WSLが最新ではありません。多くの場合、以下の方法で解決できます。
wsl –シャットダウン
ディストリビューションを再度開いて環境を再読み込みするか、ドライバーを更新してシステムを再起動する。また、次のような追加ツールもあります。 gpustat これにより、GPU負荷のより分かりやすい概要が提供されます。
長時間のトレーニングセッション中は、nvidia-smi または監視スクリプトを備えた別のコンソールを用意しておくことをお勧めします。 温度、メモリ使用量、使用状況を監視するこれは、ボトルネック(例えば、VRAMの不足)や、設定不良によるパフォーマンスの問題を検出するのに役立ちます。
複数のグラフィックカード(NVIDIA、AMD、iGPU)を搭載したシステムにおけるGPUの選択
現代のノートパソコンやデスクトップパソコンには、多くの場合、複数のGPUが搭載されています。たとえば、1つのGPUが複数のGPUを搭載しています。 Intel iGPUまたは統合型AMDチップと専用NVIDIAグラフィックカードWSL2以降、特にグラフィカルアプリ向けのWSLgでは、どちらを使用するかを選択できることが重要になっています。
MicrosoftはWSLgでGPUを選択するための仕組みを文書化しており、アプリケーションが内蔵GPUを使用している状況に遭遇したユーザーは、公式ガイドに従うことで問題を解決している。 WSLgにおけるGPUの選択 microsoft/wslg GitHubリポジトリで入手可能です。
さらに、DirectMLが複数のGPUでサポートされている環境では、環境変数を使用して特定のデバイスを選択できます。
export MESA_D3D12_DEFAULT_ADAPTER_NAME=» »
この変数はアダプター名との文字列一致を実行するので、次のようなものを入力すると 「NVIDIA」名前がNVIDIAで始まる最初のGPUが選択されます。これは、システムがデフォルトで間違ったGPUを選択した場合(例えば、特定の機械学習ワークロードで専用のNVIDIA GPUよりも統合型AMD GPUを優先する場合など)に役立つ方法です。
特に厄介なケース(例えば、FAISSやLangChain、Ollamaなどのフレームワーク内の他のコンポーネントを使用している場合)では、WSLでNVIDIAが認識されているにもかかわらず、誤ったGPUに接続されてしまうことがあります。このような場合、通常はWSLgの設定、前述の環境変数、および特定のライブラリ設定を組み合わせて、正しいデバイスを強制的に使用する必要があります。
ベストプラクティスと一般的な問題の解決
すべてが稼働し始めると、 違いを生み出す優れた実践 快適性と日常的なパフォーマンスにおいて。まず第一に、常に Python仮想環境 またはcondaをインストールし、トレーニングを開始する前にそれらをアクティブ化してください。
source ~/.venvs/ml/bin/activate (または、設定ファイル内の同等のコマンド)
ファイルを保存する Requirements.txt 主要な依存関係を更新しました(たとえば、 pip フリーズ > requirements.txt) を使用すると、別のマシン上やフォーマット後に環境を簡単に再構築でき、手間がかかりません。
もう1つの重要な推奨事項は、直接作業することを避けることです。 /mnt/c/ トレーニングデータや大規模プロジェクトの場合、WSL で Linux ホーム ディレクトリを使用すると、ディスク パフォーマンスが通常はるかに向上します (たとえば、 ~/projects_ml特に、多数のファイルや大量のデータを扱う場合、これは重要です。
インタラクティブな開発のために、 VS Code とリモート – WSL 拡張機能および Jupyter サポート 非常に便利な操作性を提供します。Windowsで編集し、GPUを搭載したLinuxで実行でき、すべてが非常に統合されています。さらに、tmuxやscreenなどのツールを使用して... トレーニングはバックグラウンドで実行されます ターミナルウィンドウを閉じても。
マシンを共有している場合や、負荷の高いプロセスを並列実行している場合は、ファイル内のリソース制限を調整する必要があるかもしれません。 .wslconfig Windowsのスペック(例えば、WSL2が使用できるRAM容量やコア数など)を調整し、コンピュータがクラッシュしないように、負荷の高いワークアウトを開始するタイミングを手動で制御します。
トラブルシューティングに関して、最も典型的な障害には以下のようなものがあります。 nvidia-smi は GPU を検出しません (ドライバの誤りやWSLのバージョンの古さ)、CUDAのバージョンとフレームワーク(PyTorch/TensorFlow)間の非互換性、公式のWSLリポジトリやガイドに従わずにWebから直接CUDAをインストールすることなどが、ライブラリの競合を引き起こす原因となります。一般的には、汎用的なインストールよりも、WSL固有のリポジトリとドキュメントを参照する方が望ましいでしょう。
これらの要素すべてが適切に構成されていれば、最新のWindows 11または10、更新されたWSL2、正しいGPUドライバー、ディストリビューション内のCUDA/cuDNN、必要に応じてDockerおよび/またはDirectMLがあれば、 AIおよび機械学習向けの高性能Linux環境 Windowsの利便性を損なうことなく、このハイブリッドソリューションは非常に強力です。適切に調整すれば、煩雑な仮想マシンやクラウドに大きく依存することなく、複雑なモデルのトレーニング、ワークフローのプロトタイプ作成、コードのデバッグを迅速に行うことができます。
バイトの世界とテクノロジー全般についての情熱的なライター。私は執筆を通じて自分の知識を共有するのが大好きです。このブログでは、ガジェット、ソフトウェア、ハードウェア、技術トレンドなどについて最も興味深いことをすべて紹介します。私の目標は、シンプルで楽しい方法でデジタル世界をナビゲートできるよう支援することです。