Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Willkommen bei Scaling Machine Learning with Spark: Distributed ML with MLlib, TensorFlow, and PyTorch. Dieses Buch soll dich auf deiner Reise begleiten, wenn du mehr über Systeme für maschinelles Lernen (ML) lernst. Apache Spark ist derzeit das beliebteste Framework für die Verarbeitung großer Datenmengen. Es verfügt über zahlreiche APIs, die in Python, Java und Scala implementiert sind, und wird von vielen namhaften Unternehmen wie Netflix, Microsoft und Apple eingesetzt. PyTorch und TensorFlow gehören zu den beliebtesten Frameworks für maschinelles Lernen. Durch die Kombination dieser Tools, die bereits heute in vielen Unternehmen eingesetzt werden, kannst du ihre Stärken voll ausschöpfen.
Bevor wir aber anfangen, fragst du dich vielleicht, warum ich mich entschieden habe, dieses Buch zu schreiben. Gute Frage. Dafür gibt es zwei Gründe. Der erste ist, dass ich das Ökosystem und die Gemeinschaft des maschinellen Lernens unterstützen möchte, indem ich mein Wissen, meine Erfahrung und mein Fachwissen, das ich in den letzten zehn Jahren als Forscher von Algorithmen für das maschinelle Lernen gesammelt habe, mit anderen teile und Algorithmen für große Datenmengen entwickle und implementiere. Den größten Teil meiner Karriere habe ich als Dateninfrastruktur-Ingenieurin verbracht, wo ich die Infrastruktur für umfangreiche Analysen mit allen möglichen Formatierungen, Typen, Schemata usw. aufgebaut und das Wissen von Kunden, Community-Mitgliedern und Kollegen integriert habe, die ihre Erfahrungen beim Brainstorming und der Entwicklung von Lösungen geteilt haben. Unsere Branche kann dieses Wissen nutzen, um sich selbst schneller voranzubringen, indem sie das Fachwissen anderer nutzt. Auch wenn nicht alle Inhalte dieses Buches für jeden anwendbar sind, so eröffnen sie doch viele neue Ansätze für eine Vielzahl von Praktikern.
Das bringt mich zu meinem zweiten Grund, dieses Buch zu schreiben: Ich möchte einen ganzheitlichen Ansatz für den Aufbau von skalierbaren End-to-End-Lösungen für maschinelles Lernen bieten, der über den traditionellen Ansatz hinausgeht. Heutzutage werden viele Lösungen an die spezifischen Anforderungen des Unternehmens und die jeweiligen Geschäftsziele angepasst. Das wird wahrscheinlich auch in den kommenden Jahren die Norm sein. In diesem Buch möchte ich den Status quo in Frage stellen und zu kreativeren Lösungen anregen. Gleichzeitig erkläre ich die Vor- und Nachteile verschiedener Ansätze und Werkzeuge, damit du die in deinem Unternehmen verwendeten Werkzeuge nutzen und das Beste aus allen Welten herausholen kannst. Mein übergeordnetes Ziel ist es, die Zusammenarbeit und das gegenseitige Verständnis von Daten- und Machine-Learning-Experten zu vereinfachen.
Wer sollte dieses Buch lesen?
Dieses Buch richtet sich an Praktiker des maschinellen Lernens mit Branchenerfahrung, die die MLlib von Apache Spark kennenlernen und ihr Verständnis für das Gesamtsystem und den Ablauf verbessern möchten. Es ist vor allem für Data Scientists und Machine-Learning-Ingenieure relevant, aber auch MLOps-Ingenieure, Softwareentwickler und alle, die verteilte Machine-Learning-Modelle und Pipelines mit MLlib, verteiltem PyTorch und TensorFlow kennenlernen oder erstellen möchten, werden davon profitieren. Auch Technologen, die die grundlegenden Konzepte des maschinellen Lernens verstehen und in die technische Seite eintauchen wollen, werden das Buch interessant und zugänglich finden.
Brauchst du verteiltes maschinelles Lernen?
Wie bei jeder guten Sache kommt es darauf an. Wenn du kleine Datensätze hast, die in den Speicher deines Rechners passen, lautet die Antwort nein. Wenn du irgendwann deinen Code skalieren und sicherstellen musst, dass du ein Modell auf einem größeren Datensatz trainieren kannst, der nicht in den Speicher eines einzelnen Rechners passt, dann ja.
Oft ist es besser, über den gesamten Lebenszyklus der Softwareentwicklung hinweg dieselben Tools zu verwenden, von der lokalen Entwicklungsumgebung bis hin zu Staging und Produktion. Bedenke aber, dass dies auch andere Komplexitäten bei der Verwaltung eines verteilten Systems mit sich bringt, die normalerweise von einem anderen Team in deinem Unternehmen erledigt werden. Es ist eine gute Idee, eine gemeinsame Sprache zu haben, um mit deinen Kollegen zusammenzuarbeiten.
Eine der größten Herausforderungen bei der Erstellung von Machine-Learning-Modellen ist es, sie von der lokalen Entwicklung in die Produktion zu überführen. Viele von uns sündigen mit Spaghetti-Code, der eigentlich reproduzierbar sein sollte, es aber oft nicht ist und schwer zu warten und zu bearbeiten ist. Ich werde dieses Thema im Rahmen der Diskussion über das Management des Lebenszyklus von Experimenten ansprechen.
Was nicht abgedeckt ist
Es gibt viele Möglichkeiten, verteiltes maschinelles Lernen zu betreiben. Bei einigen werden mehrere Experimente parallel mit mehreren Hyperparametern auf Daten durchgeführt, die in den Speicher geladen wurden. Vielleicht kannst du den Datensatz in den Speicher einer einzigen Maschine laden, vielleicht ist er aber auch so groß, dass er auf mehrere Maschinen aufgeteilt werden muss. Wir werden kurz auf die Gittersuche eingehen, eine Technik, mit der du die optimalen Werte für einen Satz von Hyperparametern finden kannst, aber dieses Buch wird nur so weit reichen.
Die folgenden Themen werden in diesem Buch nicht behandelt:
- Eine Einführung in Algorithmen des maschinellen Lernens
- Es gibt viele wunderbare Bücher, die sich eingehend mit den verschiedenen Algorithmen des maschinellen Lernens und ihren Einsatzmöglichkeiten befassen, und dieses Buch wird sie nicht wiederholen.
- Bereitstellung von Modellen auf mobilen oder eingebetteten Geräten
- Dazu ist es oft notwendig, mit TinyML und speziellen Algorithmen zu arbeiten, um die Größe des endgültigen Modells (das anfangs aus einem großen Datensatz erstellt werden kann) zu verringern.
- TinyML
- TinyML ist darauf ausgerichtet, relativ kleine Modelle für maschinelles Lernen zu erstellen, die auf ressourcenbeschränkten Geräten laufen können. Wenn du mehr über dieses Thema erfahren möchtest, schau dir TinyML von Peter Warden und Daniel Situnayake (O'Reilly) an.
- Online-Lernen
- Online-Lernen wird eingesetzt, wenn die Daten in Abhängigkeit von der Zeit erzeugt werden oder wenn sich der Algorithmus für maschinelles Lernen dynamisch an neue Muster in den Daten anpassen muss. Es wird auch eingesetzt, wenn das Training über den gesamten Datensatz rechnerisch nicht machbar ist und Out-of-Core-Algorithmen benötigt werden. Dies ist eine grundlegend andere Herangehensweise an das maschinelle Lernen mit speziellen Anwendungen, die in diesem Buch nicht behandelt wird.
- Parallele Experimente
- Während die in diesem Buch besprochenen Tools wie PyTorch und TensorFlow es uns ermöglichen, parallele Experimente durchzuführen, wird sich dieses Buch ausschließlich auf paralleles Datentraining konzentrieren, bei dem die Logik dieselbe bleibt und jede Maschine einen anderen Teil der Daten verarbeitet.
Diese Liste ist nicht erschöpfend - da alle Wege auf die eine oder andere Weise zum Vertrieb führen, könnte es sein, dass ich einige Themen vergessen habe oder dass sich seit dem Zeitpunkt, an dem ich sie geschrieben habe, neue Themen in der Branche etabliert haben. Wie bereits erwähnt, möchte ich mit meiner Erfahrung und meinem Wissen im Bereich des maschinellen Lernens meine Sichtweise weitergeben und anderen einen ganzheitlichen Ansatz für ihre eigenen Bemühungen vermitteln. Ich möchte so viele wichtige Punkte wie möglich abdecken, um eine Grundlage zu schaffen, und ich möchte dich ermutigen, dein Verständnis der hier behandelten Themen zu vertiefen.
Das Umfeld und die Werkzeuge
Nachdem du nun weißt, welche Themen behandelt werden (und welche nicht), ist es an der Zeit, deine Lernumgebung einzurichten. Du wirst verschiedene Plattformen und Bibliotheken nutzen, um eine Pipeline für maschinelles Lernen zu entwickeln, während du die Übungen in diesem Buch durcharbeitest.
Die Werkzeuge
In diesem Abschnitt werden kurz die Werkzeuge vorgestellt, die wir für die Erstellung der in diesem Buch besprochenen Lösungen verwenden werden. Wenn du mit ihnen nicht vertraut bist, solltest du dir ihre Dokumentation ansehen, bevor du loslegst. Um die Codebeispiele in diesem Buch auf deinem eigenen Rechner zu implementieren, musst du die folgenden Tools lokal installiert haben:
- Apache Spark
- Eine universell einsetzbare, groß angelegte Analyse-Engine für die Datenverarbeitung.
- PySpark
- Eine Schnittstelle für Apache Spark in Python.
- PyTorch
- Ein von Facebook entwickeltes Framework für maschinelles Lernen, das auf der Torch-Bibliothek basiert und für Anwendungen in den Bereichen Computer Vision und Verarbeitung natürlicher Sprache verwendet wird. Wir werden seine verteilten Trainingsmöglichkeiten nutzen.
- TensorFlow
- Eine von Google entwickelte Plattform für Machine Learning Pipelines. Wir werden ihre verteilten Trainingsfunktionen nutzen.
- MLflow
- Eine offene Source-Plattform für die Verwaltung des Lebenszyklus des maschinellen Lernens. Wir werden sie für die Verwaltung der Experimente in diesem Buch nutzen.
- Petastorm
- Eine Bibliothek, die verteiltes Training und Evaluierung von Deep Learning-Modellen mit Datensätzen im Apache Parquet-Format ermöglicht. Petastorm unterstützt Machine-Learning-Frameworks wie TensorFlow und PyTorch. Wir werden es als Brücke zwischen Spark und einem Deep-Learning-Cluster nutzen.
- Horovod
- Ein verteiltes Trainingsframework für TensorFlow, Keras, PyTorch und Apache MXNet. Dieses Projekt zielt darauf ab, Entwickler bei der Skalierung eines Trainingsskripts für eine einzelne GPU zu unterstützen, damit es auf vielen GPUs parallel trainieren kann. Wir werden es sowohl zur Optimierung von Arbeitslasten über mehrere GPUs als auch zur Koordinierung der verteilten Systeme eines Spark-Clusters und eines Deep-Learning-Clusters einsetzen, wofür ein spezielles Zeitplannungsprogramm benötigt wird, um die Cluster-Ressourcen zu verwalten und ihre Zusammenarbeit auf derselben Hardware zu ermöglichen.
- NumPy
- Eine Python Bibliothek für wissenschaftliches Rechnen, die eine effiziente Ausführung verschiedener Arten von Operationen auf Arrays ermöglicht (mathematisch, logisch, Formmanipulation, Sortierung, Auswahl, E/A und mehr). Wir werden sie für verschiedene statistische und mathematische Operationen verwenden, die auf einer einzigen Maschine durchgeführt werden können.
- PIL
- Die Python Imaging Library, auch bekannt als Pillow. Wir werden sie für die Arbeit mit Bildern verwenden.
Im heutigen Ökosystem tauchen jeden Tag neue Tools im Bereich des maschinellen Lernens und der verteilten Daten auf. Die Geschichte hat uns gelehrt, dass einige von ihnen Bestand haben werden und andere nicht. Halte ein Auge auf die Tools, die bereits in deinem Betrieb eingesetzt werden, und versuche, ihre Möglichkeiten auszuschöpfen, bevor du neue einführst.
Die Datensätze
In den Beispielen dieses Buches werden wir vorhandene Datensätze nutzen, wo es sinnvoll ist, und eigene Datensätze erstellen, wenn es nötig ist, um die Botschaft besser zu vermitteln. Die hier aufgelisteten Datensätze, die alle auf Kaggle verfügbar sind, werden im gesamten Buch verwendet und sind im zugehörigen GitHub-Repository enthalten:
- Caltech 256-Datensatz
- Caltech 256 ist eine Erweiterung des Caltech 101-Datensatzes, der Bilder von Objekten in 101 Kategorien enthält. Der Caltech 256-Datensatz enthält 30.607 Bilder von Objekten aus 257 Kategorien. Die Kategorien sind extrem vielfältig und reichen von Tennisschuhen bis zu Zebras. Es gibt Bilder mit und ohne Hintergrund und in horizontaler und vertikaler Ausrichtung. Die meisten Kategorien haben etwa 100 Bilder, aber einige haben bis zu 800.
- DatensatzCO2-Emissionen nach Fahrzeugen
- Der DatensatzCO2-Emissionen nach Fahrzeugen basiert auf den Daten von sieben Jahren überCO2-Emissionen von Fahrzeugen von der Open-Data-Website der kanadischen Regierung. Es gibt 7.385 Zeilen und 12 Spalten (Marke, Modell, Getriebe, etc. sowieCO2-Emissionen und verschiedene Kraftstoffverbrauchswerte).
- Datensatz zur Klassifizierung von Zootieren
- Um über die in der MLlib-Bibliothek verfügbaren Statistikfunktionen zu informieren, verwenden wir den Datensatz "Klassifizierung von Zootieren". Er besteht aus 101 Tieren mit 16 booleschen Attributen, die sie beschreiben. Die Tiere können in sieben Typen eingeteilt werden: Säugetiere, Vögel, Reptilien, Fische, Amphibien, Käfer und wirbellose Tiere. Ich habe es ausgewählt, weil es Spaß macht und relativ einfach zu verstehen ist.
Wenn du die Tutorials auf deinem lokalen Rechner durcharbeitest, empfehle ich dir, die Beispieldatensätze aus dem GitHub-Repository des Buches zu verwenden.
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
- Weist auf neue Begriffe, URLs, Datei- und Verzeichnisnamen und Dateierweiterungen hin.
Constant width
- Wird für die Befehlszeileneingabe/-ausgabe und Codebeispiele sowie für Codeelemente verwendet, die im Text vorkommen, einschließlich Variablen- und Funktionsnamen, Klassen und Module.
Constant width italic
- Zeigt Text an, der in Codebeispielen und Befehlen durch vom Benutzer eingegebene Werte ersetzt wird.
Constant width bold
- Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
Tipp
Dieses Element steht für einen Tipp oder eine Anregung.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
Code-Beispiele verwenden
Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://oreil.ly/smls-git zum Download bereit .
Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Wenn du eine CD-ROM mit Beispielen aus den O'Reilly-Büchern verkaufst oder verteilst, ist eine Genehmigung erforderlich. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Erlaubnis erforderlich.
Wir freuen uns über eine Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Scaling Machine Learning with Spark, von Adi Polak. Copyright 2023 by Adi Polak, 978-1-098-10682-9."
Wenn du der Meinung bist, dass deine Verwendung von Codebeispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
O'Reilly Online Learning
Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.
Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
-
O'Reilly Media, Inc.
-
1005 Gravenstein Highway Nord
-
Sebastopol, CA 95472
-
800-998-9938 (in den Vereinigten Staaten oder Kanada)
-
707-829-0515 (international oder lokal)
-
707-829-0104 (Fax)
Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/sml-spark aufrufen .
Schreib eine E-Mail an bookquestions@oreilly.com, um Kommentare oder technische Fragen zu diesem Buch zu stellen.
Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.
Du findest uns auf LinkedIn: https://linkedin.com/company/oreilly-media.
Folge uns auf Twitter: https://twitter.com/oreillymedia.
Sieh uns auf YouTube: https://youtube.com/oreillymedia.
Danksagungen
Ohne die Unterstützung der Spark-, Data-Engineering- und Machine-Learning-Community würde es dieses Buch nicht geben. Es braucht wirklich ein Dorf, um ein technisches Buch zum Leben zu erwecken, also vielen Dank für eure Hilfe!
Danke an alle frühen Leser und Rezensenten für ihre Hilfe und Ratschläge: Holden Karau, Amitai Stern, Andy Petrella, Joe Reis, Laura Uzcátegui, Noah Gift, Kyle Gallatin, Parviz Deyhim, Sean Owen, Chitra Agastya, Kyle Hamilton, Terry McCann, Joseph Kambourakis, Marc Ramirez Invernon, Bartosz Konieczny, Beegee Alop, und viele andere.
Alle verbleibenden Fehler gehen auf das Konto des Autors, manchmal auch gegen den Rat der Prüfer.
Zuletzt möchte ich meinem Lebenspartner dafür danken, dass er meine langen Nächte, die frühen Morgenstunden, die Feiertage und die Wochenenden zum Schreiben erträgt.
Get Skalierung von Machine Learning mit Spark now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.