Neue ML-Plattform von Amazon

Skalierbares Machine Learning mit Amazon SageMaker

Werner Vogels

© Shutterstock / Peshkova

Auf der letzten re:Invent-Konferenz hat Amazon das Machine-Learning-Projekt SageMaker vorgestellt. Es handelt sich dabei um eine verwaltete Plattform, die es Entwicklern und Datenwissenschaftlern ermöglichen soll, Machine-Learning-Modelle jeder Größenordnung zu erstellen, zu trainieren und zu implementieren. Amazon CTO Werner Vogels stellt das Projekt für JAXenter vor.

Skalierbares Machine Learning mit Amazon SageMaker

Um die Programmierung, das Training und das Hosting von Machine-Learning-Modellen zu vereinfachen, zu beschleunigen und zuverlässiger zu gestalten, haben wir bei Amazon das Projekt SageMaker gestartet. Viele Anwender testen diese Machine-Learning-Plattform bereits und bauen mit AWS komplexe ML-Modelle auf Basis ihrer eigenen Data Lakes.

Bei der Entwicklung von Amazon SageMaker hat sich gezeigt, wie wichtig die Skalierbarkeit bei ML-Modellen ist. Dabei mussten wir uns besonders damit beschäftigen, maschinelle Lernalgorithmen zu entwickeln, die theoretisch eine unendliche Menge an Daten verarbeiten können. Doch was bedeutet das genau? Natürlich hat kein Anwender eine wirklich unendliche Menge an Daten.

Nun, in der Praxis besteht für viele Anwender kein Unterschied zwischen der Menge an real verfügbaren Daten und unendlich vielen Daten. Bill Simmons, CTO von Dataxu, beschreibt diese Situation folgendermaßen: „Wir bearbeiten drei Millionen Anzeigenanforderungen pro Sekunde – 100.000 Features pro Anfrage. Das sind wiederrum 250 Billionen Anzeigenanforderungen pro Tag.“ Für solche Anwender existiert der Begriff einer statischen Datenmenge nicht. Die Daten werden immer mehr. Auf die Frage „Wie viele Daten habt Ihr“ lautet die Antwort: „Wie viele Daten könnt Ihr verarbeiten?“

In der Entwicklungsphase durchlaufen ML-Modelle in der Regel zahlreiche Trainings. Dabei werden mehrere Prozesse gleichzeitig ausgeführt – allerdings mit leicht unterschiedlichen Konfigurationen, damit die besten Hyperparameter ausgewählt werden können. Eine Neukonfiguration durchlaufen die Modelle alle paar Minuten, Stunden oder Tage, um mit aktuellen Daten auf dem neuesten Stand zu sein. Bei Anwendungen, die vor Online-Betrug schützen sollen, müssen Modelle oft innerhalb von Minuten oder sogar Sekunden auf neue Muster reagieren.

Zu diesem Zweck bietet SageMaker vorgefertigte Algorithmen an. Mit einer unbegrenzten Datenmenge lassen sich damit ML-Modelle schnell und kostengünstig trainieren. Betrachten wir im Folgenden einige der wissenschaftlichen, systemischen und technischen Entscheidungen, die wir dafür bei AWS getroffen haben.

Streaming-Algorithmen

Um unbegrenzte Datenmengen zu verarbeiten, verwenden die SageMaker-Algorithmen ein Streaming-Berechnungsmodell. Im Streaming-Modell nutzt der Algorithmus nur einmal den Datensatz und reserviert dafür einen festen Speicherbedarf. Genutzt wird dieser für grundlegende Operationen wie die eigentliche Datenspeicherung, den Zugriff auf einzelne Datensätze, das Data Shuffling und das mehrmalige Lesen der Daten.

Egal, ob ein oder 1000 Gigabyte Daten verarbeitet werden sollen: Streaming-Algorithmen sind praktisch unendlich skalierbar und können aus diesem Grund eine unbestimmte Menge an Daten konsumieren. Außerdem führen zusätzliche Datenpunkte nicht zu höheren Kosten. Zudem ist der Speicherbedarf der Algorithmen fixiert, wodurch es nicht zu Out-of-Memory-Fehlern kommt, wenn die Datenmenge zunimmt. Die Berechnungskosten und die Einarbeitungszeit wiederum hängen linear von der Datenmenge ab. Das Training an doppelt so vielen Daten kostet doppelt so viel und dauert doppelt so lange.

Traditionelle maschinelle Lernalgorithmen nutzen in der Regel Daten aus persistenten Datenquellen wie der lokalen Festplatte, Amazon S3 oder Amazon EBS. Streaming-Algorithmen verbrauchen auch flüchtige Datenquellen wie Amazon Kinesis-Streams, Pipes, Datenbankabfrageergebnisse und fast jede andere Datenquelle.

