© NokkieVector/Shutterstock.com
Windows Developer
Einrichtung, Einbindung und Modellerstellung für C#-Apps

Einführung in WinML

Es scheint, als habe sich ganz heimlich und unter dem Radar der meisten ein weiteres AI-Framework eingeschlichen, das in Kürze auch als finales Release erscheinen wird. Grund genug, sich dem Ganzen schon einmal etwas anzunähern. Bei dem Framework oder SDK handelt sich um Windows ML. Was ist aber nun das Besondere und warum zum Teufel braucht es ein weiteres Framework, um neuronale Netze auszuführen?

Marcel Tilly


Dass Windows ML mehr ist als einfach nur Microsofts Antwort auf TensorFlow oder Keras auf GPUs und TPUS, soll dieser Artikel zeigen. Windows ML, oder kurz WinML, ist eine Implementierung auf Basis von DirectX 12. Wenn man bedenkt, dass die meisten AI-Frameworks die GPU als Hardwarebeschleunigung zur Berechnung und Ausführung von Deep Neural Networks verwenden, liegt es nahe, dass man die GPU und auch andere DirectX-Devices über DirectML abstrahieren kann. Schließlich macht DirectX das bei Grafikanwendungen und Spielen auch. Da ist es auf der Anwendungsschicht egal, ob eine NVidia GPU, eine Radeon-Grafikkarte oder nur eine CPU zur Verfügung steht. Das wird durch DirectX und in unserem Fall durch die WinML Runtime gekapselt (Abb. 1).

Abb. 1: WinML-Stack

Als Applikationsschicht werden APIs zu C#, C++ und JavaScript angeboten. Entweder werden die Modelle in WinML trainiert (zurzeit eher unüblich) oder über das offene Format Open Neural Network eXchange (ONNX) importiert. ONNX ist ein offenes Format, das zum Austausch von DL-Modellen von Facebook und Microsoft entwickelt wurde, um eine größere Interoperabilität zwischen den einzelnen Frameworks in der AI-Community zu erreichen. Die Inference Engine in WinML kann die ONNX-Modelle importieren und dann lokal innerhalb einer Windows-Anwendung ausführen.

Das ist sehr schick und lässt sich zudem elegant in einer C#-UWP-App implementieren. Das ist Grund genug, sich das Ganze einmal an einem kleinen Beispiel etwas genauer anzusehen.

Voraussetzungen

Ganz so einfach geht es nicht, denn da WinML Teil der Windows-Plattform ist, sind ein paar Grundvoraussetzung zu erfüllen. Zum einen benötigt man ein Windows-10-Betriebssystem und die OS-Build-Nummer sollte mindestens 17738 sein. Diese Build-Nummer erfährt man, wenn man WIN + R drückt und dann in das Feld winver eingibt. In dem Fenster steht dann die installierte Build-Nummer. Außerdem benötigt man das Windows 10 SDK 17738 oder neuer. Die Version des installierten Windows 10 SDK erhält man aus der Datei C:\Program Files (x86)\Windows Kits\10\ SDKManifest.xml. Und last but not least, ein Visual Studio 2017. Schon ist man gerüstet für das Abenteuer WinML!

Ein Wort über ONNX

Wie bereits erwähnt, ist ONNX das offene Format zum Austausch von Deep Neural Networks. ONNX wird derzeit von Amazon, Facebook und Microsoft unterstützt. Auf der ONNX-Webseite [2] wird erklärt, welche Formate – z. B. Keras, PyTorch, TensorFlow, CNTK etc. – mit dem ONNX-Tool importiert oder exportiert werden kön...

Windows Developer
Einrichtung, Einbindung und Modellerstellung für C#-Apps

Einführung in WinML

Es scheint, als habe sich ganz heimlich und unter dem Radar der meisten ein weiteres AI-Framework eingeschlichen, das in Kürze auch als finales Release erscheinen wird. Grund genug, sich dem Ganzen schon einmal etwas anzunähern. Bei dem Framework oder SDK handelt sich um Windows ML. Was ist aber nun das Besondere und warum zum Teufel braucht es ein weiteres Framework, um neuronale Netze auszuführen?

Marcel Tilly


Dass Windows ML mehr ist als einfach nur Microsofts Antwort auf TensorFlow oder Keras auf GPUs und TPUS, soll dieser Artikel zeigen. Windows ML, oder kurz WinML, ist eine Implementierung auf Basis von DirectX 12. Wenn man bedenkt, dass die meisten AI-Frameworks die GPU als Hardwarebeschleunigung zur Berechnung und Ausführung von Deep Neural Networks verwenden, liegt es nahe, dass man die GPU und auch andere DirectX-Devices über DirectML abstrahieren kann. Schließlich macht DirectX das bei Grafikanwendungen und Spielen auch. Da ist es auf der Anwendungsschicht egal, ob eine NVidia GPU, eine Radeon-Grafikkarte oder nur eine CPU zur Verfügung steht. Das wird durch DirectX und in unserem Fall durch die WinML Runtime gekapselt (Abb. 1).

Abb. 1: WinML-Stack

Als Applikationsschicht werden APIs zu C#, C++ und JavaScript angeboten. Entweder werden die Modelle in WinML trainiert (zurzeit eher unüblich) oder über das offene Format Open Neural Network eXchange (ONNX) importiert. ONNX ist ein offenes Format, das zum Austausch von DL-Modellen von Facebook und Microsoft entwickelt wurde, um eine größere Interoperabilität zwischen den einzelnen Frameworks in der AI-Community zu erreichen. Die Inference Engine in WinML kann die ONNX-Modelle importieren und dann lokal innerhalb einer Windows-Anwendung ausführen.

Das ist sehr schick und lässt sich zudem elegant in einer C#-UWP-App implementieren. Das ist Grund genug, sich das Ganze einmal an einem kleinen Beispiel etwas genauer anzusehen.

Voraussetzungen

Ganz so einfach geht es nicht, denn da WinML Teil der Windows-Plattform ist, sind ein paar Grundvoraussetzung zu erfüllen. Zum einen benötigt man ein Windows-10-Betriebssystem und die OS-Build-Nummer sollte mindestens 17738 sein. Diese Build-Nummer erfährt man, wenn man WIN + R drückt und dann in das Feld winver eingibt. In dem Fenster steht dann die installierte Build-Nummer. Außerdem benötigt man das Windows 10 SDK 17738 oder neuer. Die Version des installierten Windows 10 SDK erhält man aus der Datei C:\Program Files (x86)\Windows Kits\10\ SDKManifest.xml. Und last but not least, ein Visual Studio 2017. Schon ist man gerüstet für das Abenteuer WinML!

Ein Wort über ONNX

Wie bereits erwähnt, ist ONNX das offene Format zum Austausch von Deep Neural Networks. ONNX wird derzeit von Amazon, Facebook und Microsoft unterstützt. Auf der ONNX-Webseite [2] wird erklärt, welche Formate – z. B. Keras, PyTorch, TensorFlow, CNTK etc. – mit dem ONNX-Tool importiert oder exportiert werden kön...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang