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

Windows 11 および Windows 10 のバージョン 21H2 では、TensorFlow 1.15 用の DirectML を使った TensorFlow パッケージを使用して、既存のハードウェアで機械学習 (ML) トレーニングを実行する方法を学生、初心者、専門家に提供します。 TensorFlow 2 で DirectML を使用するには、TensorFlow-DirectML-Plugin を確認してください。 設定が完了したら、既存のモデル スクリプトを使用するか、DirectML リポジトリセットアップのいくつかのサンプルをご覧ください。

Windows 11 または Windows 10 のバージョン 21H2 をインストールする

これらの機能を使用するには、Windows 11 または Windows 10 のバージョン 21H2 をダウンロードしてインストールします。

最新の GPU ドライバーをインストールする

WSL 内に DirectML を使った TensorFlow パッケージをインストールする前に、GPU ハードウェア ベンダーから最新のドライバーをインストールする必要があります。 これらのドライバーを使用すると、Windows GPU が WSL で動作します。

設定アプリの [Windows Update] セクションで [更新プログラムのチェック] を選択するか、GPU ハードウェア ベンダーの Web サイトを確認します。

AMD

Web サイトから AMD のドライバーをダウンロードしてインストールします。 この機能は、次のハードウェアでサポートされています。

  • AMD Radeon™ RX シリーズと Radeon™ VII グラフィックス。
  • AMD Radeon™ Pro シリーズのグラフィックス。
  • Amd Ryzen™ および Ryzen™ PRO Processors と Radeon™ Vega グラフィックス。
  • Amd Ryzen™ および Ryzen™ PRO Mobile Processors と Radeon™ Vega グラフィックス。

互換性のある AMD 製品の完全な一覧については、AMD リリース ノートを参照してください。

Intel

Web サイトから DirectML で使用する Intel のドライバーをダウンロードしてインストールします

NVIDIA

Web サイトから DirectML で使用する NVIDIA のドライバーをダウンロードしてインストールします。 詳細については、「LINUX 用 Windows サブシステム (WSL) の NVIDIA の GPU」のページを参照してください。

DirectML を使った TensorFlow を設定する

WSL をインストールする

上記のドライバーをインストールしたら、WSL を有効にしglibc ベースのディストリビューション (Ubuntu や Debian など) をインストールします。 テストでは、Ubuntu を使用しました。 設定 アプリの [Windows Update] セクションで [更新プログラムの確認] を選択して、最新のカーネルがあることを確認します。

Note

[Windows の更新時に他の Microsoft 製品の更新プログラムを受け取る] が有効になっていることを確認します。 設定 アプリの [Windows Update] セクション内の [詳細オプション] で確認できます。

これらの機能には、5.10.43.3 以降のカーネル バージョンが必要です。 バージョン番号は、PowerShell の次のコマンドを実行して確認できます。

wsl cat /proc/version

Python 環境を設定する

WSL インスタンス内に仮想 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 が WSL にインストールされたら、Python を使用して directml という名前の環境を作成し、次のコマンドでアクティブにします。

Note

以下のコマンドでは、Python 3.6 を使用します。 ただし、tensorflow-directml パッケージは Python 3.5、3.6、または 3.7 環境で動作します。

conda create --name directml python=3.6 

conda activate directml 

DirectML を使った TensorFlow パッケージをインストールする

次のコマンドを実行して、DirectML を使った TensorFlow パッケージを pip でインストールします。

Note

tensorflow-directml パッケージでは、TensorFlow 1.15 のみがサポートされています。

pip install tensorflow-directml

tensorflow-directml パッケージをインストールしたら、2 つのテンソルを追加することで、正常に実行されることを確認できます。 以下の行を対話型の Python セッションにコピーします。

import tensorflow.compat.v1 as tf 

tf.enable_eager_execution(tf.ConfigProto(log_device_placement=True)) 

print(tf.add([1.0, 2.0], [3.0, 4.0])) 

DML デバイスで add 演算子を使った場合、次のような出力が表示されます。

2020-06-15 11:27:18.235973: I tensorflow/core/common_runtime/dml/dml_device_factory.cc:45] DirectML device enumeration: found 1 compatible adapters. 

2020-06-15 11:27:18.240065: I tensorflow/core/common_runtime/dml/dml_device_factory.cc:32] DirectML: creating device on adapter 0 (AMD Radeon VII) 

2020-06-15 11:27:18.323949: I tensorflow/stream_executor/platform/default/dso_loader.cc:60] Successfully opened dynamic library libdirectml.so.ba106a7c621ea741d21598708ee581c11918380 

2020-06-15 11:27:18.337830: I tensorflow/core/common_runtime/eager/execute.cc:571] Executing op Add in device /job:localhost/replica:0/task:0/device:DML:0 

tf.Tensor([4. 6.], shape=(2,), dtype=float32) 

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

サンプルを確認するか、既存のモデル スクリプトを利用してください。 問題が発生した場合や、DirectML を使った TensorFlow パッケージに関するフィードバックがある場合は、Microsoft のチームまでお問い合わせください