#KIWerkstatt

Auf dem ersten Meetup der KI Werkstatt hat Johannes das Thema neuronale Netze in Verbindung mit Keras vorgestellt. Als Anwendungsbeispiel für die neuronalen Netze diente hierbei die Erkennung von handgeschriebenen Ziffern. An diesem Beispiel wurde der gesamte Prozess, von der Vorbereitung über das Training des Modells bis hin zur Veröffentlichung einer zugehörigen Testanwendung gezeigt.
Hierbei wurde noch einmal deutlich, dass auch für die Berechnung bzw. das Trainieren kleinerer neuronaler Netze eine nicht unerhebliche Rechenleistung benötigt wird. Erschwerend kommt noch hinzu, dass man in der Regel mehr als einen Trainingsdurchlauf benötigt, um das “beste” Modell zu finden. Neben der Rechenleistung benötigt man also auch Speicherplatz, um die berechneten Modelle mit ihren Parametern und Ergebnissen zu speichern. So kann man am Ende aus allen Modellen das „beste“ Modell auswählen.
An dieser Stelle kommt der Azure Machine Learning Workspace (Azure ML) ins Spiel. Beim Azure ML Workspace handelt es sich um eine Cloud-basierte Umgebung, um Daten vorzubereiten sowie Modelle zu trainieren, zu testen, zu verwalten und zu veröffentlichen (siehe Abbildung 1). Um eine möglichst große Anzahl an Nutzern anzusprechen, unterstützt Azure ML unter anderem Python sowie die einige der weit verbreitetsten Frameworks wie PyTorch, Tensorflow oder scikit-learn.

In diesem Artikel werden wir uns das Erstellen und Trainieren eines Modells mit Hilfe von Azure ML etwas näher anschauen. Im Folgenden werden wir das Beispiel und den Code aus dem Blogbeitrag von Johannes  nehmen und das Modell mit Hilfe von Azure ML trainieren. Das Ziel hierbei ist es den bestehenden Code nur minimal anzupassen, das Modell in der Cloud zu Trainieren und dabei den Fortschritt des Trainings auszugeben.
Um die folgenden Schritte nachvollziehen zu können, benötigt man ein Microsoft Konto sowie ein Azure Konto. Beides kann kostenlos erstellt werden. Wenn man ein neues Azure Konto erstellt, bekommt man einmalig 170 EUR als Startguthaben geschenkt.
Wenn man ein Microsoft und Azure Konto hat, meldet man sich im Azure Portal an und erstellt einen neuen Azure Machine Learning Workspace (siehe Abbildung 2 und 3). Der Workspace als solches ist hierbei kostenlos, kostenpflichtig sind nur die Azure-Ressourcen, die für das Trainieren der Modelle gebraucht werden (hierfür kann das Startguthaben verwendet werden).

Abb. 2: Azure ML Workspace erstellen (1/2)

Abb. 3: Azure Machine Learning Workspace erstellen (2/2)

Nachdem der Workspace erstellt wurde, wird jetzt ein Jupyter Notebook erstellt. Das Notebook kann hierbei in einer lokalen Umgebung erstellt werden oder man kann Azure Notebooks (aktuell noch im Preview Status) verwenden. Alternativ kann das Ganze auch mit Hilfe von Visual Studio Code und dem Azure Machine Learning Plugin ausgeführt werden. Im Folgenden werden wir hier die Azure Notebooks verwenden, da hierfür vorab nichts installiert oder konfiguriert werden muss.
Nachdem man sich mit seinem Microsoft Konto bei Azure Notebooks anmeldet hat, muss man ein neues Projekt anlegen und anschließend ein neues Notebook mit Python 3.6. Anschließend kann in dem Notebook getestet werden, ob das Azure ML SDK bereits installiert ist. Wenn das SDK nicht installiert sein sollte, kann man dies per pip install im Terminal auf Projektebene nachholen.
Wenn alles korrekt installiert ist, bekommt man die Version des SDKs angezeigt (siehe Abbildung 4).

Abb. 4: Azure ML SDK

In dem neu angelegten Projekt, in dem sich auch das Notebook befindet, muss nun eine neue Datei namens config.json erstellt werden. In dieser Datei müssen dann der Workspacename, die Location, die Subscription-ID und die Resourcegroup eingetragen werden (siehe Abbildung 5). Die Werte findet man alle in der Übersicht des am Anfang erstellten Azure ML Workspace im Azure Portal (siehe Abbildung 6).

Abb. 5: config.json

Abb. 6: Azure Machine Learning Workspace Übersicht

Zusätzlich zu der config.json müssen noch die beiden Dateien train.py und computeMetrics.py hochgeladen werden. Die Dateien findet man unter dem GitHub Account der MT AG.  Die Datei computeMetrics.py beinhaltet ein Callback für Keras, das verwendet wird, um den Fortschritt des Trainings grafisch dazustellen. Theoretisch hätte man das ursprüngliche Skript auch unangepasst verwenden können, aber dann hätte man keine Ausgaben über den Fortschritt während des Trainings.
Wenn alle Dateien im Projektordner vorhanden sind, kann die Verbindung zum Azure ML Workspace getestet werden (siehe Abbildung 7).
 

Abb. 7: Verbindung zum Azure ML Workspace

Wenn die Verbindung erfolgreich hergestellt wurde, muss als Nächstes das Zielsystem, auf dem das Modell trainiert wird, definiert werden (siehe Abbildung 8). Hierbei kann der lokale Computer als Ziel definiert werden oder man kann einen Cluster von CPU- oder GPU-Rechnern aus der Cloud verwenden. Im Folgenden werden wir einen Cluster mit einem Knoten und einer NVIDIA Grafikkarte verwenden (NC-Serie). Eine Liste der zur Verfügung stehenden VMs findet man hier. Der Preis für die ausgewählte VM in unserem Beispiel liegt aktuell bei 0,9833€ pro Stunde. Eine Übersicht über die Preise der verschiedenen VMs findet man hier.

Abb. 8: Ziel für das Training des Modells

Nachdem nun das Ziel definiert ist, muss jetzt nur noch das Experiment definiert und gestartet werden (siehe Abbildung 9).

Abb. 9: Vorbereiten des Experiments

In dem Moment, in dem das Experiment gestartet wird, wird im Hintergrund eine VM initialisiert und mit einem entsprechenden Docker Image bestückt. Das verwendete Docker Image wird dann in der Container Registry innerhalb des Azure ML Workspaces abgelegt.
Sobald die VM im Hintergrund initialisiert ist und die Berechnung läuft, kann man sich den Status der Berechnung ausgeben lassen (siehe Abbildung 10). Das ist insbesondere dann sinnvoll, wenn man bereits frühzeitig erkennen sollte, dass sich das Modell nicht wie gewünscht entwickelt. In diesem Fall kann man den Trainingslauf abbrechen.

Abb. 10: Status des Trainings

Wenn das Experiment beendet ist, findet man im Azure Portal in dem entsprechenden Workspace unter der Rubrik Experimente einen neuen Eintrag zu dem Experiment, so dass man sich dann die Details zu dem Experiment ansehen kann (siehe Abbildung 11). Hier kann man zum einen die benötige Zeit einsehen und auch auf das Modell (Outputs) und die Log-Dateien zugreifen. Der verwendete GPU Cluster beziehungsweise die verwendeten VMs werden, sofern man nichts Anderes konfiguriert hat, nach 120 Sekunden Inaktivität heruntergefahren und erzeugen dann auch keine Kosten mehr. Lediglich für die Container Registry fallen weitere Kosten, sofern man diese nicht im Portal löscht. Aktuell beträgt der Preis für die Container Registry 0,141€ pro Tag.

Abb. 11: Experiment

Mit diesem letzten Schritt haben wir das Ziel, ein Modell mit Hilfe des Azure ML Workspaces zu trainieren und zu speichern, erreicht.
Zusammenfassend wurde in diesem Artikel gezeigt, wie man bestehende Python Projekte um Azure ML Workspaces ergänzt und wo die Vorteile von Azure ML Workspaces liegen. Hierbei wurde aber nur auf einen Teil der Funktionen eingegangen. Die Azure ML Workspaces bieten unter Anderem noch die Möglichkeit ein trainiertes Modell in einen Webservice einzubinden und das Ganze direkt in der Cloud bereitzustellen.

Links zu weiterführenden Informationen

Announcing general availability of Azure Machine Learning service: A look under the hood
Tutorial: Train an image classification model with Azure Machine Learning service
Train TensorFlow and Keras models with Azure Machine Learning service
Training, hyperparameter tune, and deploy with Keras

Jetzt teilen auf:

Jetzt kommentieren