Wieso Machine Learning in der Cloud? – am Beispiel Amazon SageMaker

Die Marketing-Seiten der drei Hyperscaler Amazon, Azure und Google versprechen viel. Was steckt nun wirklich dahinter?

Autor: Andri Lareida

Zusammen mit unserem Kunden entwickeln wir eine Daten-Pipeline zur Klassifikation von E-Mails auf der Basis von Amazon Web Services (AWS). Für die Bearbeitung der Daten setzen wir auf serverlose Lambda-Funktionen, die wir mit Kinesis Data Streams entkoppeln (Grafik 1). Die Machine Learning (ML) Komponente unserer Pipeline wird in SageMaker trainiert und bereitgestellt.

20200305_Sagemaker_Architektur_ALR_Webseite.png
Grafik 1: Daten-Pipeline

Der Use Case

Unser Kunde erhält täglich Tausende E-Mails von seinen Kunden mit Rückmeldungen zum Service oder Anfragen zum Angebot. Das stellt unseren Partner vor zwei grundsätzliche Probleme: 

  1. Das Volumen der E-Mails nimmt stetig zu
  2. Der Endkunde erwartet eine schnelle Beantwortung

Heute werden die eingehenden E-Mails von Mitarbeitenden bearbeitet und entsprechend kategorisiert. Dies kann bis zu drei Tagen dauern. Um die Kategorien schneller analysieren zu können, entwickeln wir einen ML-Algorithmus, der eingehende E-Mails kategorisiert. In einem zukünftigen Schritt sollen den Mitarbeitenden Vorschläge für die Antwort gemacht werden.

Machine Learning in der Cloud

Unser ML-Modell durchläuft seinen Lebenszyklus (Grafik 2) immer wieder: 

  • Daten sammeln
  • Modell entwickeln
  • Modell trainieren
  • Modell evaluieren
  • Modell bereitstellen
  • Modell als Dienst anbieten
  • Rückmeldungen sammeln
  • Performanz überwachen

Dieser Zyklus wird wiederholt, um das Modell an Veränderungen seiner Umwelt anzupassen. Beobachten wir eine Verschlechterung der Performanz, wird der Zyklus neu angestossen und das Modell mit neuen Daten trainiert oder sogar weiterentwickelt.

20200306_Sagemaker_LifeCycle_de_ALR_Webseite.png
Grafik 2: Machine Learning Lebenszyklus

Amazon SageMaker unterstützt unsere Modelle im Training und in der Bereitstellung. Als vollständig verwalteter Cloud-Dienst bietet SageMaker die Vorteile der Cloud. In unserem Fall:

  • Keine Fixkosten

    Das Training von unserem aktuellen Modell (BERT) verlangt nach leistungsstarken GPUs. Dank der Flexibilität von Cloud-Ressourcen kann auf die Anschaffung teurer Hardware verzichtet werden, die in unserem Fall auch nur für das Training benötigt werden würden.

  • Skalierung

    Unsere Workloads lassen sich gut über mehrere GPUs oder sogar Nodes verteilen. Wir können ein Training beschleunigen, indem wir mehr Cloud-Ressourcen für eine kürzere Periode beziehen. D. h. wir haben zwar doppelte Kosten für die doppelten Ressourcen, brauchen diese aber nur halb so lange. Die Kosten für ein Training bleiben somit fast konstant.

  • Keine Wartung

    SageMaker stellt die gesamte Plattform bereit, somit müssen keine Hardware und Betriebssysteme verwaltet werden. Unser Team kann sich ganz auf die Entwicklung konzentrieren, da so gut wie keine Wartungsaufgaben anstehen.

SageMaker wurde entwickelt, um Machine Learning in der Cloud einfacher zu machen. SageMaker nimmt Datascientists und Engineers repetitive Arbeit ab, damit sich diese auf das Wesentliche konzentrieren können.

  • «SageMaker bietet Funktionen, die über die generellen Vorteile der Cloud hinausgehen.»
    Andri Lareida Senior Consultant ipt
  • Schnelle Entwicklung
    SageMaker stellt fertig entwickelte Modelle zur Verfügung, die nur noch auf eine spezifische Aufgabe trainiert werden müssen. Somit lassen sich in kürzester Zeit Proof-of-Concepts umsetzen. Für eigene Modelle stellt SageMaker Container bereit, die häufig benötigte Bibliotheken schon mitbringen und flexibel erweitert werden können.
     
  • Trainieren
    SageMaker bietet Unterstützung beim Verwalten von Trainings-Daten. Das Training kann per Klick gestartet werden. Dazu muss nur der Speicherort der Daten angegeben werden. SageMaker bietet Hyperparameter-Optimierung, wobei es mittels Bayes-Optimierung aus Tausenden Modellparameterkombinationen die beste findet.
     
  • Bereitstellen
    Ist ein Modell trainiert, kann es per Klick bereitgestellt werden. SageMaker installiert das Modell auf einer EC2 Instanz und stellt einen HTTP REST Endpunkt bereit, über welchen das Modell aufgerufen werden kann.

