Machine-Learning-Anwendungen mit Amazon SageMaker

Amazon SageMaker: Die Werkbank für Machine Learning
Keine Kommentare

Amazon SageMaker ist eine Werkbank für maschinelles Lernen, die für die Bedürfnisse von Data Scientists und Entwicklern optimiert ist. Der Service ist Teil des Amazon-Web-Services-(AWS-)Cloud-Angebots. Er deckt den gesamten Machine-Learning-Zyklus von der Datenexploration und Aufbereitung mit Jupyter Notebook über das Training und die Evaluierung von Modellen bis zum Betrieb eines trainierten Modells in der Produktion ab.

Bei Machine-Learning-Anwendungen werden Daten gesammelt und aufbereitet, um sie dann mithilfe von ML-Algorithmen wie z. B. statistischen Verfahren, Clustering-Algorithmen oder Deep Neural Networks (DNNs) auf einem oder mehreren Rechnern zu trainieren. Dabei leitet der Trainingsalgorithmus aus den Daten ein Modell ab, das in der Lage ist, bestimmte Eigenschaften in den Daten zu erkennen – auch wenn es sich hierbei um Daten handelt, die im Trainingssatz nicht enthalten waren (Abb. 1).

Abb. 1: Ein typischer Machine-Learning-Arbeitszyklus

Abb. 1: Ein typischer Machine-Learning-Arbeitszyklus

Machine-Learning-Modelle können also aus Trainingsdaten Gelerntes generalisieren und das Gelernte im Rahmen einer Anwendung für die Verarbeitung von neuen, unbekannten Daten wiederverwenden. Für die Aufbereitung von Trainingsdaten, das Training der Algorithmen und für den Betrieb von ML-Modellen in der Produktion (Inferenz) muss man sich um passende Speicher- und Rechenressourcen kümmern. Nicht selten sind Hunderte oder Tausende von Servern mit dem Training von Terabytes von Trainingsdaten beschäftigt. Doch auch verhältnismäßig kleine Set-ups mit nur einem Rechner für Training oder Betrieb können Mühe machen, da Rechner in Betrieb genommen, Software installiert und die Trainings- und Modelldaten transferiert und verwaltet werden wollen.

Hier hilft AWS mit dem Amazon SageMaker Service, der Entwicklern und Data Scientists die Verwaltung von virtuellen Maschinen in der Cloud für die Vorbereitung, das Training und den Betrieb von ML-Modellen abnimmt und diesen Zyklus automatisiert. Dabei können Anwender aus verschiedenen optimierten Algorithmen auswählen, die gängige ML-Aufgaben wie Lineare Regression, K-Means-Clustering oder Bildklassifikation abdecken oder ihre eigenen ML-Algorithmen mitbringen: als neuronales Netz auf TensorFlow- oder MXNet-Basis oder als Docker-Container mit beliebigem ML-Innenleben.

SageMaker dient hierbei als automatisierte Ablaufumgebung für Docker-Container, in die alle Algorithmen eingebettet sind. Als Datenspeicher kommt Amazon S3 zum Einsatz, sowohl für die Trainingsdaten als auch für die resultierenden Modelle. Während der Trainings- und der Betriebsphase startet und verwaltet Amazon Sage-Maker ein Cluster von Docker-Instanzen in der Amazon Elastic Compute Cloud (EC2) automatisch und nach den Skalierungs- und Typvorgaben des Benutzers.

Die Kosten richten sich dabei nach der Nutzung: Anwender zahlen grundsätzlich nur die aufgewendeten Instanzstunden für Notebook, Trainings- und Hostinginstanzen. Es werden verschiedene Instanztypen mit unterschiedlichen Eigenschaften wie CPU- und Memory-Ausstattung oder GPU-Fähigkeit zur Verfügung gestellt, die pro Stunde unterschiedliche Kosten verursachen. Abgerechnet wird im Sekundentakt.

1. Schritt: Jupyter-Notebook-Instanz anlegen

Viele Data Scientists bevorzugen das Jupyter Notebook als Entwicklerwerkzeug, Notizbuch und Benutzerinterface in einem, um mithilfe verschiedener Programmiersprachen wie Python, R oder Shellskripten ihre Daten zu verwalten, zu visualisieren und sie für die Nutzung im ML-Prozess aufzubereiten. Für solche Benutzer bietet Amazon SageMaker einen Set-up-Wizard, der hilft, eine automatisch verwaltete Jupyter-Umgebung im eigenen AWS-Account einzurichten.

