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.
Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren
YouTube immer entsperren
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.
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 .
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.
Weiterführende Informationen und Source Code:
Amazon SageMaker Dokumentation: https://aws.amazon.com/de/documentation/sagemaker/
Link zum Source Code: https://github.com/codecentric/codecentric.AI/blob/master/simple_deeplearning_aws_sagemaker/glasses-classifier.ipynb
Weitere Beiträge
von Shirin Elsinghorst & Oliver Moser
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*innen
Shirin Elsinghorst
Team Lead & Consultant Data/AI
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Oliver Moser
Service Lead GenAI
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.