Aktivieren von TensorFlow mit DirectML in WSL

Windows 11 and Windows 10, Version 21H2 bieten Schülern, Anfängern und Profis eine Möglichkeit, Schulungen für maschinelles Lernen (ML) auf ihrer vorhandenen Hardware mithilfe des Pakets TensorFlow mit DirectML für TensorFlow 1.15 auszuführen. Um DirectML auf TensorFlow 2 zu verwenden, schauen Sie sich das TensorFlow-DirectML-Plug-In an. Nach der Einrichtung können Sie Ihre vorhandenen Modellskripts verwenden oder ein paar Beispiele im DirectML-Repository auschecken.

Installieren Sie Windows 11 oder Windows 10. Version 21H2

Um diese Features zu verwenden, können Sie Windows 11 oder Windows 10, Version 21H2, herunterladen und installieren.

Installieren Sie die neuesten GPU-Treiber.

Bevor Sie das TensorFlow-Paket mit DirectML-Paket in WSL installieren, müssen Sie die neuesten Treiber von Ihrem GPU-Hardwareanbieter installieren. Mit diesen Treibern kann die Windows-GPU mit WSL arbeiten.

Wählen Sie im Abschnitt Windows Update der App Einstellungen die Option Nach Updates suchen aus.

AMD

Laden Sie den AMD-Treiber von ihrer Website herunter, und installieren Sie sie. Diese Funktionalität wird auf der folgenden Hardware unterstützt:

  • AMD Radeon™ RX Serie und Radeon™ VII Grafiken.
  • AMD Radeon™ Pro-Serien Grafiken.
  • AMD Ryzen™ und Ryzen™ PRO Prozessoren mit Radeon™ Vega-Grafiken.
  • AMD Ryzen™ und Ryzen™ PRO Mobile Prozessoren mit Radeon™ Vega-Grafiken.

Eine vollständige Liste kompatibler AMD-Produkte finden Sie in den AMD-Versionshinweisen.

Intel

Laden Sie intel-Treiber herunter, und installieren Sie sie, um mit DirectML von ihrer Website zu verwenden.

NVIDIA

Laden Sie NVIDIA-Treiber herunter, und installieren Sie sie, um mit DirectML von ihrer Website zu verwenden. Weitere Informationen finden Sie auf der Seite "GPU von NVIDIA in Windows-Subsystem für Linux (WSL)".

Einrichten von TensorFlow mit DirectML

Installieren von WSL

Nachdem Sie den obigen Treiber installiert haben, stellen Sie sicher, dass Sie WSL aktivieren und eine glibc-basierte Verteilung (z. B. Ubuntu oder Debian) installieren. Für unsere Tests haben wir Ubuntu verwendet. Stellen Sie sicher, dass Sie über den neuesten Kernel verfügen, indem Sie im Windows Update-Abschnitt der Einstellungen-App nach Updates suchen.

Hinweis

Vergewissern Sie sich, dass Sie die Option Updates für andere Microsoft-Produkte erhalten, wenn Sie Windows aktualisieren aktiviert haben. Sie finden sie in den erweiterten Optionen im Windows Update-Abschnitt der Einstellungen-App.

Für diese Features benötigen Sie eine Kernelversion von 5.10.43.3 oder höher. Sie können Ihre Versionsnummer mithilfe des folgenden Befehls in PowerShell überprüfen.

wsl cat /proc/version

Einrichten einer Python-Umgebung

Es wird empfohlen, eine virtuelle Python-Umgebung in Ihrer WSL-Instance einzurichten. Es gibt viele Tools, die Sie verwenden können, um eine virtuelle Python-Umgebung einzurichten. In dieser Anleitung wird miniconda von Anaconda verwendet. Für den Rest dieses Setups wird davon ausgegangen, dass Sie eine miniconda-Umgebung verwenden.

Installieren Sie Miniconda, indem Sie dem Leitfaden auf der Anaconda-Site folgen oder durch Ausführen der folgenden Befehle in WSL.

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

Sobald Miniconda in WSL installiert ist, erstellen Sie mithilfe von Python eine Umgebung namens directml und aktivieren diese mit den folgenden Befehlen:

Hinweis

In den folgenden Befehlen verwenden wir Python 3.6. Das tensorflow-directml-Paket funktioniert jedoch in Umgebungen mit Python 3.5, 3.6 oder 3.7.

conda create --name directml python=3.6 

conda activate directml 

Installieren des Pakets TensorFlow mit DirectML

Installieren des Pakets TensorFlow mit DirectML über PIP, indem Sie den folgenden Befehl ausführen:

Hinweis

Das tensorflow-directml-Paket unterstützt nur TensorFlow 1.15.

pip install tensorflow-directml

Sobald Sie das Paket tensorflow-directml installiert haben, können Sie überprüfen, ob es ordnungsgemäß ausgeführt wird, indem Sie zwei Tensoren hinzufügen. Kopieren Sie die folgenden Zeilen in eine interaktive Python-Sitzung.

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])) 

Es sollte eine ähnliche Ausgabe wie die folgende angezeigt werden, wobei der Add-Operator (Hinzufügen) auf dem DML-Gerät platziert ist.

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) 

Beispiele und Feedback für TensorFlow mit DirectML

Schauen Sie sich unsere Beispiele an, oder nutzen Sie Ihre bestehenden Modellskripts. Wenn Sie Probleme haben oder Feedback zum TensorFlow mit DirectML-Paket haben, wenden Sie sich bitte hier an unser Team.