Nach Anklicken des Buttons Create notebook instance in der Amazon-SageMaker-Webkonsole führt ein Wizard den Benutzer durch die nötigen Konfigurationseinstellungen wie Notebook-Name oder Amazon-EC2-Instanztyp. Letzterer definiert die Ausstattung der virtuellen Maschine wie CPU, Speicherkapazität oder GPU-Unterstützung: Damit können Entwickler bestimmen, ob sie lieber ein einfaches System mit variabler, aber kostengünstiger Performance aus der ml.t2-Familie als reines „Notizbuch“ nutzen möchten oder ein leistungsfähiges System mit hoher CPU- und/oder RAM-Kapazität für leistungsstarke Vorverarbeitungen bevorzugen. Auch der Zugriff auf GPUs der neuesten Generation direkt auf der Notebook-Instanz ist möglich, um bereits in Entwicklung/Vorverarbeitung mit dieser Technologie experimentieren oder arbeiten zu können (Abb. 2).

Abb. 2: Ein Wizard erleichtert die Einrichtung der automatisch verwalteten Jupyter-Notebook-Umgebung

Abb. 2: Ein Wizard erleichtert die Einrichtung der automatisch verwalteten Jupyter-Notebook-Umgebung

Weitere Aspekte wie Verschlüsselung, Netzwerkumgebung („Virtual Private Cloud“) sowie Start-up-Skripte für die Anpassung der Jupyter-Umgebung können ebenfalls via Wizard konfiguriert werden. Kurz darauf läuft der Jupyter-Server in der eigenen AWS-Umgebung und man kann von der AWS-Konsole aus sicher und komfortabel über eine verschlüsselte Verbindung auf die Jupyter-Umgebung zugreifen, ohne sich um weitere Authentifizierungs- oder Proxy-Einstellungen kümmern zu müssen.

Die vorinstallierte Jupyter-Umgebung liefert zahlreiche vorbereitete Beispiel-Notebooks zu typischen Anwendungsfällen sowie den in SageMaker integrierten Algorithmen samt Beispieldatensätzen mit. Wer sich vorab einen Eindruck davon verschaffen möchte, findet diese auch auf GitHub.

Das Hosting von Jupyter Notebook als Benutzerinterface für SageMaker ist nicht obligatorisch, sondern lediglich eine Erleichterung für Anwender. Wer andere Werkzeuge bevorzugt, kann diesen Schritt überspringen und Amazon SageMaker aus anderen Umgebungen heraus einsetzen: Der Dienst ist vollständig über ein RESTful Web Service API nutzbar, sodass man aus beliebigen Umgebungen heraus darauf zugreifen kann. Dabei helfen zahlreiche Software Development Kits (SDKs), die in gängigen Programmiersprachen verfügbar sind.

2. Schritt: Algorithmus auswählen

Der für das Training verwendete Algorithmus entscheidet darüber, was das ML-Modell nach dem Training können soll: Er analysiert die Trainingsdaten und lernt aus ihnen Muster, die er zu einem Modell generalisiert. Dieses Modell ist dann in der Lage, mit beliebigen Daten zu arbeiten und daraus Entscheidungen abzuleiten (Inferenz).

Nehmen wir als Beispiel die Kategorisierung von Bildern basierend auf bestimmten vorgegebenen Kategorien. In der Praxis könnte es sich hierbei um verschiedene Produktkategorien (Oberbekleidung, Sportbekleidung, Schuhe, etc.) für eine E-Commerce-Seite handeln oder um Modellreihen eines Automobilherstellers. Während Bilderkennungsdienste in der Regel schon sehr viele Kategorien unterstützen, gibt es oft die Anforderung, spezielle kundenspezifische Kategorien erkennen zu können, die von generischen Diensten nicht unterschieden werden. Hier kann man einen fertig vorbereiteten Algorithmus mit eigenen Trainingsdaten füttern (bei denen man die Kategorisierung bereits vorgenommen und markiert hat, Stichwort „Labeling“), um ein Modell zu erhalten, das die vorgegebenen Bildkategorien erkennen kann.

Für gängige ML-Anwendungsfälle stellt Amazon SageMaker zurzeit vierzehn skalierbare Algorithmen zur Verfügung. Von einfacher, linearer Regression über Clustering, Forecasting, Bildklassifikation und Objekterkennung bis hin zu Textanalysemethoden wird ein weiter Bereich von Anwendungen abgedeckt.

Hat man einen Algorithmus gefunden, der zur eigenen Anwendung passt, sollte man das passende Jupyter-Beispiel-Notebook öffnen und sich den Python-Code anschauen, der den gewählten Algorithmus anhand eines Beispieldatensatzes erklärt und eine Beispielanwendung vom Laden und Vorverarbeiten der Trainingsdaten über Training bis zum Betrieb des fertigen Modells veranschaulicht. Ein gutes Beispiel ist das „Image classification transfer learning demo“-Notebook, das aufzeigt, wie man ein Bildklassifikationsmodell mithilfe von 15 420 Beispielbildern aus 257 Kategorien trainieren und in Betrieb nehmen kann.

Tipp: Am einfachsten arbeitet man sich nacheinander durch die Zellen des Jupyter Notebook, wobei Codezellen per SHIFT + RETURN oder mit dem Run-Button gestartet werden können. Ein Sternchen oben links von der Zelle deutet an, dass der Code innerhalb der Zelle gerade läuft. Unter dem Codeteil der Zelle werden alle Ausgaben sowie etwaige Fehlermeldungen des Codes angezeigt.

Auf diese Weise helfen Jupyter Notebooks Entwicklern und Data Scientists, Codeschnipsel mit Kommentaren, Dokumentation oder Notizen zu mischen und dabei interaktiv Daten aufzubereiten, zu sichten und mit ihnen zu experimentieren. Bei den in SageMaker mitgelieferten Beispiel-Notebooks sollte man beachten, dass in der Regel in den Anfangszellen benutzerspezifische Parameter wie z. B. die Namen der zu verwendenden Amazon-S3-Buckets als Speicher für Eingangs- und Hilfsdaten einzutragen sind. Vergisst man, hier den eigenen S3-Bucket einzutragen, kann es im weiteren Verlauf zu Fehlermeldungen kommen (Abb. 3).

Abb. 3: Ein Jupyter Notebook mit Beispielcode für einen Bildklassifikationsalgorithmus

Abb. 3: Ein Jupyter Notebook mit Beispielcode für einen Bildklassifikationsalgorithmus

3. Schritt: Training

Je nach verwendetem Algorithmus unterscheidet man zwischen überwachtem (Supervised) und nicht überwachtem Lernen (Unsupervised Learning). Im ersten Fall übergibt man dem Algorithmus neben den Trainingsdaten auch sogenannte Labels, also Markierungen, die das richtige Ergebnis des zu lösenden Problems enthalten und dem Algorithmus helfen sollen, zu lernen, selbst auf die richtige Lösung zu kommen.

Beim Unsupervised Learning übergibt man dem Algorithmus lediglich die Trainingsdaten und der versucht dann, eigenständig Ergebnisse aus den Daten abzuleiten, wie z. B. Cluster zu bilden oder eine reduzierte Form der Daten zu erzeugen.

In beiden Fällen gilt: Ohne Daten kein Machine Learning! Daher sollte man in der Praxis eine gute Strategie für das Sammeln, Speichern und Verwalten großer Datenmengen haben. Hier fällt oft das Stichwort „Data Lake“, das eine Strategie beschreibt, mit der man alle Daten im Unternehmen zentral sammelt und für Big Data, Analyse- oder ML-Projekte einfach, performant und gemäß bestimmter Unternehmensrichtlinien zur Verfügung stellt. Auch hierfür stellen Cloud-Anbieter wie Amazon Web Services Werkzeuge bereit.

