Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Mit diesem Buch lernen Machine-Learning- und KI-Praktiker, wie sie erfolgreich Data-Science-Projekte mit Amazon Web Services erstellen und in den produktiven Einsatz bringen. Es bietet einen detaillierten Einblick in den KI- und Machine-Learning-Stack von Amazon, der Data Science, Data Engineering und Anwendungsentwicklung vereint. Chris Fregly und Antje Barth beschreiben verständlich und umfassend, wie Sie das breite Spektrum an AWS-Tools nutzbringend für Ihre ML-Projekte einsetzen.
Der praxisorientierte Leitfaden zeigt Ihnen konkret, wie Sie ML-Pipelines in der Cloud erstellen und die Ergebnisse dann innerhalb von Minuten in Anwendungen integrieren. Sie erfahren, wie Sie alle Teilschritte eines Workflows zu einer wiederverwendbaren MLOps-Pipeline bündeln, und Sie lernen zahlreiche reale Use Cases zum Beispiel aus den Bereichen Natural Language Processing, Computer Vision oder Betrugserkennung kennen. Im gesamten Buch wird zudem erläutert, wie Sie Kosten senken und die Performance Ihrer Anwendungen optimieren können.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 640
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Zu diesem Buch – sowie zu vielen weiteren O’Reilly-Büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei oreilly.plus+:
www.oreilly.plus
End-to-End-Pipelines für ContinuousMachine Learning implementieren
Chris Fregly & Antje Barth
Deutsche Übersetzung vonMarcus Fraaß
Chris Fregly und Antje Barth
Lektorat: Alexandra Follenius
Übersetzung: Marcus Fraaß
Korrektorat: Sibylle Feldmann, www.richtiger-text.de
Satz: III-Satz, www.drei-satz.de
Herstellung: Stefanie Weidner
Umschlaggestaltung: Karen Montgomery, Michael Oréal, www.oreal.de
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN:
978-3-96009-184-4
978-3-96010-655-5
ePub
978-3-96010-656-2
mobi
978-3-96010-657-9
1. Auflage 2022
Translation Copyright für die deutschsprachige Ausgabe © 2022 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Authorized German translation of the English edition of Data Science on AWS, ISBN 9781492079392
© 2021 Antje Barth and Flux Capacitor, LLC. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«.
O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.
Hinweis:
Dieses Buch wurde auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt. Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie.
Schreiben Sie uns:
Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: [email protected].
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag noch Übersetzer können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.
5 4 3 2 1 0
Vorwort
1Data Science mit AWS – eine Einführung
Vorzüge des Cloud Computing
Data-Science-Pipelines und -Workflows
Best Practices für MLOps
Amazons KI-Services und AutoML mit Amazon SageMaker
Datenaufnahme, -exploration und -aufbereitung in AWS
Modelle mit Amazon SageMaker trainieren und feintunen
Modelle mit Amazon SageMaker und AWS Lambda Functions deployen
Streaming-Analysen und Machine Learning mit AWS
AWS-Infrastruktur und individuell zusammengestellte Hardware
Kosten mit Tags, Budgets und Alerts einsparen
Zusammenfassung
2Anwendungsbeispiele aus dem Bereich Data Science
Innovationen in allen Branchen
Personalisierte Produktempfehlungen
Unangemessene Videos mit Amazon Rekognition erkennen
Bedarfsprognose
Betrügerische Benutzerkonten mit Amazon Fraud Detector identifizieren
Datenschutzlücken mit Amazon Macie erkennen
Conversational Devices und Sprachassistenten
Textanalyse und Natural Language Processing
Cognitive Search und Natural Language Understanding
Intelligente Kundenbetreuungszentren
Industrielle KI-Services und vorausschauende Wartung (Predictive Maintenance)
Heimautomatisierung mit AWS IoT und Amazon SageMaker
Medizinische Informationen aus Gesundheitsdokumenten auslesen
Selbstoptimierende und intelligente Cloud-Infrastruktur
Kognitive und prädiktive Business Intelligence (BI)
Die nächste Generation von KI- und ML-Entwicklern ausbilden
Mithilfe von Quantencomputern das Betriebssystem der Natur programmieren
Kosten einsparen und die Leistung verbessern
Zusammenfassung
3Automatisiertes Machine Learning
Automatisiertes Machine Learning mit SageMaker Autopilot
Experimente mit SageMaker Autopilot tracken
Einen Textklassifikator mit SageMaker Autopilot trainieren und deployen
Automatisiertes Machine Learning mit Amazon Comprehend
Zusammenfassung
4Datenaufnahme in die Cloud
Data Lakes
Amazon-S3-basierte Data Lakes mit Amazon Athena abfragen
Mit dem AWS Glue Crawler kontinuierlich neue Daten aufnehmen
Mit Amazon Redshift Spectrum ein Lake House aufbauen
Zwischen Amazon Athena und Amazon Redshift wählen
Kosten einsparen und die Leistung verbessern
Zusammenfassung
5Exploration des Datensatzes
Tools für die explorative Datenanalyse in AWS
Mit SageMaker Studio Daten aus dem Data Lake visualisieren
Abfragen auf unserem Data Warehouse durchführen
Dashboards mit Amazon QuickSight erstellen
Probleme im Hinblick auf die Datenqualität mithilfe von Amazon SageMaker und Apache Spark erkennen
Bias in unserem Datensatz erkennen
Verschiedene Arten von Drift mit SageMaker Clarify erkennen
Unsere Daten mit AWS Glue DataBrew analysieren
Kosten einsparen und die Leistung verbessern
Zusammenfassung
6Vorbereitung des Datensatzes für das Modelltraining
Feature Selection und Feature Engineering
Das Feature Engineering mithilfe von SageMaker Processing Jobs skalieren
Features über den SageMaker Feature Store gemeinsam nutzen
Daten mit SageMaker Data Wrangler einlesen und transformieren
Artefakt- und Experiment-Lineage mit Amazon SageMaker tracken
Daten mit AWS Glue DataBrew aufnehmen und transformieren
Zusammenfassung
7Das erste Modell trainieren
Die Infrastruktur von SageMaker verstehen
Ein vortrainiertes BERT-Modell mit SageMaker JumpStart deployen
Modelle in SageMaker entwickeln
Ein kurzer Überblick über die historische Entwicklung des Natural Language Processing
Die Transformer-Architektur von BERT
BERT von Grund auf trainieren
Feintuning eines vortrainierten BERT-Modells
Das Trainingsskript erstellen
Das Trainingsskript aus einem SageMaker-Notebook ausführen
Modelle evaluieren
Debugging und Profiling des Modelltrainings mit SageMaker Debugger
Modellvorhersagen interpretieren und erklären
Bias in Modellen erkennen und Vorhersagen erklären
Weitere Möglichkeiten im Rahmen des Trainings von BERT
Kosten einsparen und die Leistung verbessern
Zusammenfassung
8Modelle in großem Maßstab trainieren und optimieren
Automatisch nach den besten Hyperparametern von Modellen suchen
Einen Warmstart für zusätzliche SageMaker-HPT-Jobs verwenden
Das Training mit SageMaker Distributed Training verteilen und skalieren
Kosten einsparen und die Leistung verbessern
Zusammenfassung
9Deployment von Modellen in die Produktion
Zwischen Vorhersagen in Echtzeit oder Batch-Vorhersagen wählen
Echtzeitvorhersagen mit SageMaker Endpoints
SageMaker Endpoints automatisch mit Amazon CloudWatch skalieren
Strategien für das Deployment neuer oder aktualisierter Modelle
Neue Modelle testen und vergleichen
Monitoring der Modellleistung und Drift erkennen
Die Qualität der ein- und ausgehenden Daten der im Einsatz befindlichen SageMaker Endpoints überwachen
Monitoring der Modellqualität von im Einsatz befindlichen SageMaker Endpoints
Monitoring der Bias-Drift von im Einsatz befindlichen SageMaker Endpoints
Monitoring der Drift der Feature Attribution von im Einsatz befindlichen SageMaker Endpoints
Batch-Vorhersagen mit SageMaker Batch Transform durchführen
AWS Lambda Functions und Amazon API Gateway
Modelle auf Edge-Geräten optimieren und verwalten
PyTorch-Modelle mit TorchServe deployen
Inferenz für TensorFlow-basierte BERT-Modelle mit der AWS-Deep-Java-Bibliothek
Kosten einsparen und die Leistung verbessern
Zusammenfassung
10Pipelines und MLOps
Machine Learning Operations (MLOps)
Software-Pipelines
Machine-Learning-Pipelines
Pipelines mit SageMaker Pipelines orchestrieren
Pipelines mit SageMaker Pipelines automatisieren
Weitere Optionen für Pipelines
Human-in-the-Loop-Workflows
Kosten einsparen und die Leistung verbessern
Zusammenfassung
11Streaming-Analysen und Machine Learning
Unterschiede zwischen Online Learning und Offline Learning
Streaming-Anwendungen
Windowed Queries für Streaming-Daten
Streaming-Analysen und Machine Learning mit AWS
Produktrezensionen in Echtzeit mit Amazon Kinesis, AWS Lambda und Amazon SageMaker klassifizieren
Streaming-Daten mit Amazon Kinesis Data Firehose aufnehmen
Zusammenfassende Metriken für Produktrezensionen mithilfe von Streaming-Analysen in Echtzeit ermitteln
Amazon Kinesis Data Analytics einrichten
Amazon-Kinesis-Data-Analytics-Anwendungen
Produktrezensionen mit Apache Kafka, AWS Lambda und Amazon SageMaker klassifizieren
Kosten einsparen und die Leistung verbessern
Zusammenfassung
12Sicherheit von Data-Science-Projekten auf AWS
Modell der geteilten Verantwortung zwischen AWS und seinen Kunden
AWS Identity and Access Management (IAM) anwenden
Rechen- und Netzwerkumgebungen isolieren
Zugriff auf Daten von Amazon S3 schützen
Verschlüsselung im Ruhezustand (Encryption at Rest)
Verschlüsselung bei der Übertragung von Daten (Encryption in Transit)
SageMaker-Notebook-Instanzen schützen
SageMaker Studio schützen
SageMaker-Jobs und Modelle schützen
Daten mit AWS Lake Formation schützen
Datenbankzugangsdaten mit AWS Secrets Manager schützen
Governance
Auditierbarkeit
Kosten einsparen und die Leistung verbessern
Zusammenfassung
Index
Mit diesem Buch lernen KI- und Machine-Learning-Praktikerinnen und -Praktiker, wie sie erfolgreich Data-Science-Projekte auf Amazon Web Services (AWS) entwickeln und deployen können. Der KI- und Machine-Learning-Stack von Amazon gibt Ihnen die Möglichkeit, durch die Vereinigung von Data Science, Data Engineering und Anwendungsentwicklung Ihre Fähigkeiten zu steigern. Dieser Leitfaden zeigt Ihnen, wie Sie Pipelines in der Cloud erstellen und ausführen und anschließend die Ergebnisse innerhalb von Minuten statt Tagen in Anwendungen integrieren können. Chris Fregly und Antje Barth machen zudem im gesamten Buch deutlich, wie Sie Ihre Kosten senken und die Leistung verbessern können.
Wenden Sie Amazons KI- und ML-Stack auf reale Anwendungsfälle aus den Bereichen der natürlichen Sprachverarbeitung (
Natural Language Processing
, NLP), der Bildverarbeitung (
Computer Vision
), der Erkennung von Betrug (
Fraud Detection
) sowie im Rahmen des Einsatzes intelligenter Kommunikationsgeräte (
Conversational Devices
) und mehr an.
Greifen Sie auf automatisierte ML-Algorithmen (AutoML) zurück, um bestimmte Anwendungsfälle mit Amazon SageMaker Autopilot umzusetzen.
Erhalten Sie einen tiefen Einblick in den gesamten Lebenszyklus der Modellentwicklung für einen BERT-basierten Anwendungsfall der natürlichen Sprachverarbeitung (NLP), einschließlich, neben vielem anderen, Datenaufnahme (engl.
Data Ingestion
) und -analyse.
Bündeln Sie alles in eine wiederverwendbare MLOps-Pipeline (
ML Operations
).
Erkunden Sie die Möglichkeiten des Einsatzes von ML in Echtzeit, Anomalieerkennung und Streaming-Analysen auf Basis von Echtzeitdatenströmen mit Amazon Kinesis und
Amazon Managed Streaming for Apache Kafka
(Amazon MSK).
Lernen Sie bewährte Sicherheitspraktiken für Data-Science-Projekte und -Workflows kennen, einschließlich
AWS Identity and Access Management
(IAM), Authentifizierung, Autorisierung, darunter Datenaufnahme und -analyse, Modelltraining und Deployment.
Kapitel 1 bietet einen allgemeinen Überblick über den sehr umfang- und facettenreichen KI- und ML-Stack von Amazon, der ein enorm leistungsfähiges und vielfältiges Angebot an Diensten, Open-Source-Bibliotheken und Infrastrukturen bietet, die für Data-Science-Projekte jeder Komplexität und Größe genutzt werden können.
Kapitel 2 beschreibt, wie Amazons KI- und ML-Stack in realen Anwendungen aus den Bereichen Empfehlungssysteme, Computer Vision, Betrugserkennung, Verstehen natürlicher Sprache (Natural Language Understanding, NLU), Conversational Devices, Cognitive Search, Kundenbetreuung, vorausschauende Wartung (Predictive Maintenance) in der Industrie, Hausautomatisierung, Internet der Dinge (Internet of Things, IoT), aus dem Gesundheitswesen und auch dem Bereich Quantencomputing eingesetzt werden kann.
Kapitel 3 zeigt, wie Sie mit SageMaker Autopilot AutoML nutzen und einige dieser Anwendungsfälle implementieren können.
In den Kapiteln 4 bis 9 wird der komplette Lebenszyklus der Modellentwicklung (Model Development Life Cycle, MDLC) für einen BERT-basierten NLP-Anwendungsfall ausführlich vorgestellt. Die Vorstellung schließt die Datenaufnahme und -analyse, die Auswahl von Features (engl. Feature Selection) und das Feature Engineering, das Modelltraining sowie die Modellabstimmung und -bereitstellung mit Amazon SageMaker, Amazon Athena, Amazon Redshift, Amazon EMR, TensorFlow, PyTorch und serverloses Apache Spark mit ein.
In Kapitel 10 wird gezeigt, wie sich alle zuvor gezeigten Teilschritte mithilfe von MLOps auf Basis von SageMaker Pipelines, Kubeflow Pipelines, Apache Airflow, MLflow oder TFX in wiederverwendbaren Pipelines zusammenführen lassen.
Kapitel 11 gibt einen Einblick in den Themenkomplex rund um Echtzeit-ML, Anomalieerkennung und Streaming-Analysen für Echtzeitdatenströme unter Einsatz von Amazon Kinesis und Apache Kafka.
Kapitel 12 stellt eine Vielzahl von bewährten Sicherheitspraktiken für Data-Science-Projekte und -Workflows vor, darunter IAM, Authentifizierung, Autorisierung, Netzwerkisolierung, Verschlüsselung von Daten im Ruhezustand (Data Encryption at Rest), Post-Quanten-Netzwerkverschlüsselung bei der Übertragung von Daten, Governance und Auditierbarkeit.
Im gesamten Buch finden Sie zahlreiche Tipps dazu, wie Sie die Kosten senken und die Ergebnisse bzw. die Leistungsfähigkeit von Data-Science-Projekten auf AWS verbessern können.
Dieses Buch richtet sich an alle, die auf der Grundlage von Datenanalysen wichtige Geschäftsentscheidungen treffen. Der Leitfaden hilft Data Analysts, Data Scientists, Data Engineers, Machine Learning Engineers, Research Scientists, Anwendungsentwicklerinnen und -entwicklern sowie DevOps Engineers dabei, ihre Kenntnisse des modernen Data-Science-Stacks auszuweiten und ihre Fähigkeiten im Hinblick auf die Entwicklung in der Cloud zu verbessern.
Amazons KI- und Machine-Learning-Stack vereint die Disziplinen Data Science, Data Engineering und Anwendungsentwicklung und hilft Benutzerinnen und Benutzern, ihre Fähigkeiten über ihre gegenwärtigen Tätigkeiten hinaus zu erweitern. Wir zeigen, wie man Pipelines in der Cloud erstellt und ausführt und dann die Ergebnisse innerhalb von Minuten – nicht in Tagen – in Anwendungen integriert.
Um den größtmöglichen Nutzen aus diesem Buch zu ziehen, sollten Sie idealerweise über die folgenden Kenntnisse verfügen:
ein grundlegendes Verständnis von Cloud Computing,
grundlegende Programmierkenntnisse in Python, R, Java/Scala oder SQL sowie
Grundkenntnisse im Umgang mit Data-Science-Tools wie Jupyter Notebook, Pandas, NumPy oder scikit-learn.
Es gibt eine Reihe großartiger Autorinnen und Autoren sowie Quellen, die uns im Hinblick auf dieses Buch inspiriert haben:
Aurélien Gérons Buch
Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow
(
https://oreilly.de/produkt/praxiseinstieg-machine-learning-mitscikit-learn-keras-und-tensorflow/
) (O’Reilly, aktuell in 2. Auflage) ist ein hervorragender praktischer Leitfaden für den Aufbau intelligenter ML-Systeme mit gängigen Tools wie Python, scikit-learn und TensorFlow.
Deep Learning for Coders with fastai and PyTorch
(
https://www.oreilly.com/library/view/deep-learning-for/9781492045519/
) (O’Reilly) von Jeremy Howard und Sylvain Gugger bietet eine exzellente Einführung in die Erstellung von Deep-Learning-Anwendungen mit PyTorch – und zwar ohne dass ein Doktortitel vonnöten wäre, um dem Buch folgen zu können.
Das Buch
Building Machine Learning Pipelines
(
https://www.oreilly.com/library/view/building-machine-learning/9781492053187/
) (O’Reilly) von Hannes Hapke und Catherine Nelson ist ein ausgezeichnetes und einfach zu lesendes Nachschlagewerk zum Aufbau von AutoML-Pipelines mit TensorFlow und TFX.
Das Buch
Programming Quantum Computers
(
https://www.oreilly.com/library/view/programming-quantum-computers/9781492039679/
) (O’Reilly) von Eric R. Johnston, Nic Harrigan und Mercedes Gimeno-Segovia ist eine hervorragende Einführung in Quantencomputer mit leicht verständlichen Beispielen, die den Nutzen von Quanten aufzeigen.
Micha Gorelick und Ian Ozsvald haben ein Buch für Fortgeschrittene namens
High Performance Python
(
https://www.oreilly.com/library/view/high-performance-python/9781492055013/
) (O’Reilly) verfasst, das viele wertvolle Tipps und Tricks zum Profilen und Optimieren von Python-Code enthält, insbesondere im Hinblick auf eine hochleistungsfähige Datenverarbeitung, das Feature Engineering und das Modelltraining.
Zusätzlich zum Buch haben wir Ihnen eine Webseite (Data Science on AWS, https://datascienceonaws.com) bereitgestellt, die Workshops für Fortgeschrittene, monatliche Webinare, Meet-ups, Videos und Folien zu den Inhalten dieses Buchs bietet.
Außerdem teilen wir regelmäßig relevante Blogbeiträge, Konferenzvorträge, Folien, Termine für Meet-ups und Workshops auf Twitter oder LinkedIn:
Folgen Sie uns auf Twitter:
https://twitter.com/cfregly
und
https://twitter.com/anbarth
Auf LinkedIn finden Sie uns ebenfalls:
https://www.linkedin.com/in/cfregly
und
https://www.linkedin.com/in/antje-barth
Die folgenden typografischen Konventionen werden in diesem Buch eingesetzt:
Kursiv
Kennzeichnet neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateiendungen.
Konstante Zeichenbreite
Wird für Programmlistings und Programmelemente in Textabschnitten wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter verwendet.
Konstante Zeichenbreite, fett
Kennzeichnet Befehle oder anderen Text, der vom Benutzer wörtlich eingegeben werden sollte.
Dieses Symbol steht für einen Tipp oder eine Empfehlung.
Dieses Symbol steht für einen allgemeinen Hinweis.
Ergänzendes Material (Codebeispiele, Übungen usw.) steht in dem Repository oreilly_book unter https://github.com/data-science-on-aws zum Download bereit. Einige der in diesem Buch gezeigten Codebeispiele sind gekürzt, um eine bestimmte Implementierung hervorzuheben. Das Repository enthält zusätzliche Notebooks, die nicht in diesem Buch behandelt werden, aber für den Leser nützlich sind. Die Notebooks sind jeweils nach den einzelnen Kapiteln des Buchs gegliedert und sollten leicht nachvollziehbar sein. Sie können die Zellen in den einzelnen Notebooks auf bequeme Weise ausführen, indem Sie die Umschalt- und die Eingabetaste gleichzeitig drücken.
Im Rahmen der Ersteinrichtung folgen Sie bitte den Anweisungen bzw. Screenshots in der README.md-Datei (unter Instructions) sowie den durchnummerierten Jupyter-Notebooks im Ordner 01_introduction, um
zunächst ein AWS-Konto zu erstellen (falls noch nicht vorhanden),
sich in Ihrer AWS Management Console anzumelden,
SageMaker Studio einzurichten,
zum Dashboard des IAM-Services zu navigieren,
als
Rolle SageMakerExecutionRole
auszuwählen,
die IAM-Richtlinie (
IAM Policy
)
AdminstratorAccess
zuzuordnen, um die Zugriffsberechtigungen festzulegen,
das GitHub-Repository zu klonen und
die in diesem Buch verwendeten Bibliotheken zu installieren.
Beachten Sie, dass die hier verwendeten Berechtigungen nur Demonstrationszwecken dienen. Folgen Sie ansonsten bei der Vergabe von Zugriffsrechten in Ihrer Umgebung bitte stets dem Least-Privilege-Prinzip.
Dieses Buch dient dazu, Ihnen beim Erledigen Ihrer Arbeit zu helfen. Im Allgemeinen dürfen Sie die Codebeispiele aus diesem Buch in Ihren eigenen Programmen und der dazugehörigen Dokumentation verwenden. Sie müssen uns dazu nicht um Erlaubnis bitten, solange Sie nicht einen beträchtlichen Teil des Codes reproduzieren. Beispielsweise benötigen Sie keine Erlaubnis, um ein Programm zu schreiben, in dem mehrere Codefragmente aus diesem Buch vorkommen. Wollen Sie dagegen ein Produkt mit Beispielen aus Büchern von O’Reilly verkaufen oder verteilen, benötigen Sie eine Erlaubnis. Eine Frage zu beantworten, indem Sie aus diesem Buch zitieren und ein Codebeispiel wiedergeben, benötigt keine Erlaubnis. Eine beträchtliche Menge Beispielcode aus diesem Buch in die Dokumentation Ihres Produkts aufzunehmen, bedarf hingegen unserer ausdrücklichen Zustimmung.
Wir freuen uns über Zitate, verlangen diese aber nicht. Ein Zitat enthält Titel, Autor, Verlag und ISBN, zum Beispiel: »Data Science mit AWS von Chris Fregly und Antje Barth (O’Reilly). Copyright 2022 dpunkt.verlag, ISBN 978-3-96009-184-4.« Wenn Sie glauben, dass Ihr Einsatz von Codebeispielen über die übliche Nutzung hinausgeht oder außerhalb der oben vorgestellten Nutzungsbedingungen liegt, kontaktieren Sie uns bitte unter [email protected].
Wir möchten uns bei Gary O’Brien, Development Editor bei O'Reilly, bedanken, der uns bei der Erstellung des Buchs geholfen hat und, was noch wichtiger ist, uns jedes Mal ein Lächeln ins Gesicht gezaubert hat, wenn wir uns unterhalten haben. Danke, Gary, dass wir den Quellcode und die Low-Level-Hardwarespezifikationen in Kapitel 1 aufnehmen durften! Wir möchten uns auch bei Jessica Haberman, Senior Acquisition Editor, bedanken, die uns wichtige Ratschläge zu allen Aspekten vom ersten Buchvorschlag bis zur endgültigen Seitenzahl gegeben hat. Mit ihrer Hilfe konnten wir nach sieben Jahren der Einreichung von Buchvorschlägen die Messlatte so hoch legen, dass der Vorschlag angenommen wurde! Ein besonderer Dank geht an Mike Loukides und Nicole Taché von O’Reilly für ihre wohlüberlegten Empfehlungen zu Beginn des Schreibprozesses, zur Gliederung der Kapitel, zu den Einleitungen und zu den Zusammenfassungen.
Wir möchten uns ganz herzlich bei den Fachgutachtern bedanken, die unermüdlich jede Seite dieses Buchs begutachtet – und erneut begutachtet – haben. Diese Reviewer sind hier in alphabetischer Reihenfolge nach Vornamen aufgeführt: Ali Arsanjani, Andy Petrella, Brent Rabowsky, Dean Wampler, Francesco Mosconi, Hannah Marlowe, Hannes Hapke, Josh Patterson, Josh Wills, Liam Morrison, Noah Gift, Ramine Tinati, Robert Monarch, Roy Ben-Alta, Rustem Feyzkhanov, Sean Owen, Shelbee Eigenbrode, Sireesha Muppala, Stefan Natu, Ted Dunning und Tim O’Brien. Ihr umfassendes technisches Fachwissen und ihr fundiertes Feedback waren nicht nur für dieses Buch von unschätzbarem Wert, sondern auch für die Art und Weise, wie wir in Zukunft technisches Material präsentieren werden. Sie haben dazu beigetragen, dass dieses Buch nicht nur gut, sondern großartig geworden ist, und es hat uns wirklich Spaß gemacht, mit allen diesen Menschen an diesem Projekt gearbeitet zu haben.
Ich möchte dieses Buch meinem verstorbenen Vater, Thomas Fregly, widmen. Dad, du hast meinen ersten Apple-Computer mit nach Hause gebracht, als ich acht Jahre alt war, und damit mein Leben für immer verändert. Du hast mir im Alter von zehn Jahren geholfen, dein Buch über Infinitesimalrechnung zu verinnerlichen, und mein starkes Interesse an der Mathematik weiter gefestigt. Du hast mir beigebracht, fleißig zu lesen, kurz und bündig zu schreiben, effektiv zu sprechen, schnell zu tippen und frühzeitig Fragen zu stellen. Dadurch, dass ich dir bei der Reparatur eines Bootsmotors zusah, als du auf dem Michigansee gestrandet warst, wurde ich immer wieder dazu inspiriert, tiefer einzutauchen und die Hardware zu verstehen, die meine Software zum Laufen bringt. Bei einem Rundgang durch dein Büro bei der Chicago Sun-Times lernte ich, dass jeder eine interessante Geschichte zu erzählen hat, auch der Rezeptionist, der Geschäftsführer und das Wartungspersonal. Du hast alle gleichermaßen gegrüßt, dich nach ihren Kindern erkundigt, ihnen zugehört und sie mit einer eigenen lustigen Geschichte zum Lachen gebracht. Als ich als Kind an deiner Hand über deinen Universitätscampus lief, lernte ich, dass es in Ordnung ist, den Bürgersteig zu verlassen und mir meinen eigenen Weg durch das Gras zu bahnen. Du sagtest: »Keine Sorge, Chris, sie werden diesen Weg irgendwann pflastern, denn es ist eindeutig der kürzeste Weg vom Ingenieursgebäude zur Cafeteria.« Du hattest recht, Dad. Viele Jahre später gingen wir diesen neu gepflasterten Weg, um uns in der Cafeteria dein Lieblingsgetränk, Pepsi Light, zu holen. Von dir habe ich gelernt, meinen eigenen Weg im Leben zu gehen und nicht immer der Masse zu folgen. Auch wenn du Windows 95 nicht mehr erlebt hast, hast du, ehrlich gesagt, nicht viel verpasst. Und ja, Mac OS ist schließlich zu Linux gewechselt. Auch da hattest du recht.
Ich möchte auch meiner Co-Autorin, Antje Barth, dafür danken, dass sie viele Nächte und Wochenenden investiert hat, um das Schreiben dieses Buchs zu einem fantastischen Erlebnis zu machen. Trotz des Zeitunterschieds von acht bis neun Stunden zwischen San Francisco und Düsseldorf hast du dir für virtuelle Whiteboard-Sitzungen, kurzfristige Quellcodeverbesserungen und Diskussionen im Hinblick auf die Verwendung des Oxford-Kommas immer Zeit genommen. Durch diese Erfahrung sind wir noch bessere Freunde geworden, und ohne dich hätte ich ein so gehaltvolles und hochwertiges Buch nicht erstellen können. Ich freue mich auf die Zusammenarbeit mit dir im Rahmen von zahlreichen zukünftigen Projekten!
Ich möchte Ted Dunning und Ellen Friedman dafür danken, dass sie mir stets als großartige Mentoren zur Seite stehen und mich immer wieder dazu ermutigen, neue Herausforderungen in Angriff zu nehmen. Ted, wenn wir uns unterhalten, hast du immer weise Worte parat, die mir helfen, die Dinge aus einer anderen Perspektive zu sehen – sei es bei der Vorbereitung auf einen Demowettbewerb oder bei Gesprächen darüber, wie wir unseren Lesern helfen können, das Beste aus diesem Buch herauszuholen. Ellen, ich erinnere mich noch gut daran, wie du mir geholfen hast, überzeugende Vorschläge für Konferenzvorträge zu erstellen, als ich damit anfing, Vorträge für O’Reilly-Strata- und AI-Konferenzen einzureichen. Und bis zum heutigen Tag mache ich mir, wenn es darum geht, einprägsame Titel zu finden, besonders viele Gedanken. Leider kam O’Reilly meinen Vorschlag, als Titel dieses Buchs Alexa, bitte trainiere mein Modell zu nehmen, nicht nach.
Ihr beide geht mit gutem Beispiel voran, wenn ihr sagt: »Unterstützt den Traum eines Mädchens, das zu erreichen, was sie erreichen kann.« Aus demselben Grund möchte ich dieses Buch allen Frauen und Mädchen widmen, die von einer Karriere in der IT-Branche träumen oder diese anstreben. Solange ihr an euch selbst glaubt, steht euch nichts im Wege, eure Träume in diesem Berufsfeld zu verwirklichen.
Es gab noch so viele weitere Personen, die mich auf meinem beruflichen Weg unterstützt und ermutigt haben. Ich danke euch allen.
Ich möchte auch Chris dafür danken, dass er ein unterhaltsamer und kompetenter Mitverfasser war. Von Anfang an hast du immer auf die höchsten Standards gepocht, mich dazu gebracht, die Themen zu vertiefen, und mich ermutigt, neugierig zu sein und viele Fragen zu stellen. Du hast mir geholfen, meinen Code zu vereinfachen, meine Gedanken klar darzustellen und endlich das heiß diskutierte Oxford-Komma zu akzeptieren!
In diesem Kapitel erörtern wir die Vorteile der Erstellung von Data-Science-Projekten in der Cloud. Zunächst werden die Vorzüge von Cloud Computing dargelegt. Anschließend beschreiben wir einen typischen Arbeitsablauf beim Machine Learning und die allgemeinen Herausforderungen bei der Überführung unserer Modelle und Anwendungen vom Prototyp in die Produktion. Wir gehen auf die allgemeinen Vorteile der Entwicklung von Data-Science-Projekten mit Amazon Web Services (AWS) ein und stellen die relevanten AWS-Services für jeden Schritt des Modellentwicklungsworkflows vor. Darüber hinaus zeigen wir bewährte Ansätze zur Gestaltung der Architektur auf, insbesondere bezogen auf Operational Excellence, Sicherheit, Zuverlässigkeit und Leistungs- sowie Kostenoptimierung.
Cloud Computing ermöglicht eine bedarfsgerechte Bereitstellung von IT-Ressourcen über das Internet, wobei sich die Kosten nach dem jeweiligen Bedarf bemessen. Anstatt eigene Rechenzentren und Server zu kaufen, sie zu betreiben und zu warten, können wir Technologien wie Rechenleistung, Speicherplatz, Datenbanken und andere Dienste je nach Bedarf erwerben. Ähnlich wie ein Stromversorger sofort Strom liefert, wenn wir einen Lichtschalter in unserem Haus betätigen, stellt die Cloud IT-Ressourcen bei Bedarf per Mausklick oder durch den Aufruf einer API bereit.
»Es gibt keinen Algorithmus, der Erfahrung kompensiert«, lautet ein berühmtes Zitat von Andy Jassy, ehemals CEO von Amazon Web Services und inzwischen CEO von Amazon. Das Zitat drückt die langjährige Erfahrung des Unternehmens beim Aufbau zuverlässiger, sicherer und leistungsstarker Dienste seit dem Jahr 2006 aus.
AWS hat sein Leistungsportfolio fortwährend erweitert, um praktisch jede Art von Arbeit in der Cloud zu unterstützen, einschließlich zahlreicher Dienste und Funktionen auf dem Gebiet der künstlichen Intelligenz und des maschinellen Lernens. Viele dieser KI- und Machine-Learning-Dienste gehen auf Amazons Pionierarbeit in den Bereichen Empfehlungssysteme, Computer Vision, Sprach- bzw. Textverarbeitung und neuronale Netze in den letzten 20 Jahren zurück. Ein Forschungsbeitrag aus dem Jahr 2003 mit dem Titel »Amazon.com Recommendations: Item-to-Item Collaborative Filtering« (https://oreil.ly/UlCDV) wurde kürzlich vom Institute of Electrical and Electronics Engineers als ein Beitrag ausgezeichnet, der den »Test der Zeit« überstanden hat. Lassen Sie uns die Vorzüge von Cloud Computing im Zusammenhang mit Data-Science-Projekten in der AWS-Cloud betrachten.
Cloud Computing ermöglicht uns, Ressourcen bedarfsgerecht bereitzustellen, was uns wiederum die Möglichkeit bietet, zügig und häufig Experimente durchzuführen. Vielleicht möchten wir eine neue Bibliothek testen, um die Qualität unseres Datensatzes zu überprüfen, oder ein Modell mithilfe der neuesten Generation von Grafikprozessoren (GPUs) schneller trainieren. Innerhalb von Minuten können wir Dutzende, Hunderte oder sogar Tausende von Servern in Betrieb nehmen, die derartige Aufgaben für uns erledigen. Führt ein Experiment nicht zum gewünschten Erfolg, können wir die entsprechenden Ressourcen jederzeit und ohne jegliches Risiko wieder abstellen.
Cloud Computing ermöglicht uns, auf Investitionen mit hohem Kapitaleinsatz zu verzichten und dafür Kosten zu tragen, die variabler Natur sind: Wir zahlen nur für das, was wir tatsächlich in Anspruch nehmen, und müssen keine Vorabinvestitionen in Hardware tätigen, die in ein paar Monaten veraltet sein könnte. Wenn wir Rechenressourcen im Rahmen unserer Datenqualitätsprüfungen und -transformationen oder unserem Modelltraining einsetzen, zahlen wir ausschließlich für die Zeit, in der diese Rechenressourcen genutzt werden. Wir können weitere Kosteneinsparungen erzielen, indem wir Amazon-EC2-Spot-Instanzen für unser Modelltraining nutzen. Mit Spot-Instanzen können wir ungenutzte EC2-Kapazitäten in der AWS-Cloud mit einem Preisnachlass von bis zu 90 % im Vergleich zu On-Demand-Instanzen verwenden. Mit reservierten Instanzen (Reserved Instances) und Sparplänen (Savings Plans) können wir Geld sparen, indem wir für einen bestimmten Zeitraum im Voraus bezahlen.
Cloud Computing ermöglicht uns, unsere Ressourcen automatisch herauf- oder herunterzuskalieren (engl. Scaling-out bzw. Scaling-in), um sie an die Bedürfnisse unserer Anwendung anzupassen. Nehmen wir an, wir hätten unsere Data-Science-Anwendung in die Produktion überführt und unser Modell diente der Echtzeitvorhersage. Sollten wir feststellen, dass es zu einem Anstieg der Modellanfragen kommt, können wir die Ressourcen, die das Modell hosten, automatisch erhöhen. Ebenso können wir die Ressourcen automatisch reduzieren, wenn die Anzahl der Modellanfragen sinkt. Es ist nicht mehr notwendig, unnötig viele Ressourcen bereitzustellen, um Lastspitzen zu bewältigen.
Cloud Computing ermöglicht uns, Innovationen schneller einzuführen, da wir uns auf die Entwicklung von Anwendungen konzentrieren können, die dazu verhelfen, unser Unternehmen von anderen abzuheben, anstatt uns mit der aufwendigen Verwaltung der Infrastruktur zu beschäftigen. Die Cloud hilft uns, mit neuen Algorithmen, Frameworks und Hardware in Sekunden statt Monaten Experimente anzustellen.
Cloud Computing ermöglicht uns, unsere Data-Science-Anwendungen innerhalb von Minuten weltweit zur Verfügung zu stellen. In der heute global vernetzten Wirtschaft ist es wichtig, nahe bei unseren Kunden zu sein. AWS hat das Konzept von Regionen etabliert, die physischen Standorten auf der ganzen Welt entsprechen und AWS-Rechenzentren zu Clustern zusammenfasst. Jede Gruppe von logischen Rechenzentren wird als Availability Zone (AZ) bezeichnet. Jede AWS-Region besteht aus mehreren isolierten und physisch getrennten AZs innerhalb eines geografischen Gebiets. Die Anzahl der verfügbaren AWS-Regionen und AZs wächst stetig (https://oreil.ly/qegDk).
Wir können die weltweite Verfügbarkeit der AWS-Regionen und AZs dazu nutzen, unsere Data-Science-Anwendungen in der Nähe unserer Kunden bereitzustellen, die Anwendungsleistung mit extrem schnellen Reaktionszeiten zu verbessern und die Datenschutzbestimmungen der einzelnen Regionen einzuhalten.
Einer der Vorteile der Entwicklung von Data-Science-Projekten in der Cloud ist der reibungslose Übergang vom Prototyp zur Produktion. Wir können innerhalb von Minuten von der Programmierung eines Modellprototyps in unserem Notebook zur Überprüfung der Datenqualität oder zum verteilten Modelltraining mit Petabytes an Daten übergehen. Im Anschluss daran können wir unsere trainierten Modelle für Echtzeit- oder Batch-Vorhersagen für Millionen von Nutzerinnen und Nutzern auf der ganzen Welt einsetzen.
Die Erstellung von Prototypen erfolgt häufig in Entwicklungsumgebungen mit nur einem Rechner unter Verwendung von Jupyter Notebook, NumPy und Pandas. Dieser Ansatz funktioniert gut für kleine Datensätze. Bei der Arbeit mit großen Datensätzen werden wir schnell die CPU- und RAM-Ressourcen eines einzelnen Rechners überschreiten. Außerdem möchten wir vielleicht GPUs – oder mehrere Rechner – verwenden, um unser Modelltraining zu beschleunigen. Dies ist mit einer einzelnen Maschine bzw. einem einzelnen Rechner in der Regel nicht möglich. Die nächste Herausforderung wartet auf uns, wenn wir unser Modell (bzw. unsere Anwendung) in der Produktionsumgebung zum Einsatz bringen bzw. deployen möchten. Zudem müssen wir sicherstellen, dass unsere Anwendung Tausende oder Millionen gleichzeitiger Benutzer global bedienen kann.
Das Deployment in die Produktionsumgebung erfordert oft eine enge Zusammenarbeit zwischen verschiedenen Teams, wie etwa Data Science, Data Engineering, Anwendungsentwicklung und DevOps. Und sobald unsere Anwendung erfolgreich bereitgestellt wurde, müssen wir die Modellleistung und die Datenqualität kontinuierlich überwachen und auf Probleme reagieren, die nach der Überführung des Modells in die Produktion auftreten können.
Die Entwicklung von Data-Science-Projekten in der Cloud ermöglicht uns, unsere Modelle reibungslos – vom Prototyp ausgehend – in die Produktion zu überführen, ohne dass wir eine eigene physische Infrastruktur aufbauen müssen. Verwaltete Cloud-Dienste geben uns die Werkzeuge an die Hand, um unsere Arbeitsabläufe zu automatisieren und Modelle in einer skalierbaren und äußerst leistungsfähigen Produktionsumgebung bereitzustellen.
Data-Science-Pipelines und -Workflows umfassen viele komplexe, multidisziplinäre und iterative Schritte. Nehmen wir als Beispiel einen typischen Workflow im Rahmen der Entwicklung eines Machine-Learning-Modells. Wir beginnen mit der Datenaufbereitung und gehen dann zum Training und zum Feintuning eines Modells über. Schließlich stellen wir unser Modell (bzw. unsere Anwendung) in einer Produktionsumgebung bereit. Jeder dieser Schritte besteht wiederum aus mehreren Teilschritten, wie in Abbildung 1-1 dargestellt.
Abbildung 1-1: Ein typischer Machine-Learning-Workflow umfasst viele komplexe, multidisziplinäre und iterative Schritte.
Wenn wir AWS verwenden, befinden sich unsere Rohdaten wahrscheinlich bereits im Amazon Simple Storage Service (Amazon S3) und sind als CSV-Datei, als Apache Parquet oder in einem ähnlichen Format gespeichert. Mit den Amazon-KI- oder-AutoML-Diensten können wir in kürzester Zeit damit beginnen, Modelle zu trainieren, um eine Baseline für die Modellleistung zu erhalten, indem wir direkt auf unseren Datensatz verweisen und auf eine einzige Schaltfläche train klicken. Die KI-Dienste und AutoML werden in den Kapiteln 2 und 3 ausführlich behandelt.
Für kundenspezifisch gestaltete Machine-Learning-Modelle – den Hauptschwerpunkt dieses Buchs – können wir mit der manuellen Datenaufnahme und der explorativen Analyse beginnen, einschließlich Datenanalyse, Überprüfung der Datenqualität, zusammenfassender Statistiken, fehlender Werte, Quantilsberechnungen, Analyse der Schiefe der Daten, Korrelationsanalyse usw. Die Kapitel 4 und 5 behandeln ausführlich die Datenaufnahme und die explorative Datenanalyse.
Dann sollten wir die Art der maschinellen Lernaufgabe definieren – Regression, Klassifikation, Clustering usw. Sobald wir die Art des zu lösenden Problems bestimmt haben, können wir einen Machine-Learning-Algorithmus auswählen, der sich am besten für die Lösung des jeweiligen Problems eignet. Je nachdem, welchen Algorithmus wir wählen, müssen wir eine Teilmenge unserer Daten auswählen, um unser Modell zu trainieren, zu validieren und zu testen. Unsere Rohdaten müssen in der Regel in mathematische Vektoren umgewandelt werden, um die numerische Optimierung und das Modelltraining zu ermöglichen. Wir könnten uns zum Beispiel dafür entscheiden, kategoriale Datenspalten in One-Hot-codierte Vektoren umzuwandeln oder textbasierte Datenspalten in Worteinbettungsvektoren, sogenannte Word Embeddings, umzuwandeln. Nachdem wir einen Teil der Rohdaten in Features umgewandelt haben, sollten wir die Features bzw. Daten in Trainings-, Validierungs- und Testdatensätze aufteilen, um sie für das Modelltraining, das Feintuning und das Testen vorzubereiten. Die Auswahl und Transformation von Features – die auch als Merkmale bezeichnet werden – wird in den Kapiteln 5 und 6 detaillierter behandelt.
In der Phase des Modelltrainings wählen wir einen Algorithmus aus und trainieren unser Modell mit unserem Trainingsdatensatz, um zu prüfen, ob unser Programmcode und unser Algorithmus geeignet sind, das gegebene Problem zu lösen. In Kapitel 7 werden wir uns ausgiebig mit dem Modelltraining beschäftigen.
In der Phase der Modellabstimmung bzw. -optimierung stimmen wir die Hyperparameter des Algorithmus ab und bewerten die Leistung des Modells anhand des Validierungsdatensatzes. Wir wiederholen diese Schritte, fügen weitere Daten hinzu oder ändern je nach Bedarf die Hyperparameter, bis das Modell die erwarteten Ergebnisse auf dem Testdatensatz erzielt. Bevor wir das Modell in die Produktion überführen, sollten wir sicherstellen, dass sich diese Ergebnisse mit unserem Geschäftsziel decken. In Kapitel 8 werden wir uns ausführlich mit der Abstimmung von Hyperparametern beschäftigen.
Die letzte Phase – die Überführung von Prototypen in die Produktion – stellt für Data Scientists und Machine-Learning-Experten oft die größte Herausforderung dar. In Kapitel 9 nehmen wir genauer unter die Lupe, wie wir Modelle deployen können.
In Kapitel 10 führen wir alles zu einer automatisierten Pipeline zusammen. In Kapitel 11 widmen wir uns Streaming-Daten und zeigen, wie sich diese analysieren lassen und wie sie in Machine-Learning-Modellen verarbeitet werden können. Kapitel 12 beschreibt die besten Praktiken zur Sicherung von Data-Science-Projekten in der Cloud.
Sobald wir jeden einzelnen Schritt unseres Machine-Learning-Workflows aufgebaut haben, können wir damit beginnen, die Schritte in einer einzelnen, wiederverwendbaren Machine-Learning-Pipeline zu automatisieren. Wenn neue Daten in S3 abgelegt werden, wird unsere Pipeline mit den neuesten Daten neu gestartet, und das neueste Modell wird in die Produktion geschickt, um unsere Anwendungen zu bedienen. Es gibt zahlreiche Tools zur Workflow-Orchestrierung und AWS-Dienste, die uns beim Aufbau automatisierter Pipelines für maschinelle Lernmodelle helfen.
Amazon SageMaker Pipelines bieten die standardmäßige, voll funktionsfähige und vollständigste Methode zur Implementierung von KI- und Machine-Learning-Pipelines in Amazon SageMaker. SageMaker Pipelines sind in SageMaker Feature Store, SageMaker Data Wrangler, SageMaker Processing Jobs, SageMaker Training Jobs, SageMaker Hyperparameter Tuning Jobs, SageMaker Model Registry, SageMaker Batch Transform und SageMaker Model Endpoints integrierbar, die wir im Laufe des Buchs besprechen werden. In Kapitel 10 befassen wir uns eingehend mit verwalteten SageMaker Pipelines und besprechen, wie Sie Pipelines mit AWS Step Functions, Kubeflow Pipelines, Apache Airflow, MLflow, TFX sowie Human-in-the-Loop-Workflows erstellen können.
Step Functions, ein verwalteter AWS-Service, ist eine großartige Möglichkeit, komplexe Workflows zu erstellen, ohne dass wir eine eigene Infrastruktur aufbauen und warten müssen. Wir können das Step Functions Data Science SDK verwenden, um Machine-Learning-Pipelines aus Python-Umgebungen wie Jupyter Notebook zu erstellen. Step Functions in Bezug auf maschinelles Lernen werden wir uns in Kapitel 10 genauer ansehen.
Kubeflow ist ein relativ neues Ökosystem, das auf Kubernetes aufbaut und ein Orchestrierungssubsystem namens Kubeflow Pipelines enthält. Mit Kubeflow können wir fehlgeschlagene Pipelines neu starten, die Ausführung von Pipelines planen, Trainingsmetriken analysieren und den Verlauf der Entwicklung von Pipelines nachverfolgen bzw. tracken. In Kapitel 10 werden wir uns näher mit der Verwaltung eines Kubeflow-Clusters auf Amazon Elastic Kubernetes Service (Amazon EKS) befassen.
Apache Airflow ist eine sehr ausgereifte und beliebte Lösung, die in erster Linie für die Orchestrierung von Data-Engineering- und ETL-Pipelines (Extract – Transform – Load) entwickelt wurde. Wir können Airflow verwenden, um Workflows als gerichtete azyklische Graphen von Aufgaben zu erstellen. Der Airflow-Scheduler führt unsere Aufgaben auf einem Verbund von Workern aus und folgt dabei den angegebenen Abhängigkeiten. Über die Benutzeroberfläche von Airflow können wir die in der Produktion befindlichen Pipelines visualisieren, den Fortschritt überwachen und bei Bedarf Probleme beheben. In Kapitel 10 werden wir Amazon Managed Workflows for Apache Airflow (Amazon MWAA) näher beleuchten.
MLflow ist ein Open-Source-Projekt, das sich ursprünglich auf die Rückverfolgbarkeit (Tracking) von Experimenten konzentrierte, jetzt aber auch Pipelines namens MLflow Workflows unterstützt. Wir können MLflow auch dazu verwenden, Experimente mit Kubeflow- und Apache-Airflow-Workflows zu tracken. MLflow erfordert jedoch, dass wir unsere eigenen Amazon-EC2- oder Amazon-EKS-Cluster aufbauen und warten. Wir werden MLflow noch ausführlicher in Kapitel 10 vorstellen.
TensorFlow Extended (TFX) ist eine Open-Source-Sammlung von Python-Bibliotheken, die in einem Pipeline-Orchestrator wie AWS Step Functions, Kubeflow Pipelines, Apache Airflow oder MLflow verwendet werden. TFX ist spezifisch für TensorFlow und hängt von einem anderen Open-Source-Projekt, Apache Beam, ab, um über einen einzelnen Verarbeitungsknoten hinaus zu skalieren. In Kapitel 10 werden wir TFX ausführlicher besprechen.
Während die auf KI und Machine Learning basierenden Dienste unser Leben einfacher machen, ist der Mensch noch lange nicht überflüssig. Tatsächlich hat sich das Konzept des Human-in-the-Loop zu einem wichtigen Eckpfeiler in vielen KI- bzw. ML-Workflows entwickelt. Die Einbindung des Menschen trägt wesentlich zur Qualitätssicherung von sensiblen und regulierten Modellen in der Produktion bei.
Amazon Augmented AI (Amazon A2I) ist ein vollständig verwalteter Service zur Entwicklung von Human-in-the-Loop-Workflows, die eine übersichtliche Benutzeroberfläche, eine rollenbasierte Zugriffskontrolle mit AWS Identity and Access Management (IAM) und eine skalierbare Datenspeicherung unter Verwendung von S3 umfassen. Amazon A2I ist in zahlreiche Amazon-Services integriert, darunter Amazon Rekognition für die Handhabung von Medieninhalten (Content-Moderation) und Amazon Textract für die Extraktion von Formulardaten. Des Weiteren können wir Amazon A2I mit Amazon SageMaker und jedem unserer benutzerdefinierten ML-Modelle verwenden. Wir werden uns in Kapitel 10 eingehender mit Human-in-the-Loop-Workflows befassen.
Der Bereich Machine Learning Operations (MLOps) hat sich in den letzten zehn Jahren herausgebildet, um den einzigartigen Herausforderungen beim Betrieb von KI- und ML-basierten Systemen zu begegnen, die aus der Kombination von Software und Daten resultieren. Mithilfe von MLOps entwickeln wir die End-to-End-Architektur für ein automatisiertes Modelltraining, das Hosten von Modellen und die Überwachung der Pipeline. Indem wir von Beginn an eine vollständige MLOps-Strategie verfolgen, bauen wir Fachwissen auf, reduzieren die Wahrscheinlichkeit menschlicher Fehler, verringern das Risiko unseres Projekts und gewinnen Zeit, um uns auf die eigentlichen Herausforderungen der Data Science zu konzentrieren.
MLOps hat drei verschiedene Entwicklungsphasen durchlaufen:
MLOps 1.0
Modelle manuell entwickeln, trainieren, optimieren und deployen.
MLOps 2.0
Modell-Pipelines manuell erstellen und orchestrieren.
MLOps 3.0
Pipelines werden automatisch ausgeführt, wenn neue Daten eintreffen oder der Code durch deterministische Auslöser (Trigger) wie GitOps verändert wird oder wenn die Leistung der Modelle aufgrund statistischer Auslöser wie Drift, Bias (Verzerrung) und Abweichungen in der Erklärbarkeit nachlässt.
AWS und Amazon SageMaker Pipelines unterstützen die komplette MLOps-Strategie, einschließlich des automatischen Pipeline-Retrainings mit sowohl vorab bestimmten bzw. deterministischen GitOps-Triggern als auch statistisch basierten Triggern infolge einer Drift der Daten, eines Bias des Modells oder Veränderungen in der Erklärbarkeit. In den Kapiteln 5, 6, 7 und 9 werden wir uns eingehend mit statistischer Drift, statistischem Bias (bzw. statistischer Verzerrung) und Erklärbarkeit (Explainability) beschäftigen. Außerdem implementieren wir kontinuierliche (Continuous) und automatisierte Pipelines in Kapitel 10 mit verschiedenen Pipeline-Orchestrierungs- und Automatisierungsoptionen, darunter SageMaker Pipelines, AWS Step Functions, Apache Airflow, Kubeflow und andere Optionen, einschließlich Human-in-the-Loop-Workflows. Lassen Sie uns nun einige Best Practices für Operational Excellence, Sicherheit, Zuverlässigkeit, Leistungseffizienz und Kostenoptimierung von MLOps besprechen.
Im Folgenden finden Sie einige Best Practices in Bezug auf Machine Learning, die uns helfen, Data-Science-Projekte erfolgreich in der Cloud aufzubauen:
Datenqualitätsprüfungen.
Da alle unsere ML-Projekte mit Daten beginnen, sollten Sie sicherstellen, dass Sie Zugang zu hochwertigen Datensätzen haben und wiederholt Prüfungen der Datenqualität durchführen können. Eine unzureichende Datenqualität führt häufig dazu, dass Projekte scheitern. Behalten Sie diese Probleme schon früh in Ihrer Pipeline im Auge.
Fangen Sie einfach an und verwenden Sie bestehende Lösungen wieder.
Beginnen Sie mit der einfachsten Lösung, denn es gibt keinen Grund, das Rad neu zu erfinden, wenn es nicht zwingend erforderlich ist. Wahrscheinlich gibt es bereits einen KI-Dienst, der unsere Aufgabe bewältigen kann. Greifen Sie auf verwaltete Dienste wie Amazon SageMaker zurück, die über eine Vielzahl integrierter Algorithmen und vortrainierter Modelle verfügen.
Legen Sie Gütemaße bzw. Leistungsmetriken für das Modell fest.
Ordnen Sie die Leistungsmetriken des Modells den Geschäftszielen zu und überwachen Sie diese Maße kontinuierlich. Wir sollten eine Strategie entwickeln, um bei nachlassender Leistung Modelle für unzureichend zu erklären und neu zu trainieren.
Tracken und versionieren Sie alles.
Tracken Sie die Modellentwicklung mithilfe von Experimenten und dokumentieren Sie den vollständigen Verlauf (Lineage) in nachvollziehbarer Weise. Sie sollten ebenfalls die Datensätze, den Code für die Feature Transformation, die Hyperparameter und die trainierten Modelle versionieren.
Wählen Sie eine geeignete Hardware für das Modelltraining und den Betrieb des Modells aus.
In vielen Fällen stellt das Training des Modells andere Anforderungen an die Infrastruktur als der Betrieb des Modells zur Erstellung von Vorhersagen. Wählen Sie für die einzelnen Phasen die entsprechenden Ressourcen aus.
Überwachen Sie die im Einsatz befindlichen Modelle fortlaufend.
Erkennen Sie eine Drift in den Daten oder im Modell und ergreifen Sie geeignete Maßnahmen, wie z.B. das Modell neu zu trainieren (Retraining).
Automatisieren Sie ML-Workflows.
Bauen Sie konsistente, automatisierte Pipelines auf, um menschliche Fehler zu reduzieren und Zeit für die eigentlichen Kernaufgaben zu gewinnen. Die Pipelines können Schritte umfassen, in denen die Modelle von Menschen genehmigt werden müssen, bevor sie in die Produktion überführt werden.
Die Verantwortung für Sicherheit und Compliance liegt sowohl bei AWS als auch beim Kunden. AWS sorgt für die Sicherheit »der« Cloud, während der Kunde für die Sicherheit »in der« Cloud verantwortlich ist.
Die häufigsten Sicherheitsüberlegungen für den Aufbau sicherer Data-Science-Projekte in der Cloud betreffen die Bereiche Zugriffsverwaltung, Isolierung von Rechnern und Netzwerken, Verschlüsselung, Governance und Auditierbarkeit.
Wir benötigen umfassende Sicherheits- und Zugriffskontrollfunktionen für unsere Daten. Dementsprechend gilt es, den Zugriff auf Aufträge bzw. Jobs wie das Labeln von Daten, auf Skripte, die der Datenverarbeitung dienen, auf Modelle, Endpoints für die Inferenz oder auch auf Jobs für Batch-Vorhersagen zu beschränken.
Außerdem sollten wir eine Daten-Governance-Strategie verfolgen, die die Integrität, Sicherheit und Verfügbarkeit unserer Datensätze gewährleistet. Implementieren und erzwingen Sie eine Datenabfolge, die die auf unsere Trainingsdaten angewandten Datentransformationen überwacht und trackt. Stellen Sie sicher, dass die Daten im Ruhezustand und bei der Übertragung verschlüsselt sind. Des Weiteren sollten Sie bei Bedarf die Einhaltung gesetzlicher Vorschriften gewährleisten.
In Kapitel 12 werden wir einige Best Practices für den Aufbau sicherer Data-Science- und Machine-Learning-Anwendungen auf AWS noch genauer erörtern.
Der Begriff Reliabilität bzw. Zuverlässigkeit eines Systems beschreibt seine Fähigkeit, Störungen bzw. Unterbrechungen der Infrastruktur oder des Diensts auszugleichen, dynamisch Rechenressourcen zu beziehen, um der Nachfrage gerecht zu werden, und Störungen wie Fehlkonfigurationen oder vorübergehende Netzwerkprobleme abzufedern.
Wir sollten das Tracking von Änderungen und die Versionskontrolle für unsere Trainingsdaten automatisieren. Auf diese Weise können wir im Fall eines Fehlers exakt die gleiche Version eines Modells neu erstellen. Wir werden das Modell einmal erstellen und anschließend die Modellartefakte verwenden, um das Modell in mehreren AWS-Konten und -Umgebungen bereitzustellen.
Die Leistungseffizienz (engl. Performance Efficiency) bezieht sich auf die effiziente Nutzung von Computerressourcen zur Erfüllung des Bedarfs und auf die Frage, wie diese Effizienz aufrechterhalten werden kann, wenn sich der Bedarf ändert oder Technologien weiterentwickelt werden.
Wir sollten die für unseren Machine-Learning-Workload geeignete Rechenleistung verwenden. So können wir zum Beispiel GPU-basierte Instanzen nutzen, um Deep-Learning-Modelle effizienter zu trainieren, indem wir eine längere Warteschlangentiefe, höhere arithmetische Logikeinheiten oder mehr Register verwenden.
Machen Sie sich mit den Leistungsanforderungen der Modelle in Bezug auf Latenz und Netzwerkbandbreite vertraut und deployen Sie jedes Modell bei Bedarf möglichst nah am Kunden. Es gibt Situationen, in denen wir unsere Modelle direkt vor Ort einsetzen möchten, um die Leistung zu verbessern oder die Datenschutzbestimmungen einzuhalten. Mit »direkt vor Ort« ist gemeint, dass das Modell auf dem Gerät selbst ausgeführt wird und die Vorhersagen somit lokal ermittelt werden. Außerdem möchten wir die wichtigsten Leistungsmetriken unseres Modells kontinuierlich überwachen, um frühzeitig Veränderungen der Leistung zu erkennen.
Wir können die anfallenden Kosten optimieren bzw. minimieren, indem wir verschiedene Preisoptionen für unsere Amazon-EC2-Instanzen nutzen. Zum Beispiel bieten Sparpläne, sogenannte Savings Plans, erhebliche Einsparungen im Vergleich zu den Preisen für On-Demand-Instanzen. Im Gegenzug verpflichten Sie sich, eine bestimmte Menge an Rechenleistung für eine bestimmte Zeit zu nutzen. Savings Plans sind eine gute Wahl, wenn Ihnen die Arbeitslasten bekannt sind oder sich nicht ändern, wie z.B. bei festen/stabilen Inferenzarbeitslasten.
Bei On-Demand-Instanzen zahlen wir für die Rechenkapazität stundenweise oder sekundenweise, je nachdem, welche Instanzen wir verwenden. On-Demand-Instanzen eignen sich am besten für neue oder zustandsbehaftete Workloads mit hohem Bedarf, wie z.B. kurzfristige Aufträge im Rahmen des Modelltrainings.
Schließlich können wir mit Amazon-EC2-Spot-Instanzen freie Amazon-EC2-Rechenkapazitäten zu einem Preis abrufen, der bis zu 90 % unter dem On-Demand-Preis liegt. Spot-Instanzen können flexible, fehlertolerante Arbeitslasten abdecken, wie z.B. Modelltrainingsaufträge, die nicht zeitkritisch sind. Abbildung 1-2 veranschaulicht die durch die Savings Plans, On-Demand- und Spot-Instanzen resultierende Kombination.
Abbildung 1-2: Optimieren Sie die Kosten, indem Sie eine Kombination aus Savings Plans, On-Demand- und Spot-Instanzen wählen.
Bei vielen der verwalteten Services können wir von dem Modell »Zahlen Sie nur für das, was Sie nutzen« profitieren. Bei Amazon SageMaker zahlen wir zum Beispiel lediglich für die Zeit, in der unser Modell trainiert wird, oder auch nur für die Zeit, in der wir unsere automatische Modelloptimierung durchführen. Beginnen Sie bei der Entwicklung von Modellen mit kleineren Datensätzen, um schneller und sparsamer iterieren zu können. Sobald wir ein gut funktionierendes Modell haben, können wir das Training auf den gesamten Datensatz ausweiten. Ein weiterer wichtiger Aspekt ist die Wahl der geeigneten Größe der Instanzen für das Training und Hosting von Modellen.
In vielen Fällen profitiert das Modelltraining von der GPU-Beschleunigung. Jedoch benötigt die Modellinferenz möglicherweise nicht die gleiche höhere Rechenleistung. Tatsächlich handelt es sich bei den meisten Machine-Learning-Workloads um Vorhersagen. Während das Trainieren des Modells mehrere Stunden oder Tage dauern kann, läuft das eingesetzte Modell wahrscheinlich 24 Stunden am Tag und sieben Tage die Woche auf Tausenden von Servern für Vorhersagen, die Millionen von Kunden unterstützen. Wir sollten entscheiden, ob unser Anwendungsfall einen 24 × 7-Echtzeit-Endpoint oder eine Batch-Vorhersage (Batch Transformation) auf Spot-Instanzen am späten Abend erfordert.
Wie wir wissen, umfassen datenwissenschaftliche Projekte viele komplexe, multidisziplinäre und iterative Schritte. Wir benötigen Zugang zu einer ML-Entwicklungsumgebung, die die Modellprototyping-Phase unterstützt und gleichzeitig einen reibungslosen Übergang zur Vorbereitung unseres Modells auf die Produktion ermöglicht. Wir werden wahrscheinlich mit verschiedenen ML-Frameworks und -Algorithmen experimentieren und einen benutzerdefinierten Code für das Modelltraining und die Inferenz entwickeln wollen.
In anderen Fällen möchten wir vielleicht einfach nur ein sofort verfügbares, vorab trainiertes Modell verwenden, um eine einfache Problemstellung zu lösen. Oder wir möchten AutoML-Techniken nutzen, um eine erste Ausgangsbasis für unser Projekt zu schaffen. AWS bietet eine breite Palette an Diensten und Funktionen für jedes Szenario. Abbildung 1-3 zeigt den gesamten KI- und ML-Stack von Amazon, einschließlich der AI-Services und Amazon SageMaker Autopilot für AutoML.
Für viele gängige Anwendungsfälle wie personalisierte Produktempfehlungen, Inhaltsmoderation oder Bedarfsprognosen können wir auch die verwalteten KI-Services von Amazon mit der Option des Feintunings auf unsere eigenen Datensätze anwenden. Wir können diese »1-Click«-KI-Services über einfache API-Aufrufe in unsere Anwendungen integrieren, ohne dass wir viel Erfahrung mit maschinellem Lernen benötigen (wenn überhaupt).
Abbildung 1-3: Der KI- und ML-Stack von Amazon
Die vollständig verwalteten KI-Services von AWS sind die schnellste und einfachste Möglichkeit, unseren Anwendungen mithilfe einfacher API-Aufrufe Intelligenz zu verleihen. Die KI-Services bieten vorab trainierte oder automatisch trainierte maschinelle Lernmodelle für Bild- und Videoanalyse, erweiterte Text- und Dokumentenanalyse, personalisierte Empfehlungen oder Bedarfsprognosen.
Zu den KI-Services zählen Amazon Comprehend für die Verarbeitung natürlicher Sprache, Amazon Rekognition für Computer Vision, Amazon Personalize für die Erstellung von Produktempfehlungen, Amazon Forecast für die Nachfrage- bzw. Bedarfsprognose und Amazon CodeGuru für die automatische Überprüfung vom Quellcode.
In einem anderen Zusammenhang möchten wir vielleicht die sich wiederholenden Schritte der Datenanalyse, der Datenaufbereitung und des Modelltrainings für einfache und bekannte Fragestellungen aus dem Bereich des maschinellen Lernens automatisieren. Dies hilft uns, den Fokus auf komplexere Anwendungsfälle zu legen. AWS bietet AutoML als Teil des Amazon-SageMaker-Service an.
AutoML ist nicht auf SageMaker beschränkt. Viele der Amazon-KI-Services führen AutoML durch, um das beste Modell und die besten Hyperparameter für den gegebenen Datensatz zu finden.
AutoML bezieht sich im Allgemeinen auf die Automatisierung der typischen Schritte eines Modellentwicklungsworkflows, die wir zuvor beschrieben haben. Amazon SageMaker Autopilot ist ein vollständig verwalteter Service, der AutoML-Techniken auf unsere Datensätze anwendet.
SageMaker Autopilot analysiert zunächst unsere tabellarischen Daten, identifiziert die Art des maschinellen Lernproblems (z.B. Regression, Klassifikation) und wählt Algorithmen (z.B. XGBoost) zur Lösung der Aufgabenstellung aus. Außerdem wird der erforderliche Datenumwandlungscode erstellt, um die Daten für das Modelltraining vorzuverarbeiten. Autopilot erstellt dann eine Reihe von verschiedenen Pipelines mit Kandidaten für maschinelles Lernen, die verschiedene Variationen von Datentransformationen und ausgewählten Algorithmen darstellen. Er wendet die Datentransformationen in einem Feature-Engineering-Schritt an und trainiert und optimiert dann jeden dieser Modellkandidaten. Anschließend wird eine Rangliste (ein Leaderboard) der Modellkandidaten erstellt, die auf einer bestimmten Zielmetrik wie der Treffergenauigkeit auf dem Validierungsdatensatz basiert.
SageMaker Autopilot ist ein Beispiel für eine transparente Form von AutoML. Autopilot gibt nicht nur den Datenumwandlungscode an uns weiter, sondern generiert auch zusätzliche Jupyter Notebooks, die die Ergebnisse des Datenanalyseschritts und die Modellkandidaten-Pipelines zur Reproduktion des Modelltrainings dokumentieren.
SageMaker Autopilot kann in vielen verschiedenen denkbaren Szenarien Einsatz finden. Zudem können wir mehr Personen im Unternehmen in die Lage versetzen, Modelle zu erstellen, z.B. Softwareentwicklerinnen und -entwickler, die unter Umständen nur sehr wenig Erfahrung mit maschinellem Lernen haben. Wir können die Modellerstellung für einfach zu lösende Probleme des maschinellen Lernens automatisieren und unsere volle Aufmerksamkeit auf neue, komplexere Anwendungsfälle richten. Ebenso können die ersten Schritte der Datenanalyse und -aufbereitung automatisiert werden, und das Ergebnis kann dann als der Ausgangspunkt genutzt werden, an dem unser Fachwissen und unsere Erfahrung darüber entscheiden, ob die Modelle weiter optimiert und verbessert werden müssen. Die von Autopilot generierten Modellmetriken geben uns darüber hinaus einen guten Anhaltspunkt für die Modellqualität, die mit dem bereitgestellten Datensatz erreicht werden kann. Wir werden SageMaker Autopilot in Kapitel 3 noch genauer unter die Lupe nehmen.
In den Kapiteln 4, 5 und 6 werden wir jeweils noch gesondert die Datenaufnahme bzw. -eingabe (engl. Ingestion) sowie die Datenexploration und -aufbereitung (engl. Preparation) behandeln. Doch verschaffen wir uns zunächst einmal einen Überblick über diesen Teil des Modellentwicklungsworkflows, um zu erfahren, welche AWS-Services und Open-Source-Tools wir im Rahmen der einzelnen Schritte überhaupt nutzen können.
Alles beginnt mit Daten. Und wenn wir in den letzten Jahrzehnten einen beständigen Trend beobachten konnten, dann ist es die anhaltende Explosion von Daten. Die Menge an Daten wächst exponentiell, und ihre Vielfalt wird immer größer. Heutzutage hängt der geschäftliche Erfolg oft eng mit der Fähigkeit eines Unternehmens zusammen, schnell einen Nutzen aus seinen Daten zu ziehen. Es gibt immer mehr Menschen, Teams und Anwendungen, die auf die Daten zugreifen und sie analysieren müssen. Aus diesem Grund gehen viele Unternehmen zu einem hoch skalierbaren, verfügbaren, sicheren und flexiblen Datenspeicher über, der oft als Data Lake bezeichnet wird.
Ein Data Lake ist ein zentrales und sicheres Repository, das es uns ermöglicht, Daten in beliebigem Umfang zu speichern, zu verwalten, zu erkunden und zu teilen. Mit einem Data Lake können wir jede Art von Analysen effizient durchführen und mehrere AWS-Services nutzen, ohne unsere Daten umwandeln oder verschieben zu müssen.
Data Lakes können sowohl strukturierte relationale Daten als auch halb strukturierte und unstrukturierte Daten enthalten. Wir können sogar Daten in Echtzeit einspeisen. Data Lakes bieten Data-Science- und Machine-Learning-Teams Zugang zu großen und vielfältigen Datensätzen, um genauere Modelle trainieren und einsetzen zu können.
Amazon Simple Storage Service (Amazon S3) ist ein Objektspeicher, der zum Speichern und Abrufen beliebiger Datenmengen von jedem Ort aus und in jedem Format entwickelt wurde. Wir können unsere Daten mit ausgefeilten Zugriffskontrollen organisieren, um unsere Geschäfts- und Compliance-Anforderungen zu erfüllen. Das Thema Sicherheit werden wir in Kapitel 12 noch eingehender behandeln. Amazon S3 ist für eine Dauerhaftigkeit (engl. Durability) von 99,999999999 % (elf Neunen) sowie für eine starke Read-after-Write-Konsistenz ausgelegt. S3 stellt eine beliebte Wahl für Data Lakes in AWS dar.
Wir können den AWS-Service Lake Formation nutzen, um unseren Data Lake zu erstellen. Der Service hilft beim Sammeln und Katalogisieren von Daten aus Datenbanken und Objektspeichern. Mit Lake Formation lassen sich nicht nur unsere Daten verschieben, sondern auch bereinigen und klassifizieren, und der Zugriff auf unsere sensiblen Daten wird mithilfe von ML-Algorithmen geschützt.
AWS Glue kann zur automatischen Erkennung und zum Profiling neuer Daten eingesetzt werden. Es handelt sich bei AWS Glue um einen skalierbaren und serverlosen Datenkatalog- und Datenaufbereitungsservice, der aus einer ETL-Engine, einem Apache-Hive-kompatiblen Service und einem Datentransformations- und Analyseservice besteht. Wir können Daten-Crawler erstellen, um regelmäßig neue Daten zu erkennen und zu katalogisieren. AWS Glue DataBrew ist ein Service, der durch seine benutzerfreundliche Oberfläche besticht und der die Datenaufnahme, -analyse, -visualisierung und -transformation vereinfacht.
Bevor wir mit der Entwicklung eines Machine-Learning-Modells beginnen, müssen wir zunächst die vorhandenen Daten verstehen. Im Rahmen der Datenanalyse untersuchen wir unsere Daten, sammeln Statistiken, prüfen auf fehlende Werte, berechnen Quantile und ermitteln Korrelationen zwischen den verschiedenen Daten.
Manchmal möchten wir einfach eben mal die verfügbaren Daten in unserer Entwicklungsumgebung analysieren und ein erstes Modell als Prototyp entwerfen. Vielleicht möchten wir auch schnell einen neuen Algorithmus ausprobieren. Wir nennen dies »Ad-hoc«-Exploration und Prototyping, bei dem wir einen Teil unserer Daten abfragen, um ein erstes Verständnis des Datenschemas und der Datenqualität für unser spezifisches maschinelles Lernproblem zu erhalten. Anschließend entwickeln wir den Modellcode und stellen sicher, dass er korrekt funktioniert. Diese Ad-hoc-Exploration und das Prototyping können in Entwicklungsumgebungen wie SageMaker Studio, AWS Glue DataBrew und SageMaker Data Wrangler durchgeführt werden.
Amazon SageMaker bietet uns eine gehostete sowie verwaltete Jupyter-Umgebung und mit SageMaker Studio eine integrierte Entwicklungsumgebung. Mit Tools wie Pandas (https://pandas.pydata.org), einer beliebten Open-Source-Bibliothek zur Datenanalyse und -verarbeitung in Python, können wir unmittelbar in unserer Notebook-Umgebung mit der Analyse von Datensätzen beginnen. Beachten Sie, dass Pandas In-Memory-Datenstrukturen (sogenannte DataFrames) verwendet, um Daten zu speichern und zu bearbeiten. Da viele Entwicklungsumgebungen nur über begrenzte Speicherressourcen verfügen, müssen wir vorsichtig dabei sein, wie viele Daten wir in Pandas in einen DataFrame laden.
Um Daten in unserem Notebook zu visualisieren, können wir beliebte Open-Source-Bibliotheken wie Matplotlib (https://matplotlib.org) oder Seaborn (https://seaborn.pydata.org) nutzen. Mit Matplotlib können wir statische, animierte und auch interaktive Visualisierungen in Python erstellen. Seaborn baut auf Matplotlib auf und unterstützt zusätzliche statistische Diagramme – und bietet eine vergleichsweise einfach zu nutzende Syntax. Beide Datenvisualisierungsbibliotheken sind direkt mit den Pandas-Datenstrukturen kompatibel.
Die Open-Source-Bibliothek AWS Data Wrangler (https://oreil.ly/Q7gNs) erweitert die Leistungsfähigkeit von Pandas innerhalb von AWS. AWS Data Wrangler ermöglicht es, Pandas-DataFrames an AWS-Services wie Amazon S3, AWS Glue, Amazon Athena und Amazon Redshift anzubinden.
AWS Data Wrangler bietet optimierte Python-Funktionen zur Durchführung gängiger ETL-Aufgaben, um Daten zwischen Data Lakes, Data Warehouses und Datenbanken zu laden und auszulesen. Nachdem wir AWS Data Wrangler mit pip install awswrangler installiert und anschließend importiert haben, können wir unseren Datensatz direkt aus S3 in einen Pandas-DataFrame einlesen, wie hier gezeigt:
AWS Data Wrangler verfügt auch über zusätzliche Speicheroptimierungsfunktionen, wie z.B. das Einlesen von Daten in Blöcken, sogenannten Chunks. Dies ist insbesondere dann hilfreich, wenn wir große Datensätze abfragen müssen. Wenn die Chunking-Funktion aktiviert ist, liest AWS Data Wrangler jede Datensatzdatei im Pfad ein und gibt sie als separaten Pandas-DataFrame zurück. Wir können auch die Chunk-Größe festlegen, um die Anzahl der Zeilen in einem DataFrame zurückzugeben, die dem numerischen Wert entspricht, den wir als Chunk-Größe definiert haben. Eine vollständige Übersicht über die Möglichkeiten finden Sie in der Dokumentation (https://oreil.ly/4sGjc). In Kapitel 5 werden Sie die Funktionen von AWS Data Wrangler noch ausführlicher kennenlernen.
Mit verwalteten Diensten wie Amazon Athena können wir von unserem Notebook aus interaktive SQL-Abfragen für die Daten in S3 durchführen. Amazon Athena ist eine verwaltete, serverlose, dynamisch skalierbare verteilte SQL-Abfrage-Engine, die für schnelle parallele Abfragen auf extrem großen Datensätzen konzipiert ist. Athena basiert auf Presto, der beliebten Open-Source-Abfrage-Engine, und erfordert keine Wartung. Bei Amazon Athena zahlen wir nur für die Abfragen, die wir ausführen. Außerdem können wir Daten in ihrer Rohform direkt aus unserem S3 Data Lake ohne zusätzliche Transformationen abfragen.
Amazon Athena nutzt auch den Service AWS Glue Data Catalog zum Speichern und Abrufen der für unsere SQL-Abfragen benötigten Schema-Metadaten. Wenn wir unsere Athena-Datenbank und -Tabellen definieren, verweisen wir auf den Datenspeicherort in S3. Athena speichert dann diese Zuordnung von Tabellen zu S3 (Table-to-S3 Mapping) im AWS Glue Data Catalog. Mit PyAthena, einer beliebten Open-Source-Bibliothek, können wir Athena von unseren Python-basierten Notebooks und Skripten aus abfragen. In den Kapiteln 4 und 5 werden wir tiefer in Athena, AWS Glue Data Catalog und PyAthena eintauchen.
Amazon Redshift ist ein vollständig verwalteter Cloud-Data-Warehouse-Service, mit dem wir komplexe analytische Abfragen für strukturierte Daten in Petabyte-Größenordnungen durchführen können. Dabei werden unsere Abfragen über mehrere Knoten verteilt und parallelisiert. Im Gegensatz zu relationalen Datenbanken, die dafür optimiert sind, Daten in Zeilen zu speichern und hauptsächlich transaktionale Anwendungen zu bedienen, bietet Amazon Redshift eine spaltenbasierte Datenspeicherung, die für analytische Anwendungen optimiert ist, bei denen wir hauptsächlich an den zusammenfassenden Statistiken jener Spalten interessiert sind.
Amazon Redshift umfasst auch Amazon Redshift Spectrum, mit dem wir SQL-Abfragen von Amazon Redshift auf Exabytes an unstrukturierten Daten in unserem Amazon S3 Data Lake direkt ausführen können, ohne die Daten physisch verschieben zu müssen. Amazon Redshift Spectrum skaliert die benötigten Rechenressourcen automatisch auf der Grundlage der empfangenen Datenmenge, sodass Abfragen (engl. Queries) an Amazon S3 unabhängig von der Größe unserer Daten schnell ausgeführt werden.
Wenn wir Dashboard-artige Visualisierungen unserer Daten benötigen, können wir Amazon QuickSight nutzen. QuickSight ist ein benutzerfreundlicher, serverloser Geschäftsanalysedienst, mit dem wir schnell leistungsstarke Visualisierungen erstellen können. Wir können interaktive Dashboards und Berichte erstellen und sie sicher mit unseren Mitarbeitenden über Browser oder mobile Geräte teilen. QuickSight verfügt bereits über eine umfangreiche Bibliothek, die zahlreiche Funktionen zur Erstellung von Visualisierungen, Diagrammen und Tabellen bereithält.
QuickSight bietet zusätzlich Funktionen für maschinelles Lernen und für die Verarbeitung natürlicher Sprache, damit wir tiefergehende Erkenntnisse aus unseren Daten gewinnen können. Mit ML Insights können wir Trends und Ausreißer in unseren Daten entdecken, die sonst nicht direkt ersichtlich wären. Mithilfe dieses Tools kann jeder Was-wäre-wenn-Analysen und Prognosen durchführen, ohne dass er zwingend Erfahrung mit Machine Learning haben muss. Überdies können wir auch Prognose-Dashboards erstellen, indem wir QuickSight mit unseren in Amazon SageMaker erstellten Machine-Learning-Modellen verbinden.
Um qualitativ hochwertige Modelle entwickeln zu können, sind wir auf qualitativ hochwertige Daten angewiesen. Bevor wir unseren Trainingsdatensatz erstellen, müssen wir sicherstellen, dass unsere Daten bestimmte Qualitätsanforderungen erfüllen. Bei der Softwareentwicklung führen wir sogenannte Unit-Tests durch, um sicherzustellen, dass unser Code den Design- und Qualitätsstandards entspricht und sich wie erwartet verhält. In ähnlicher Weise können wir Unit-Tests für unseren Datensatz durchführen, um sicherzustellen, dass die Daten unseren Qualitätsanforderungen entsprechen.
AWS Deequ (https://oreil.ly/a6cVE) ist eine Open-Source-Bibliothek, die auf Apache Spark aufbaut und mit der wir Unit-Tests für Daten definieren und die Datenqualität in großen Datensätzen erfassen können. Mithilfe der Unit-Tests können wir Anomalien und Fehler frühzeitig finden, bevor die Daten zum Trainieren von Modellen verwendet werden. Deequ ist für die Arbeit mit sehr großen Datensätzen (Milliarden von Zeilen) ausgelegt. Die Open-Source-Bibliothek unterstützt tabellarische Daten, d.h. CSV-Dateien, Datenbanktabellen, Logdateien oder vereinfachte (flattened) JSON-Dateien. Alle Daten, die in einen Spark-DataFrame passen, können auch mit Deequ validiert werden.
In einem späteren Beispiel werden wir AWS Deequ dafür nutzen, die Datenqualität unseres Beispieldatensatzes zu überprüfen. Da wir unsere Deequ-Unit-Tests möglichst in großem Maßstab durchführen möchten, profitieren wir davon, dass SageMaker Processing Jobs Apache Spark unterstützt. Im Rahmen dieses Setups sind wir nicht dazu gezwungen, selbst ein Apache-Spark-Cluster bereitzustellen – SageMaker Processing erledigt diese schwierige Aufgabe für uns. Wir haben es quasi mit »serverlosem« Apache Spark zu tun. Sobald wir die Hochwertigkeit unserer Daten bestätigt sehen, können wir unseren Trainingsdatensatz erstellen.
In vielen datenwissenschaftlichen Projekten wird überwachtes Lernen (engl. Supervised Learning) eingesetzt. Beim Supervised Learning lernen unsere Modelle anhand von Beispielen. Zunächst müssen wir diese Beispiele sammeln und bewerten. Anschließend stellen wir die korrekten Labels bzw. Annotationen bereit, d.h., wir kennzeichnen, welcher Kategorie die jeweiligen Beispiele angehören. Wenn die bereitgestellten Labels nicht korrekt sind, lernt unser Machine-Learning-Modell auf Basis fehlerhafter Beispiele, was letztendlich zu ungenauen Vorhersagen führt. SageMaker Ground Truth hilft uns dabei, in Amazon S3 gespeicherte Daten effizient und akkurat zu labeln, wobei die Daten sowohl automatisch als auch von Menschenhand gelabelt werden.
Für gängige Aufgaben im Zusammenhang mit dem Labeln von Daten bietet SageMaker Ground Truth vorgefertigte Workflows und Schnittstellen. Wir legen die Labeling-Aufgabe fest und weisen den Labeling-Auftrag entweder externen (über Amazon Mechanical Turk) oder internen Arbeitskräften zu, z.B. unseren Mitarbeitenden. Ebenso können wir auch auf Drittanbieter in Form von Labeling-Dienstleistern zurückgreifen, die im AWS Marketplace aufgeführt sind und von Amazon vorab geprüft werden.
SageMaker Ground Truth sieht die Nutzung von Active-Learning-Techniken vor, die im Rahmen bereits vorgegebener Workflows verwendet werden können. Basierend auf den von den Anwenderinnen und Anwendern bzw. Mitarbeitenden vergebenen Labels, erstellt es ein Modell zur automatischen Klassifizierung einer Teilmenge der Daten. Da das Modell kontinuierlich von den gelabelten Daten der Anwender lernt, verbessert sich die Genauigkeit, und es müssen weniger Daten an die Anwender gesendet werden. Im Laufe der Zeit und bei ausreichender Datenmenge ist das Active-Learning-Modell von SageMaker Ground Truth in der Lage, qualitativ hochwertige und automatische Annotationen zu liefern, die insgesamt zu geringeren Kosten für das Labeln von Daten führen. Einen ausführlicheren Einblick in SageMaker Ground Truth erhalten Sie in Kapitel 10.
Lassen Sie uns nun zum Thema Datentransformation übergehen. Wir gehen davon aus, dass wir unsere Daten in einem S3 Data Lake bzw. S3-Bucket haben. Außerdem haben wir durch die Datenanalyse eine grundlegende Vorstellung von unserem Datensatz gewonnen. Der nächste Schritt besteht nun darin, unsere Daten für das Modelltraining vorzubereiten.
Denkbare Datentransformationen könnten das Löschen oder Kombinieren von Daten in unserem Datensatz sein. Möglicherweise müssen wir Textdaten in Worteinbettungen (engl. Word Embeddings) konvertieren, um sie in Modellen, die auf natürlicher Sprache basieren, zu verwenden. Oder wir müssen Daten in ein anderes Format konvertieren, beispielsweise von einer numerischen in eine Textdarstellung oder umgekehrt. Es gibt zahlreiche AWS-Services, die uns dabei helfen können.