Ein weiterer wesentlicher Vorteil von Streaming-Algorithmen ist, dass der Zustand des Algorithmus jederzeit einsehbar ist. Er enthält alle Variablen, Statistiken und Datenstrukturen, die für die Durchführung von Aktualisierungen erforderlich sind, und garantiert so die ununterbrochene Fortsetzung eines Trainings. Indem wir dieses Konzept formalisieren und durch Softwareabstraktionen vereinfachen, bieten wir „Checkpointing“-Fähigkeiten und Fehlerresilienz für alle Algorithmen an. Darüber hinaus ermöglicht Checkpointing Multi-Pass/Multi-Epochen-Training für persistente Daten, einen Pausen-/Wiederaufnahme-Mechanismus, der für die kosteneffiziente Hyperparameter-Optimierung (HPO) nützlich ist. Zudem verfügt es über inkrementelles Training, das das Modell nur mit neuen Daten aktualisiert, anstatt das gesamte Training von Grund auf neu auszuführen.

Beschleunigung und Verteilung

Das Ziel vieler AWS-Kunden ist es, die Laufzeit und die Kosten groß angelegter Trainings auf Amazon SageMaker zu reduzieren – unabhängig von der Anzahl und Art der eingesetzten Maschinen.  SageMaker-Algorithmen sind daher so konzipiert, dass sie die Vorteile vieler Amazon EC2-Instanztypen nutzen. Dabei unterstützen sie sowohl CPU- als auch GPU-Berechnungen und können auf viele Maschinen verteilt werden.

Ein wesentlicher Aspekt für die instanzübergreifende Unterstützung ist die Containerisierung. Das SageMaker-Training unterstützt leistungsstarke Container-Management-Mechanismen, die eine große Anzahl von Containern auf unterschiedlicher Hardware mit schneller Vernetzung beinhalten. Dieses umfasst auch einen direkten Zugriff auf die zugrundeliegende Hardware, wie zum Beispiel GPUs. So kann ein Training, das zehn Stunden auf einer einzelnen Maschine dauert, auf zehn Maschinen ausgeführt werden und in einer Stunde abgeschlossen werden. Außerdem könnte die Umstellung auf GPU-basierte Operationen die Laufzeit auf Minuten reduzieren. Dies alles funktioniert, ohne dass der Nutzer eine einzige Zeile Code selbst schreiben muss.

Als Schnittstelle verwenden wir Apache MXNet. Das ermöglicht es, nahtlos zwischen CPU- und GPU-Operationen zu wechseln. Durch die Entwicklung von Algorithmen, die auf verschiedenen Hardwaretypen arbeiten, werden große Geschwindigkeiten und ein hoher Effizienzgrad erreicht.

Die Verteilung auf die Maschinen erfolgt über einen Parameterserver, der den Zustand aller an dem Training teilnehmenden Maschinen speichert. Der Parameterserver ist auf maximalen Durchsatz ausgelegt, indem er Parameter asynchron aktualisiert und nur lose Konsistenzeigenschaften der Parameter vorhält. Während dieses Vorgehen bei der Arbeit mit typischen relationalen Datenbanken inakzeptabel wäre, lohnt sich beim maschinellen Lernen der Kompromiss zwischen Genauigkeit und Geschwindigkeit.

Post-Training-Modell-Tuning und Rich-States

Die Verarbeitung massiv skalierbarer Datensätze im Streaming-Verfahren stellt eine Herausforderung für das Modell-Tuning dar, auch bekannt als Hyperparameter-Optimierung (HPO). Mit Hilfe von HPO werden viele Trainings mit unterschiedlichen Konfigurationen oder Trainingsparametern durchgeführt. Das Ziel dabei ist es, die beste Konfiguration zu finden – in der Regel diejenige, die der größten Testgenauigkeit entspricht. Dies ist in der Streaming-Einstellung nicht möglich.

Bei flüchtigen Datenquellen stehen die Daten nicht mehr für die Wiederholung des Trainings zur Verfügung. Bei persistenten Datenquellen ist das zwar möglich, aber ineffizient. SageMaker-Algorithmen können ein Zustandsobjekt trainieren, aus dem viele verschiedene Modelle erstellt werden können. Das heißt, das Tool erforscht bereits nach einem einzigen Training eine große Anzahl unterschiedlicher Trainingskonfigurationen.

Zusammenfassung

Amazon SageMaker bietet produktionsreife, stufenlos skalierbare Algorithmen wie:

  • Linear Learner
  • Factorization Machines
  • Neural Topic Modeling
  • Principal Component Analysis (PCA)
  • K-Means clustering
  • DeepAR forecasting

Die Algorithmen halten sich an die obigen Konstruktionsprinzipien und setzen auf dem SageMaker-Trainings-Stack auf. Sie werden durch ein gemeinsames SDK operationalisiert. Das ermöglicht es, die Algorithmen vor dem Einsatz gründlich zu testen.

Die Zeit ist reif für Machine Learning in großen Produktionssystemen. Unternehmen mit kontinuierlich wachsenden Datenbeständen sollten sich somit nicht davor scheuen, große ML-Systeme selbst zu betreiben und das damit verbundene ML-Know-how zu entwickeln.

Geschrieben von
Werner Vogels
Werner Vogels
Werner Vogels ist Chief Technology Officer (CTO) und Vizepräsident von Amazon.com. Werner bloggt unter https://www.allthingsdistributed.com.
Kommentare

Hinterlasse einen Kommentar

1 Kommentar auf "Skalierbares Machine Learning mit Amazon SageMaker"

avatar
400
  Subscribe  
Benachrichtige mich zu:
trackback

[…] Lesen Sie auch: Skalierbares Machine Learning mit Amazon SageMaker […]