Für Entwicklungs- und Testzwecke gibt es verschiedene offen zugängliche Quellen mit Datensätzen, die für Machine Learning genutzt werden können. Beispiele hierfür sind https://www.kagle.com, eine Webseite, die auch regelmäßig ML-Wettbewerbe ausrichtet, sowie die Open Data Registry des AWS Public Dataset Program. Je nach Algorithmus verwenden die Amazon SageMaker Beispiel-Notebooks öffentlich zugängliche Trainingsdaten bzw. die nötigen Labels, oder sie enthalten Code, der passende Beispieldaten generiert, sodass man die jeweiligen Algorithmen auch ohne eigene Daten ausprobieren kann.

Das Trainieren eines Algorithmus in Amazon Sage-Maker folgt aus Entwicklersicht einem einfachen Muster: Die Trainings- bzw. Labeldaten werden geladen, aufbereitet und in ein Amazon S3 Bucket hochgeladen.

In einer Datenstruktur werden alle für das Training benötigten Parameter wie z. B. Bucket-Name und Pfadpräfix für die Trainings- und Labeldaten in S3, der gewählte Docker-Container mit dem Trainingsalgorithmus, Instanztyp und -anzahl der Trainingsinstanzen sowie algorithmusspezifische Parameter gesammelt. Über einen API Call werden die Trainingsparameter an Amazon SageMaker übergeben und der Trainingsjob gestartet.

Mithilfe weiterer API Calls oder über die AWS-Konsole kann der Fortschritt des Trainingsjobs beobachtet werden. Status- und Fehlerausgaben des Trainingsalgorithmus werden über den hauseigenen Logging-Dienst Amazon CloudWatch Logs zur Verfügung gestellt und können mitverfolgt werden.

ML Conference 2018

Making Enterprises Intelligent with Machine Learning

with Dr. Sebastian Wieczorek (SAP)

Machine Learning 101++ using Python

with Dr. Pieter Buteneers (Robovision)

Nach Abschluss des Trainingsjobs wird das fertige ML-Modell im Amazon S3 Bucket des Benutzers hochgeladen.

Hinter den Kulissen kümmert sich Amazon Sage-Maker um alle Infrastrukturmaßnahmen, die für das Training benötigt werden. Dazu gehören das Starten der EC2-Instanzen für die Trainingsflotte, die Installation und das Patching der benötigten Software, das Starten von Docker-Containern für Training und Hilfsarbeiten, das Laden der Trainingsdaten in die Docker-Umgebung, die Koordination von Zuständen und Zwischenergebnissen zwischen Trainingsinstanzen sowie das Abspeichern des resultierenden Modellartefakts.

Nicht immer verläuft das Trainieren eines ML-Algorithmus nach Plan. Je nach Algorithmus, gewählter Parameter oder Qualität der Trainingsdaten kann es passieren, dass ein Modell lediglich „auswendig lernt“, wie es die Trainingsdaten erkennen kann, aber in der Praxis mit neuen Daten nicht zurechtkommt.

Um solches „Overfitting“ zu erkennen, aber auch um einen neutralen Eindruck von der Qualität des resultierenden Modells zu bekommen, ist es üblich, im Vorfeld die Eingangsdaten samt Labels nach dem Zufallsprinzip in Trainings- und Validierungsdaten aufzuteilen. Das wird von SageMaker unterstützt, indem es während des Trainingsvorgangs periodisch das Modell gegen die Validierungsdaten testet und daraus ein Präzisionsmaß berechnet (Abb. 4).

Abb. 4: Amazon-SageMaker-Trainingsdashboard

Abb. 4: Amazon-SageMaker-Trainingsdashboard

Hyper, hyper! Automatisches Tuning von Trainingsparametern

In der Regel bieten ML-Algorithmen über sogenannte Hyperparameter die Möglichkeit, den Trainingsverlauf sowie den genaueren Aufbau des Modells zu beeinflussen. Das kann sich erheblich auf die Qualität des Modells und die Dauer (und damit die Kosten) des Trainingsprozesses auswirken. Typische Hyperparameter sind etwa die Anzahl von Schichten in einem neuronalen Netz, die Lernrate (wie schnell passt sich der Algorithmus an Trainingsdaten an) oder die Batch-Größe, also die Anzahl der Trainingsdatensätze, die pro Lernschritt gemeinsam verarbeitet werden.

