Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Verteiltes Rechnen ist ein faszinierendes Thema. Wenn man auf die Anfänge der Computertechnik zurückblickt, ist man beeindruckt von der Tatsache, dass so viele Unternehmen heute ihre Arbeitslasten auf Cluster von Computern verteilen. Es ist beeindruckend, dass wir effiziente Wege gefunden haben, dies zu tun, aber die Skalierung wird auch immer mehr zu einer Notwendigkeit. Einzelne Computer werden immer schneller, und dennoch übersteigt unser Bedarf an groß angelegtem Rechnen immer mehr, als einzelne Maschinen leisten können.
Ray hat erkannt, dass Skalierung sowohl eine Notwendigkeit als auch eine Herausforderung ist, und zielt darauf ab, verteiltes Rechnen für Entwickler/innen einfach zu machen. Es macht verteiltes Rechnen auch für Nicht-Expert/innen zugänglich und ermöglicht es, deine Python-Skripte relativ einfach über mehrere Knoten zu skalieren. Ray eignet sich sowohl für die Skalierung von daten- als auch rechenintensiven Workloads, z. B. für die Datenvorverarbeitung und das Modelltraining, und zielt explizit auf Machine Learning (ML) Workloads ab, die skaliert werden müssen. Obwohl es heute möglich ist, diese beiden Arten von Workloads ohne Ray zu skalieren, müsstest du wahrscheinlich für jede Art von Workload unterschiedliche APIs und verteilte Systeme verwenden. Und die Verwaltung mehrerer verteilter Systeme kann in vielerlei Hinsicht unübersichtlich und ineffizient sein.
Mit der Veröffentlichung von Ray 2.0 im August 2022 wurde die Unterstützung für komplexe ML-Workloads in Ray durch die Ray AI Runtime (AIR) noch weiter verbessert. AIR ist eine Sammlung von Bibliotheken und Werkzeugen, die es einfach machen, End-to-End ML-Anwendungen in einem einzigen verteilten System zu erstellen und einzusetzen. Mit AIR können selbst die komplexesten Workflows in der Regel als ein einziges Python-Skript ausgedrückt werden. Das bedeutet, dass du deine Programme zunächst lokal ausführen kannst, was einen großen Unterschied in Bezug auf Debugging und Entwicklungsgeschwindigkeit machen kann.
Datenwissenschaftler profitieren von Ray, weil sie sich auf ein wachsendes Ökosystem von Ray ML-Bibliotheken und Integrationen von Drittanbietern verlassen können. Ray AIR hilft dir, Ideen schnell zu prototypisieren und leichter von der Entwicklung in die Produktion überzugehen. Im Gegensatz zu vielen anderen verteilten Systemen bietet Ray auch native Unterstützung für GPUs, was für Rollen wie ML-Ingenieure besonders wichtig sein kann. Zur Unterstützung von Dateningenieuren bietet Ray außerdem enge Integrationen mit Tools wie Kubernetes und kann in Multi-Cloud-Konfigurationen eingesetzt werden. Außerdem kannst du Ray als einheitliche Rechenschicht nutzen, um Skalierung, Fehlertoleranz, Zeitplanung und Orchestrierung deiner Workloads zu gewährleisten. Mit anderen Worten: Es lohnt sich, in Ray zu investieren, um eine Vielzahl von Aufgaben zu übernehmen.
Wer sollte dieses Buch lesen?
Wahrscheinlich hast du dieses Buch in die Hand genommen, weil du dich für einige Aspekte von Ray interessierst. Vielleicht bist du ein Ingenieur für verteilte Systeme, der wissen möchte, wie die Ray-Engine funktioniert. Vielleicht bist du auch ein Softwareentwickler, der eine neue Technologie kennenlernen möchte. Oder du bist ein Dateningenieur, der herausfinden möchte, wie Ray im Vergleich zu ähnlichen Tools abschneidet. Du könntest auch ein Praktiker für maschinelles Lernen oder ein Datenwissenschaftler sein, der Wege finden muss, Experimente zu skalieren.
Unabhängig davon, welche Rolle du konkret spielst, ist der gemeinsame Nenner, um das meiste aus diesem Buch herauszuholen, dass du dich mit der Programmierung in Python wohlfühlst. Die Beispiele in diesem Buch sind in Python geschrieben, und du solltest über fortgeschrittene Kenntnisse der Sprache verfügen. Explizit ist besser als implizit, wie du als Pythonista ganz genau weißt. Um es also explizit zu sagen: Wenn du Python kennst, bedeutet das für mich, dass du weißt, wie du die Kommandozeile auf deinem System verwendest, wie du Hilfe bekommst, wenn du nicht weiterkommst, und wie du dir selbst eine Programmierumgebung einrichten kannst.
Wenn du noch nie mit verteilten Systemen gearbeitet hast, ist das kein Problem. Wir behandeln in diesem Buch alle Grundlagen, die du für den Einstieg brauchst. Außerdem kannst du die meisten der hier vorgestellten Code-Beispiele auf deinem Laptop ausführen. Da wir die Grundlagen behandeln, können wir nicht zu sehr ins Detail gehen. Dieses Buch richtet sich an Anwendungsentwickler, die Ray speziell für Data Science und ML einsetzen.
Für die späteren Kapitel dieses Buches brauchst du eine gewisse Vertrautheit mit ML, aber wir erwarten nicht, dass du in diesem Bereich gearbeitet hast. Insbesondere solltest du ein grundlegendes Verständnis des ML-Paradigmas haben und wissen, wie es sich von der traditionellen Programmierung unterscheidet. Du solltest auch die Grundlagen der Verwendung von NumPy und Pandas kennen. Außerdem solltest du zumindest in der Lage sein, Beispiele mit den beliebten Bibliotheken TensorFlow und PyTorch zu lesen. Es reicht aus, wenn du dem Codefluss auf API-Ebene folgen kannst, aber du musst nicht wissen, wie du deine eigenen Modelle schreibst. Wir behandeln Beispiele mit den beiden dominierenden Deep-Learning-Bibliotheken (TensorFlow und PyTorch), um zu veranschaulichen, wie du Ray für ML-Workloads nutzen kannst, unabhängig von deinem bevorzugten Framework.
Wir behandeln viele fortgeschrittene ML-Themen, aber das Hauptaugenmerk liegt auf Ray als Technologie und wie man sie einsetzt. Die ML-Beispiele, die wir besprechen, könnten für dich neu sein und ein zweites Lesen erfordern, aber du kannst dich trotzdem auf die API von Ray und ihre praktische Anwendung konzentrieren. Wenn du die Anforderungen kennst, kannst du folgendes aus diesem Buch mitnehmen:
-
Wenn du Datenwissenschaftler/in bist, wird Ray dir neue Wege eröffnen, über verteilte ML-Anwendungen nachzudenken und sie zu entwickeln. Du wirst wissen, wie du Hyperparameter für deine Experimente im großen Maßstab auswählst, praktische Kenntnisse über das Training von Modellen im großen Maßstab erlangen und eine hochmoderne Reinforcement-Learning-Bibliothek kennenlernen.
-
Wenn du ein Dateningenieur bist, wirst du lernen, wie du Ray-Datensätze für das Ingesting großer Datenmengen verwendest, wie du deine Pipelines durch den Einsatz von Tools wie Dask auf Ray verbesserst und wie du Modelle in großem Maßstab effektiv einsetzt.
-
Wenn du ein Ingenieur bist, wirst du verstehen, wie Ray unter der Haube funktioniert, wie du Ray-Cluster in der Cloud betreiben und skalieren kannst und wie Ray genutzt werden kann, um Anwendungen zu erstellen, die sich in bekannte Projekte integrieren lassen.
All diese Themen kannst du natürlich unabhängig von deiner Rolle lernen. Wir hoffen, dass du am Ende dieses Buches Ray mit all seinen Stärken schätzen gelernt hast.
Ziele dieses Buches
Dieses Buch wurde in erster Linie für Leserinnen und Leser geschrieben, die neu in Ray sind und schnell das Beste daraus machen wollen. Wir haben das Material so ausgewählt, dass du die Kernideen hinter Ray verstehst und lernst, seine wichtigsten Bausteine zu nutzen. Nach der Lektüre wirst du dich in komplexeren Themen, die über diese Einführung hinausgehen, selbständig zurechtfinden.
Wir sollten uns auch darüber im Klaren sein, was dieses Buch nicht ist. Es ist nicht darauf ausgelegt, dir so viele Informationen wie möglich zu geben, wie API-Referenzen oder endgültige Leitfäden. Es ist auch nicht darauf ausgelegt, dir bei der Bewältigung konkreter Aufgaben zu helfen, wie es bei Anleitungen oder Kochbüchern der Fall ist. Dieses Buch konzentriert sich darauf, Ray zu lernen und zu verstehen, und gibt dir interessante Beispiele, mit denen du beginnen kannst.
Software wird schnell weiterentwickelt und veraltet, aber die grundlegenden Konzepte, die der Software zugrunde liegen, bleiben oft auch über größere Release-Zyklen hinweg stabil. Wir versuchen hier, ein Gleichgewicht zwischen der Vermittlung von Ideen und der Bereitstellung konkreter Code-Beispiele zu finden. Die Ideen, die du in diesem Buch findest, bleiben im Idealfall auch dann noch nützlich, wenn der Code irgendwann aktualisiert werden muss.
Auch wenn die Dokumentation von Ray immer besser wird, glauben wir, dass Bücher Qualitäten bieten können, die in der Projektdokumentation nur schwer zu finden sind. Wenn du diese Zeilen liest, ist uns klar, dass wir mit dieser Aussage vielleicht offene Türen einrennen. Aber einige der besten technischen Bücher, die wir kennen, wecken das Interesse an einem Projekt und machen Lust darauf, sich durch knappe API-Referenzen zu wühlen, die du sonst nie angefasst hättest. Wir hoffen, dass dies eines dieser Bücher ist.
Navigieren in diesem Buch
Wir haben dieses Buch so gestaltet, dass es dich auf natürliche Weise von den Kernkonzepten zu den anspruchsvolleren Themen von Ray führt. Viele der erklärten Ideen werden mit Beispielcode erläutert, den du im GitHub-Repository des Buches findest.
In den ersten drei Kapiteln des Buches werden die Grundlagen von Ray als verteiltes Python-Framework anhand von praktischen Beispielen vermittelt. In den Kapiteln 4 bis 10 werden die High-Level-Bibliotheken von Ray vorgestellt und es wird gezeigt, wie man mit ihnen Anwendungen erstellt. Das letzte Kapitel gibt dir einen abschließenden Überblick über das Ökosystem von Ray und zeigt dir, wohin du als Nächstes gehen kannst. Hier ist, was du von jedem Kapitel erwarten kannst:
- Kapitel 1, "Ein Überblick über Ray"
-
In diesem Kapitel lernst du Ray als ein System kennen, das aus drei Schichten besteht: dem Kern, den ML-Bibliotheken und dem Ökosystem. In diesem Kapitel führst du deine ersten Beispiele mit den Ray-Bibliotheken aus, um dir einen Eindruck davon zu verschaffen, was du mit Ray machen kannst.
- Kapitel 2, "Erste Schritte mit Ray Core"
-
Hier erfährst du alles über die Grundlagen des Ray-Projekts, insbesondere über die Kern-API. Außerdem wird erläutert, wie sich die Ray-Aufgaben und -Akteure auf natürliche Weise aus den Python-Funktionen und -Klassen entwickeln. Außerdem lernst du die Systemkomponenten von Ray kennen und wie sie zusammenarbeiten.
- Kapitel 3, "Deine erste verteilte Anwendung erstellen"
-
Der Kurs führt dich durch die Implementierung einer verteilten Reinforcement-Learning-Anwendung mit Ray Core. Du wirst diese Anwendung von Grund auf implementieren und die Flexibilität von Ray bei der Verteilung deines Python-Codes in Aktion erleben.
- Kapitel 4, "Reinforcement Learning mit Ray RLlib"
-
Dieser Kurs gibt dir eine kurze Einführung in das Reinforcement Learning und zeigt dir, wie Ray wichtige Konzepte in RLlib implementiert. Nachdem wir gemeinsam einige Beispiele gebaut haben, werden wir uns auch mit fortgeschritteneren Themen wie Curriculum Learning oder der Arbeit mit Offline-Daten beschäftigen.
- Kapitel 5, "Hyperparameter-Optimierungmit Ray Tune"
-
Hier erfährst du, warum die effiziente Abstimmung von Hyperparametern schwierig ist, wie Ray Tune konzeptionell funktioniert und wie du es in der Praxis für deine Machine-Learning-Projekte einsetzen kannst.
- Kapitel 6, "Datenverarbeitung mit Ray"
-
In diesem Kurs lernst du die Ray-Datasets-Abstraktion von Ray kennen und erfährst, wie sie sich in die Landschaft anderer Datenverarbeitungssysteme einfügt. Du lernst auch, wie du mit Integrationen von Drittanbietern wie Dask auf Ray arbeiten kannst.
- Kapitel 7, "Verteiltes Training mit Ray Train"
-
Dieser Kurs vermittelt dir die Grundlagen des verteilten Modelltrainings und zeigt dir, wie du Ray Train mit ML-Frameworks wie PyTorch verwenden kannst. Außerdem zeigen wir dir, wie du deinen Modellen benutzerdefinierte Präprozessoren hinzufügst, wie du das Training mit Callbacks überwachst und wie du die Hyperparameter deiner Modelle mit Tune abstimmst.
- Kapitel 8, "Online-Inferenz mit Ray Serve"
-
In diesem Kurs lernst du, wie du deine trainierten ML-Modelle als API-Endpunkte bereitstellst, die von überall aus abgefragt werden können. Wir erläutern, wie Ray Serve die Herausforderungen der Online-Inferenz angeht, beschreiben seine Architektur und zeigen dir, wie du es in der Praxis einsetzen kannst.
- Kapitel 9, "Strahlencluster"
-
Hier erfährst du, wie du Ray-Cluster für deine Anwendungen konfigurierst, startest und skalierst. Du lernst Rays Cluster Launcher CLI und Autoscaler kennen und erfährst, wie du Cluster in der Cloud einrichtest. Außerdem zeigen wir dir, wie du Ray in Kubernetes und mit anderen Cluster-Managern einsetzen kannst.
- Kapitel 10, "Erste Schritte mit der Ray AI Runtime"
-
Wir stellen dir Ray AIR vor, ein einheitliches Toolkit für deine ML-Workloads, das viele Drittanbieter-Integrationen für das Modelltraining oder den Zugriff auf benutzerdefinierteDatenquellen bietet.
- Kapitel 11, "Rays Ökosystem und mehr"
-
Hier bekommst du einen Überblick über die vielen interessanten Erweiterungen und Integrationen, die Ray im Laufe der Jahre angezogen hat.
Wie man die Codebeispiele verwendet
Den gesamten Code für dieses Buch findest du im GitHub-Repository. Im GitHub-Repository findest du einen Notebook-Ordner mit Notebooks für jedes Kapitel. Wir haben die Beispiele so aufgebaut, dass du entweder beim Lesen mitschreiben oder dem Haupttext folgen und den Code von GitHub zu einem anderen Zeitpunkt ausführen kannst. Du hast die Wahl.
Für die Beispiele gehen wir davon aus, dass du Python 3.7 oder höher installiert hast. Zum Zeitpunkt der Erstellung dieses Buches ist die Unterstützung von Python 3.10 für Ray noch experimentell, daher können wir derzeit nur eine Python-Version empfehlen, die nicht älter als 3.9 ist. Alle Code-Beispiele setzen voraus, dass du Ray installiert hast, und jedes Kapitel bringt seine eigenen spezifischen Anforderungen mit sich. Die Beispiele wurden mit der Ray-Version 2.2.0 getestet, und wir empfehlen, dass du diese Version für das gesamte Buch verwendest.
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
-
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
-
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Constant width bold
-
Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
- <Text in spitzen Klammern>
-
Sollte durch vom Benutzer eingegebene Werte oder durch vom Kontext bestimmte Werte ersetzt werden.
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/learning_ray_repo zum Download bereit .
Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, sende bitte eine E-Mail an bookquestions@oreilly.com.
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. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. 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 Genehmigung erforderlich.
Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel:"Learning Ray" von Max Pumperla, Edward Oakes und Richard Liaw (O'Reilly). Copyright 2023 Max Pumperla und O'Reilly Media, Inc. 978-1-098-11722-1."
Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen 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
Hinweis
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 http://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/learning-ray 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
Wir möchten dem gesamten Team von O'Reilly dafür danken, dass es uns geholfen hat, dieses Buch zu erstellen. Insbesondere danken wir unserem unermüdlichen Redakteur Jeff Bleiel für seine unschätzbaren Beiträge und sein Feedback. Vielen Dank an Jess Haberman für viele fruchtbare Diskussionen und seine Aufgeschlossenheit in der Anfangsphase des Prozesses. Wir möchten auch Katherine Tozer, Chelsea Foster und Cassandra Furtado und vielen anderen bei O'Reilly danken.
Vielen Dank an alle Rezensenten für ihr wertvolles Feedback und ihre Vorschläge: Mark Saroufim, Kevin Ferguson, Adam Breindel und Jorge Davila-Chacon. Wir möchten uns auch bei den vielen Kollegen von Anyscale bedanken, die uns in irgendeiner Form bei diesem Buch geholfen haben, darunter Sven Mika, Stephanie Wang, Antoni Baum, Christy Bergman, Dmitri Gekhtman, Zhe Zhang und viele andere.
Außerdem möchten wir dem Team von Ray und der Community für ihre Unterstützung und ihr Feedback danken sowie den vielen wichtigen Stakeholdern bei Anyscale, die dieses Projekt unterstützen.
Ich (Max) möchte mich auch beim Team von Pathmind für die Unterstützung in den frühen Phasen des Projekts bedanken, insbesondere bei Chris Nicholson, der mir über die Jahre mehr geholfen hat, als ich hier beschreiben kann. Ein besonderer Dank geht an die Espresso Society in Winterhude, die mir geholfen hat, Kaffee in Bücher zu verwandeln, und an eine wachsende Zahl von GPT-3-basierten Tools, die mir geholfen haben, halbe Sätze zu beenden, wenn das Koffein nachgelassen hat. Ich möchte mich auch bei meiner Familie für ihre Ermutigung und Geduld bedanken. Wie immer wäre das alles nicht möglich gewesen ohne Anne, die mich immer unterstützt, wenn es darauf ankommt - selbst wenn ich mir zu viele Projekte wie dieses vornehme.
Get Lernstrahl 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.