WSL 2 で DirectML を使った PyTorch を有効にする

このプレビューでは、学生と初心者が torch-directml パッケージを使用して、既存のハードウェア上の機械学習 (ML) 領域で知識の構築を開始する方法を提供します。 設定が完了したら、サンプルから始めることができます。

Note

一部の情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft はここに示されている情報について、明示か黙示かを問わず、一切保証しません。

Windows のバージョンを確認する

ネイティブ Linux 用 Windows サブシステム (WSL) の torch-directml パッケージは、Windows 11 以降で動作します。 ビルド バージョン番号を確認するには、実行コマンド (Windows ロゴ キー + R) を使用して winver を実行します。

GPU ドライバーの更新プログラムを確認する

最新の GPU ドライバーがインストールされていることを確認します。 設定アプリの [Windows Update] セクションで [更新プログラムのチェック] を選択します。

Torch-DirectML プレビューを設定する

WSL 2 のインストール

Linux 用 Windows サブシステム (WSL) 2 をインストールするには、「WSL のインストール」の手順を参照してください。

次に、microsoft/wslg GitHub リポジトリの README.md ファイルの手順に従って、WSL GUI ドライバーをインストールします。

Python 環境を設定する

WSL 2 インスタンス内に仮想 Python 環境を設定することをお勧めします。 仮想 Python 環境の設定に使用できるツールは多数あります — このトピックでは、Anaconda の Miniconda を使用します。 このセットアップの残りの部分では、Miniconda 環境を使用するものとします。

Anaconda のサイトのインストール ガイダンスに従うか、WSL で次のコマンドを実行して、Miniconda をインストールします。

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 
bash Miniconda3-latest-Linux-x86_64.sh

Miniconda がインストールされたら、directml という名前の Python 環境を作成し、次のコマンドでアクティブ化します。

conda create --name directml -y
conda activate directml

PyTorch と Torch-DirectML プラグインをインストールする

Note

torch-directml パッケージは PyTorch 1.13 のみをサポートします。

Torch-DirectML の最新リリースはプラグイン モデルに従います。つまり、インストールするパッケージが 2 つあります。 まず、次のコマンドを実行して、PyTorch 依存関係をインストールします。

conda install numpy pandas tensorboard matplotlib tqdm pyyaml -y
pip install opencv-python
pip install wget
pip install torchvision

次に、PyTorch をインストールします。 ここでは CPU バージョンをインストールするだけで済みますが、他のコンピューティング プラットフォームが必要な場合は、PyTorch の Web サイトのインストール手順に従ってください。

conda install pytorch cpuonly -c pytorch

最後に、Torch-DirectML プラグインをインストールします。

pip install torch-directml

検証とデバイスの作成

Torch-DirectML パッケージをインストールしたら、2 つのテンソルを追加することで、正常に実行されることを検証できます。 最初に対話型の Python セッションを開始し、次の行で Torch をインポートします。

import torch
import torch_directml
dml = torch_directml.device()

Torch-DirectML プラグインの現在のリリースは、"PrivateUse1" Torch バックエンドにマップされています。 新しい torch_directml.device() API は、テンソルを DirectML デバイスに送信するための便利なラッパーです。

DirectML デバイスを作成したら、2 つの単純なテンソルを定義できるようになりました。1 を含む 1 つのテンソルと 2 を含む別のテンソルです。 テンソルを "dml" デバイスに配置します。

tensor1 = torch.tensor([1]).to(dml) # Note that dml is a variable, not a string!
tensor2 = torch.tensor([2]).to(dml)

テンソルを一緒に追加し、結果を出力します。

dml_algebra = tensor1 + tensor2
dml_algebra.item()

次の例のように、出力される数値 3 が表示されます。

>>> import torch
>>> tensor1 = torch.tensor([1]).to(dml)
>>> tensor2 = torch.tensor([2]).to(dml)
>>> dml_algebra = tensor1 + tensor2
>>> dml_algebra.item()
3

DirectML を使った PyTorch のサンプルとフィードバック

これで、ML トレーニングの詳細を学習する準備ができました。 サンプルをご確認のうえ、作業を開始してください。 問題が発生した場合、または DirectML を使った PyTorch のパッケージに関するフィードバックがある場合は、こちらの Microsoft のチームまでお問い合わせください