Machine Learning: Microsoft verbindet TensorFlow mit DirectX
Der Fork des Machine-Learning-Frameworks nutzt Hardwarebeschleunigung unter Windows und dem Windows-Subsystem für Linux.
Microsoft hat mit TensorFlow-DirectML eine auf DirectX 12 ausgelegte Version des von Google initiierten Machine-Learning-Frameworks (ML) veröffentlicht. Das Open-Source-Projekt ist ein Fork von TensorFlow und setzt auf der ebenfalls quelloffenen Library DirectML auf. Es läuft sowohl nativ auf Win32 als auch auf dem Windows Subsystem for Linux (WSL).
Virtuelles Device im Backend
Das separat verfügbare Projekt DirectML ist eine Low Level Library, die auf Direct3D 12 aufbaut und Hardwarebeschleunigung für ML-Anwendungen bietet. Die Bibliothek abstrahiert die Ebene zur GPU und arbeitet unter anderem mit Chips von Nvidia, AMD, Intel und Qualcomm zusammen.
TensorFlow-DirectML integriert das DirectML-Backend direkt in das ML-Framework und führt dabei zum Beschleunigen "DML" als neues Device ein, das sich als Alternative für "GPU" verwenden lässt.
Bausteine der Abstraktion
DirectML bietet eine sogenannte Device Runtime, die sich um die Verwaltung des Speichers kümmert, Tensoren vom und zum Host kopiert, GPU-Befehle aufnimmt und die Arbeitsabläufe zwischen Host beziehungsweise CPU und dem Device synchronisiert.
Die Runtime bietet mit DmlDevice
eine Implementierung der tf.device
-Klasse in TensorFlow. DmlKernelWrapper
implementiert das OpKernel
-Interface des ML-Frameworks, und DmlKernel
bietet eine konkrete Implementierung eines TensorFlow-Operators.
Verwaltung und Zeitplan
Für die Verwaltung der DmlKernel
-Instanzen ist der DmlKernelManager
zuständig. Er legt sie auf einem Cache ab, um das Rekompilieren bereits existierender Implementierungen zu vermeiden.
Der DmlAllocator
verwaltet den GPU-Buffer. Schließlich kümmert sich der DmlExecutionContext
um das Scheduling der Aufgaben für die GPU wie das Ausführen von Operatoren und das Kopieren von Speicherbereichen.
Weitere Details lassen sich Microsofts Cloud-Blog entnehmen. Der Sourcecode von TensorFlow-DirectML ist auf GitHub zu finden.
(rme)