Wie SageMaker im Projekt hilft

In unserem konkreten Projekt benutzen wir SageMaker für das Training unseres Algorithmus und die Bereitstellung des fertig trainierten Modells. Dies nimmt unseren Data-Scientists und -Engineers Arbeit ab, die sie wieder in die Verbesserung des Algorithmus und der Daten-Pipeline stecken können.

Für die Entwicklung stellt uns SageMaker Docker-Images zur Verfügung, die schon mit den nötigen Treibern und ML-Bibliotheken versehen sind. Die Entwickler müssen sich nur noch um das Wichtigste, das eigene Modell, und das Laden der Daten kümmern.

Ist ein Entwicklungsschritt abgeschlossen, wird das Training per Script gestartet. Für das Training müssen das zu verwendende Datenset, Grenzen der Hyperparameter-Optimierung sowie die Ablage der entstehenden Artefakte definiert werden. SageMaker führt das Training mehrfach durch, bis die beste Kombination der Parameter gefunden wird. Das trainierte Modell, sowie die Auswertung der Test-Ergebnisse werden in einem S3 Bucket abgelegt.

Entscheiden wir uns dafür, ein neues Modell in die Produktion zu verschieben, wird das trainierte Modell aus S3 in ein spezielles Serving-Image geladen und an SageMaker übergeben. SageMaker stellt eine Instanz auf EC2 bereit, installiert das Image und konfiguriert einen REST Endpunkt, über welchen das Modell angesteuert werden kann. Wenn gewünscht kann das Modell per Knopfdruck auf mehrere EC2 Instanzen skaliert werden. Der Endpunkt ändert sich dabei nicht und bleibt verfügbar.

Nachteile von SageMaker

Im Wesentlichen sehen wir im Projekt zwei Nachteile:

  1. Variable Kosten
    EC2 Instanzen mit GPUs kosten ein Vielfaches vergleichbarer Instanzen ohne GPU. In unserem Fall treibt das die Kosten zeitweise stark in die Höhe. Wenn in einem Monat viele Experimente gemacht werden, übersteigen die SageMaker-Kosten schnell die Kosten für die restliche Daten-Pipeline. Natürlich muss in jedem Projekt abgewogen werden, ob sich die Anschaffung und der interne Betrieb der Hardware rechnet.
     
  2. Technisches Korsett
    Mit unserem BERT Modell und SageMaker hatten wir anfänglich Schwierigkeiten, da kein Image mit der benötigten Tensorflow-2-Bibliothek verfügbar war. Wir mussten dann auf Basis der bestehenden Images ein eigenes bauen, um unser Modell auf SageMaker nutzen zu können. Aktuell sind auch keine Images verfügbar, die Python in Version 3.7 mitbringen, was uns ein bisschen Mehraufwand beschert hat. Wir empfehlen deshalb schon zu Beginn eines Projektes, die Kompatibilitäten und technischen Vorgaben zu prüfen.

Schlussfolgerung

SageMaker ist das AWS-Framework für Machine Learning und bietet eine Plattform und Werkzeuge zur Unterstützung des gesamten Lebenszyklus eines ML-Projekts. In unserem E-Mail-Klassifizierungsprojekt setzen wir auf SageMaker, um ohne Investitionen und ohne Integrationsaufwand Modelle trainieren und bereitstellen zu können. Dadurch kann sich unser Entwicklungsteam voll und ganz auf die wertschöpfenden Aufgaben konzentrieren. Deshalb sind wir der Ansicht, dass die Vorteile der Cloud und SageMaker die Nachteile klar überwiegen.

Partner

amazon-web-services-1.svg AWS Consulting Partner