Daher verbringen Data Scientists oft viel Zeit damit, verschiedene Hyperparameter auszuprobieren und ihren Einfluss auf die resultierende Modellpräzision zu verstehen. Beispielsweise kann eine zu große Lernrate verhindern, dass sich der Algorithmus einer optimalen Lösung annähert, während eine zu kleine Lernrate dazu führt, dass der Algorithmus mehr Durchläufe benötigt, um ein optimales Ergebnis zu liefern, was längere Laufzeiten und höhere Kosten verursacht. Je mehr Hyperparameter zur Auswahl stehen, desto aufwendiger und schwieriger wird dieser Prozess, der häufig mehr Kunst als Wissenschaft ist.

Hierfür gibt es seit Kurzem eine automatische Hyperparametertuningoption in Amazon SageMaker: Anwender können hier für jeden Hyperparameter Ober- und Untergrenzen vorgeben, innerhalb derer die automatische Optimierungslogik versucht, möglichst effizient die richtigen Werte zu finden. Auch hierbei kommen Verfahren des Machine Learning zum Einsatz: SageMaker probiert dabei verschiedene Kombinationen von Hyperparametern aus und bewertet ihre Ergebnisse anhand einer benutzerdefinierten Metrik. Über mehrere Zyklen dieser Art und durch Einstreuen von Parametern, die weit weg von bekannten Konfigurationen liegen, lotet SageMaker den Hyperparametersuchraum aus, um darin eine möglichst gute Kombination zu finden. So können Maschinen lernen, ihre eigenen Maschinenlernprozesse zu optimieren.

4. Schritt: Überführung des ML-Modells in Produktion

Zum Schluss soll das Machine-Learning-Modell zeigen, was es kann, und in einer Produktivumgebung seinen Dienst verrichten. Dabei schickt man die zu verarbeitenden Daten über ein API an das Modell, das daraus ein Ergebnis gemäß der gelernten Parameter ableitet (Inferenz). Die Einrichtung einer Produktionsumgebung („Deployment“) für das gelernte Modell verläuft ähnlich wie das Training:

In einer Datenstruktur werden alle für das Deployment benötigten Parameter wie z. B. Bucket-Name und Pfadpräfix für das trainierte Modellartefakt in Amazon S3, der gewählte Docker-Container mit dem Inferenzcode, der gewählte Instanztyp für die Hostinginstanzen etc. gesammelt.

Über einen API Call werden die Hostingparameter an Amazon SageMaker übergeben und daraus ein SageMaker-Modellobjekt sowie ein RESTful-Endpunkt für den Zugang erzeugt.

Sobald der Endpunkt für das Modell verfügbar ist, kann er mithilfe einer REST-Schnittstelle angesprochen werden. Für die Entwicklung von Clientapplikationen sind Software Development Kits in verschiedenen Programmiersprachen erhältlich.

Auch hier nimmt SageMaker dem Anwender Arbeit ab – dazu gehört der Betrieb der EC2-Instanzen für das Hosting, die Verwaltung der Container mit den Inferenzalgorithmen und den Hilfsfunktionen, der Betrieb des API-Endpunkts sowie die Bereitstellung von Monitoring- und Logdaten für die Überwachung der Infrastruktur und die Fehlersuche. Fortgeschrittene Anwender können unterschiedliche Modelle gleichzeitig betreiben und ihre jeweiligen Anteile an der Verarbeitung von Anfragen prozentual gewichten. Dadurch ergibt sich die Möglichkeit, Modellupdates anfänglich nur an einem kleinen Teil der Arbeitslast zu testen (sogenannte Canary-Tests) oder A/B-Tests zwischen unterschiedlichen Modellen durchzuführen.

Wer bisher die Schritte im Jupyter-Beispiel-Notebook vollzogen hat, kann auch für das Deployment die vorbereiteten Zellen mit dem passenden Code ausführen, um das Modell auszurollen und anhand von Beispieldaten zu testen. Im Fall des hier betrachteten Bildklassifikations-Notebook kann man beispielsweise Bilder aus dem Internet mit dem gelernten Modell ausprobieren, um zu sehen, welche Kategorie dem Bild durch das Modell zugeordnet wird (Abb. 5).

