Simple Deep Learning mit Amazon SageMaker

Keine Kommentare

In unserem neuesten codecentric.AI-Video geben wir eine kurze Einführung in Amazon SageMaker und zeigen, wie man damit schnell und einfach ein Bildklassifikationsmodell trainieren kann, das Brillenträger von Nicht-Brillenträgern unterscheidet.

Was ist Amazon SageMaker

Amazon SageMaker ist Teil der Amazon Web Services (AWS) und

“ist eine vollständig verwaltete Plattform, die es Entwicklern und Datenwissenschaftlern ermöglicht, schnell und einfach Machine-Learning-Modelle jeder Größenordnung zu erstellen, zu trainieren und zu implementieren.” https://aws.amazon.com/de/sagemaker/

SageMaker ist ein vollständig verwalteter Service, der den gesamten Machine-Learning-Prozess – vom Erstellen, über das Trainieren, bis hin zum Deployment von Machine-Learning-Modellen – so einfach wie möglich machen soll. Verfügbar ist SageMaker in Irland und in den USA.

SageMaker Machine Learning Prozess

Dabei werden viele der “alten Bekannten” aus der AWS-Umgebung in den Ablauf integriert verwendet: Trainingsdaten, Modellartefakte und Modellparameter werden in S3-Buckets gespeichert, wir können IAM-User mit SageMaker-Berechtigung erstellen, und die Modelle laufen auf EC2-Instanzen. Die Vorbereitung der Daten sowie das Trainieren selbst erfolgen in Juypter Notebooks, die in einer Notebook-Instanz laufen. Hierfür können grundsätzlich zwei Methoden verwendet werden: boto3, die AWS SDK für Python oder eine high-level Pythonbibliothek. Jupyter Notebooks hießen früher iPython Notebooks und wurden als Open-Source-Alternative zu Wolfram Notebooks entwickelt; die Notebooks laufen im Web Browser und kombinieren Code (in der Regel Python aber auch Kernel für R, Julia, oder andere Sprachen können eingerichtet werden) mit Markdown-Elementen und zeigen den Output direkt unterhalb der Code-Chunks an. Für die gestartete SageMaker-Instanz öffnet sich ein Dashboard, das alle Dateien in unserer Instanz anzeigt und von dem aus wir auch neue Notebooks erstellen können. Es gibt eine Reihe von “fertigen” Kernels, die viele der gängigen Datenverarbeitungs- und Analysepakete schon vorinstalliert haben (zum Beispiel conda für Python3 oder Python2, für TensorFlow oder MXNet). Deployen können wir ein fertiges Modell dann mit den Amazon SageMaker Hosting Services.

Für das Trainieren von Modellen kann aus verschiedenen Algorithmen gewählt werden. Eine Übersicht gibt es hier. SageMaker hat gängige Machine-Learning-Algorithmen reimplementiert um Parallelisierung zu ermöglichen bzw. zu vereinfachen. So kann effektiv und schnell auch mit größeren Datenmengen gearbeitet werden. Wer speziellere Anwendungsfälle hat, kann auch eigene Algorithmen nutzen; die können dann als Docker Image zur Verfügung gestellt werden. Auch ermöglicht SageMaker sehr gute Skalierbarkeit, da die Trainings- und Hostinginstanzen jederzeit angepasst werden können, um mit größeren Datenmengen umgehen zu können. Auch können mehrere Modelle gleichzeitig deployed werden und somit produktiv laufen.

Was brauche ich, um dem Video-Tutorial folgen zu können?

Da SageMaker in die AWS-Welt eingebettet ist, benötigt man zunächst einen AWS Account. Das Registrieren bei AWS ist an sich kostenlos, man braucht nur eine E-mail-Adresse, Passwort und Kreditkarteninformationen, um genutzte Services abrechnen zu können. Die ersten zwei Monate kann SageMaker kostenlos getestet werden. Aber Achtung: Das Aktivieren des Kontos kann bis zu 24 Stunden dauern!

Empfohlen wird, alle Analysen und Co. nicht mit dem Root User zu machen, sondern für jedes Projekt dedizierte IAM-User anzulegen und diesen die entsprechenden Rechte zu geben. Der Grund ist schlicht, dass dieses Vorgehen größere Sicherheit und Kontrolle gibt. Für SageMaker benötigt der IAM-User die sogenannten „AmazonSageMakerFullAcess“-Rechte. Der komplette Code ist hier in Python geschrieben, Grundkenntnisse in Python sind also empfehlenswert. Außerdem ist es hilfreich, wenn man schon mal mit Jupyter gearbeitet hat (aber selbst wenn nicht, erschließt sich Jupyter sehr schnell).

Kosten

Die einzelnen Preise sind stark von der Menge der Daten, der genutzten Instanzen und der Trainingszeit abhängig. Auch für das Deployment und Abfragen der deployten Modelle fallen Kosten an. Eine Übersicht ist hier zu finden.

Brillen-Klassifikation mit SageMaker

In dem Video zeigen wir, wie wir einen Image-Classifier für einen Datensatz mit codecentric-Mitarbeiterfotos entwickelt haben. Unser Datensatz enthält 460 Bilder. Wir verwenden ein tiefes neuronales Netz. Mit Transfer Learning wird es so traininert, dass es unsere Bilder in die Klassen „Brille“ und „keine-Brille“ einteilt. Transfer Learning macht es möglich, dass wir selbst mit diesem kleinen Datensatz gute Ergebnisse erzielen können. Für SageMaker gibt es eine Reihe von Beispiel-Notebooks, die zeigen, wie SageMaker verwendet werden kann. Diese Demo orientiert sich an diesen Beispiel-Notebooks (speziell an: Image-classification-lst-format.ipynb). Unser fertiges SageMaker Notebook ist hier bei Github zu finden.

codecentric-Mitarbeiterfotos

In dem Video-Tutorial demonstrieren wir, wie wir zunächst die Bilder vorbereiten und für das Modell zugänglich machen. Dann teilen wir sie in Trainings-, Validierungs- und Testdaten auf. Im nächsten Schritt definieren und konfigurieren wir den TrainingsJob. Der Anfrage an die CreateTrainingJob API müssen wir dafür folgende Informationen mitgeben:

  • den Algorithmus (als Pfad zum entsprechenden Container)
  • die Hyperparameter
  • Input- & Output-Konfiguration (als Pfad zu den entsprechenden S3-Buckets und Ressourcen)

Die Ergebnisse des Trainings, also das Modell plus Konfiguration, sind in unserem S3-Bucket gespeichert.

Und schließlich konfigurieren wir den Endpunkt für das fertige Modell und deployen ihn. Denn um Vorhersagen mit einem Modell machen zu können, müssen wir es zuerst deployen; das passiert in drei Schritten:

  • Modelle erstellen (Hier geben wir den Pfad zum S3-Bucket an, in dem die Trainingsergebnisse gespeichert wurden.)
  • Endpunkt konfigurieren
  • Endpunkt erstellen (Wenn der Endpunkt erstellt ist, werden die entsprechenden Machine-Learning-Instanzen hochgefahren, das Modell wird deployed und der Endpoint kann nun angesprochen werden.)

So können wir per API auf unser Modell zugreifen und die Testbilder evaluieren.

Wenn wir unsere TrainingsJobs, Instanzen etc. überwachen wollen (was in der Praxis immer eine gute Idee ist), müssen die entsprechenden Logs in der Erstellung der Buckets und Instanzen aktiviert sein. Dann können wir die Ergebnisse der Log-Files im SageMaker Dashboard oder in Amazon CloudWatch anzeigen lassen.

Am Ende müssen wir noch “aufräumen”; das heißt, alle Ressourcen, die wir nicht mehr benötigen (wie S3-Buckets, Notebook-Instanzen, Modelle und Endpunkte), sollten wir stoppen oder löschen. Ansonsten fallen dafür weitere Kosten an.

Shirin Glander

Shirin hat in der Bioinformatik promoviert. Sie wendet Analyse- & Visualisierungsmethoden verschiedenster Bereiche an – z.B. Machine Learning, klassische Statistik, Textanalyse, etc. – um Informationen aus Daten zugänglich und nutzbar zu machen.

Oliver Moser

Oliver interessiert sich sehr für Linux und viele andere Open Source Technologien. In den letzten Jahren konzentriert er sich hauptsächlich auf Computer Vision, (AWS) Cloud, Big Data, IT Security und Deployment Automation (DevOps) Themen.

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.