Abb. 5: Inferenz: Es ist ein Hund! (Quelle: https://unsplash.com)

Abb. 5: Inferenz: Es ist ein Hund! (Quelle: https://unsplash.com)

Sicherheit mit Authentifizierung, Autorisierung und Auditing

Das AWS Identity and Access Management System (IAM) bietet über User, Rollen und Policies die Möglichkeit, feingranulare Berechtigungen an menschliche Benutzer sowie technische Benutzer (z. B. EC2-Instanzen, Identity-Federation-Nutzer, andere AWS Services) zu vergeben. Diese werden durch Amazon SageMaker unterstützt, sodass der gesamte Datenfluss und der Zugriff auf API-Endpunkte sowohl für SageMaker selbst als auch für die daraus resultierenden Modellendpunkte kontrolliert, überwacht und über AWS CloudTrail auditiert werden kann.

Auch Verschlüsselung von Trainings- und Modelldaten ist umsetzbar: Amazon SageMaker unterstützt die Verschlüsselung von Daten sowohl beim Transport als auch bei der Speicherung. Dabei kann wahlweise der AWS Key Management Service (KMS) mit automatisch erzeugten oder eigenen importierten Schlüsseln verwendet werden.

Nutzer von Amazon Virtual Private Cloud (VPC) für die Abschottung eigener Cloud-Ressourcen in einem eigenen, privaten Netzwerk können Amazon SageMaker ebenfalls aus ihrer VPC-Umgebung heraus nutzen und haben daher die Möglichkeit, Trainings- und Modelldaten so zu speichern, dass sie nur aus dem VPC heraus zugänglich sind.

Skalierbare Datenaufbereitung mit Apache Spark und Amazon SageMaker

Häufig reicht ein einzelner Rechner mit Notebook-Umgebung oder der eigene Laptop nicht aus, um größere Mengen an Trainingsdaten aufzubereiten, bzw. um in der Produktion eine automatisierte Datenaufbereitung zur Verfügung zu stellen. Hier haben sich in der Praxis Lösungen auf Basis von Apache Spark bewährt. Sage-Maker bietet hierfür eine Brücke in Form einer Apache Spark Library, die es ermöglicht, aus einer Spark-Anwendung heraus Daten an Amazon SageMaker für das Training weiterzuleiten, sowie die Modelle daraus in Amazon SageMaker zu verwalten. Wer innerhalb von AWS Spark nutzen möchte, kann das mithilfe des Amazon EMR Service tun, der das Management des Spark-Clusters auf Basis von Hadoop automatisiert.

Automatische Skalierung

Je nach Anwendung kann es sein, dass ein ML-Modell schwankenden Lasten ausgesetzt wird oder eine besonders hohe Anzahl von Clients bedienen muss, die über die Leistung einer einzelnen virtuellen Maschine hinausgehen. Hierfür bietet SageMaker die Möglichkeit, die Anzahl der virtuellen Maschinen im Hintergrund automatisch nach Auslastung zu skalieren. Dabei können Anwender die minimale und die maximale Anzahl von Instanzen sowie die Parameter und die zugrundeliegenden Metriken für das Hoch- und Runterskalieren einstellen.

Amazon SageMaker für die Erweiterung eigener Algorithmen oder Deep-Learning-Netze

Neben traditionellen Machine-Learning-Algorithmen wie linearer Regression, K-Means-Clustering oder Random Cut Forest erfreuen sich neuronale Netze steigender Beliebtheit. Grund dafür ist die Kombination aus hoher Rechenkapazität für Matrixoperationen durch die Verwendung von GPUs sowie die Verfügbarkeit leistungsfähiger und hochoptimierter Programmierframeworks with TensorFlow, MXNet oder PyTorch.

Wer eigene neuronale Netze für Deep-Learning-Anwendungen trainieren und betreiben möchte, kann in Amazon SageMaker speziell dafür vorbereitete Container verwenden. Diese bieten Python-basierte Schnittstellen an, in die man nur noch seine eigenen Skripte für die gängigen Deep-Learning-Frameworks einbauen muss. Unterstützt werden derzeit TensorFlow, Apache MXNet, Chainer und PyTorch. Auch verwandte Frameworks wie Keras oder Gluon, die auf diesen Libraries aufbauen, werden unterstützt.

Wer jenseits von Deep Learning Eigenentwicklungen oder bisher nicht direkt unterstützte Frameworks in beliebigen Programmiersprachen mit SageMaker nutzen möchte, kann den eigenen Code mithilfe eines vorgegebenen Dockerfile in einen Docker-Container einbetten und damit die volle Kontrolle über den ML-Algorithmus und die Implementierung für die Inferenz von Modellen übernehmen. Sowohl für Deep-Learning-Anwendungen als auch für das Einbetten eigener Algorithmen bieten die Dokumentation bzw. die mitgelieferten Jupyter-Notebook-Beispiele nützliche Hinweise und Codeschnipsel.

Fazit

Der Machine-Learning-Zyklus startet mit der Sammlung, Säuberung und Aufbereitung von Trainingsdaten und ggfs. Labelinformationen. Diese werden einem Machine-Learning-Algorithmus zugeführt, der aus diesen Daten ein Modell erzeugt, das Regeln und Muster aus den Daten extrahiert und generalisiert. Solche Modelle können dann in der Praxis ausgerollt werden, um aus neuen Daten Erkenntnisse wie z. B. Klassifizierungen oder Vorhersagen abzuleiten.

Amazon SageMaker ist eine Werkbank, die mithilfe von Containertechnologie diesen Zyklus abbildet und dem Entwickler oder Data Scientist die Verwaltung der darunterliegenden IT-Ressourcen abnimmt. Automatisiert gehostete Jupyter Notebooks mit vielen Beispielen tragen weiter zur Arbeitserleichterung bei, während fortgeschrittene Funktionen wie Hyperparametertuning oder automatische Skalierung weitere Vorteile bieten.

Amazon-SageMaker-Algorithmen im Überblick

  • Linear Learner: Lineare Regression errechnet einen Zielwert auf Basis beliebig vieler Attribute voraus. Typischer Anwendungsfall: Vorausschauende Wartung (Predictive Maintenance), bei der aufgrund von gemessenen Attributen (z. B. Sensordaten) vorausgesagt werden soll, ob ein Bauteil demnächst ausgetauscht werden sollte, bevor es ausfällt. Weiteres Beispiel: Abschätzung der erwarteten monatlichen Miete einer Immobilie basierend auf Attributen wie qm-Größe, Anzahl der Zimmer, Postleitzahlenbereich, Stockwerk etc.
  • Factorization Machines: Während man bei der linearen Regression annimmt, dass alle Eingangswerte unabhängig voneinander sind, berücksichtigen Faktorisierungsmaschinen paarweise Abhängigkeiten zwischen zwei Attributen. Beispiel: Für eine Webseite soll vorausgesagt werden, ob ein Besucher auf eine Anzeige klicken wird, die zu einer bestimmten Anzeigenkategorie gehört (erster Faktor) und auf einer bestimmten Seitenkategorie auftaucht (zweiter Faktor). Je nach Paar aus Anzeigen- und Seitenkategorie können sich andere Voraussagen für die Klickwahrscheinlichkeit ergeben, die durch dieses Modell erfasst werden.
  • XGBoost: Der Algorithmus „Gradient Boosted Trees“ kombiniert die Ergebnisse vieler einfacher, schwächerer Modelle zu einem Gesamtergebnis, das deutlich besser ist als die Ergebnisse der einzelnen Modelle. XGBoost ist eine populäre Open-Source-Implementierung dieses Ansatzes.
  • Image Classification Algorithm: Bildklassifikation basierend auf einem Convolutional Neural Network (CNN) basierend auf der ResNet-Architektur. Er unterstützt sowohl ein komplettes Training von Grund auf als auch ein Training nach dem Transfer-Learning-Prinzip, bei dem das Netzwerk bereits auf dem ImageNet-Datensatz mit 11 Millionen Bildern in 11 000 Kategorien vortrainiert wurde und nur noch auf anwendungsspezifische Bilder angepasst werden muss. Dieser Ansatz kommt mit deutlich weniger Trainingsbildern aus, weil allgemeine Eigenschaften von Bildern bereits erlernt wurden.
  • Object Detection Algorithm: Während der vorangegangene Algorithmus jedes Bild einer einzelnen Kategorie zuordnet, identifiziert dieser Algorithmus ein oder mehrere Objekte aus mehreren Kategorien im Bild und gibt deren Position, Kategorie und Größe zurück.
  • Sequence to Sequence (seq2seq): Ein Übersetzungsalgorithmus, der aus einer Sequenz von Symbolen eine andere Sequenz von Symbolen erzeugt. Neben Übersetzung von Sprache kann dieser Algorithmus auch für die Zusammenfassung von Texten oder die Sprachausgabe trainiert werden.
  • K-Means Clustering: Identifiziert k-Gruppen (Cluster) von Datenpunkten, die möglichst nah beieinander und möglichst weit entfernt von anderen Clustern sind. k ist hier eine vorgegebene Anzahl von zu findenden Clustern.
  • Principal Component Analysis: Häufig bestehen Daten für ML-Anwendungen aus sehr vielen (Hunderten oder Tausenden) verschiedenen Attributen pro Datenpunkt, die die Rechen- und Speicheranforderungen für MLAnwendungen stark erhöhen können. Dieser Algorithmus versucht, aus den gegebenen Daten eine kleinere Anzahl von möglichst voneinander unabhängigen Attributen zu extrahieren (sogenannte Komponenten), die so viele Informationen wie möglich enthalten und nach absteigendem Informationsgehalt sortiert sind. Als Vorstufe für andere Algorithmen geeignet, um Rechenaufwand und damit -kosten zu sparen.
  • Latent Dirichlet Allocation (LDA): Dieser Algorithmus extrahiert Themen aus Textdokumenten basierend auf der statistischen Häufung der darin enthaltenen Wörter.
  • Neural Topic Modeling (NTM): Ähnlich wie LDA extrahiert auch dieses Verfahren Themen aus Textdokumenten, verwendet dabei aber einen Ansatz basierend auf neuronalen Netzen. Die Ergebnisse von LDA und NTM können je nach Anwendungsgebiet unterschiedlich ausfallen, sodass man in der Praxis ausprobieren sollte, welcher Algorithmus für die jeweilige Anwendung besser funktioniert.
  • DeepAR Forecasting: Dieser Algorithmus verwendet ein neuronales Netz mit Gedächtniszellen (Long Short-term Memory Network, LSTM), um Datenreihen (z. B. Zeitreihen oder Sätze in Texten) vorauszusagen. Typische Anwendungsfälle sind Vorhersagen für Rohstoffe und Waren in Lieferketten (Supply Chain Optimization).
  • BlazingText: Bei der Verarbeitung von Texten in MLSystemen muss man sie vorher in Zahlenreihen umwandeln (vektorisieren). Einfache, sogenannte Bag-of-Words-Verfahren hierfür sind sehr speicheraufwendig, weil sie sehr lange Vektoren ergeben, bei denen nur ein Wert für das jeweilige Wort aus einem Wörterbuch gleich 1 ist und alle anderen Werte auf 0 gesetzt werden. Sogenannte Word2Vec-Verfahren wie BlazingText ordnen Wörter einem Vektor mit einer vorgegebenen Länge zu, sodass Wörter, die in ähnlichen Nachbarschaften auftreten (z. B. „Berlin“ und „Paris“) ähnliche Vektoren ergeben und sich semantische Beziehungen zwischen Wörtern einstellen können (z. B.: „Berlin“ – „Deutschland“ + „Frankreich“ ≈ „Paris“.
  • Random Cut Forest: Oft sind Datensätze nicht immer „sauber“, sondern es treten Außenseiter oder Anomalien auf. Dieser Algorithmus weist jedem Datensatz einen Anomaliewert zu, der beschreibt, wie „normal“ bzw. „ungewöhnlich“ er ist. So können Daten für eine spätere Verwendung entweder gesäubert werden, um unnötige Komplexität in späteren Schritten zu sparen, oder es können Ausreißer in Datensätzen (z. B. Fehler oder unerwartete Ereignisse) gefunden werden.
  • K-Nearest Neighbors: Dieser Algorithmus sucht die k am nächsten liegenden Punkte im Datenraum und liefert die dabei am häufigsten gefundene Kategorie (Klassifikationsmodus) bzw. den Mittelwert daraus (Regressionsmodus).

Entwickler Magazin

Entwickler Magazin abonnierenDieser Artikel ist im Entwickler Magazin erschienen.

Natürlich können Sie das Entwickler Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -