Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Ich habe meine berufliche Laufbahn als Softwareentwickler begonnen. Im Laufe dieser Zeit habe ich mich sehr für den Betrieb von Software und Systemen in großem Maßstab interessiert und engagiert. Ich lernte viel über verteilte Systeme, Leistung, Optimierungen und den zuverlässigen Betrieb in großem Maßstab. Danach habe ich viele andere Aufgaben übernommen, von der Entwicklung von Systemen an der Schnittstelle zwischen Software und Betrieb (DevOps) und von Hilfssystemen, die intelligente Software ermöglichen (MLOps), über die Durchführung von Deep-Learning-Inferenzen im großen Maßstab und die Entwicklung von Daten-Engines für Deep Learning (Machine Learning Engineering) bis hin zur Entwicklung von Multitasking- und Mehrzielmodellen für kritische Funktionen wie Gesundheits- und Geschäftsentscheidungsworkflows als Datenwissenschaftler und Spezialist für maschinelles Lernen.
Seit ich mich mit der Entwicklung intelligenter Systeme beschäftige, ist Deep Learning ein wichtiger Teil meiner Arbeit. Der Grund für die weite Verbreitung von intelligenten KI-Systemen auf der Grundlage von Deep Learning ist ihre Fähigkeit, Probleme in großem Maßstab und mit hoher Effizienz zu lösen. Der Aufbau solcher Systeme ist jedoch sehr komplex, denn beim Deep Learning geht es nicht nur um Algorithmen und Mathematik. Ein Großteil der Komplexität liegt an der Schnittstelle zwischen Hardware, Software, Daten und Deep Learning (insbesondere den Algorithmen und Techniken). Ich schätze mich glücklich, dass ich in einer Reihe von Positionen Erfahrungen sammeln konnte, die mich zwangen, schnell ein detailliertes Verständnis für den Aufbau und die Verwaltung von Deep Learning-basierten KI-Systemen in großem Maßstab zu entwickeln. Das Wissen, das ich durch die mir gebotenen Möglichkeiten erworben habe, ist nicht so leicht verfügbar und nutzbar, denn jeder dieser Bereiche - Hardware, Software und Daten - ist so komplex wie Deep Learning selbst.
Die Hauptmotivation hinter diesem Buch ist es, dieses Wissen zu demokratisieren, damit jeder, der sich mit maschinellem Lernen beschäftigt, egal ob Ingenieur oder nicht, sich in der Deep-Learning-Landschaft zurechtfinden kann. Ich hatte schon immer das Gefühl, dass dieses Wissen etwas zersplittert war, und sah die Möglichkeit, es in einer kohärenten Wissensbasis zusammenzufassen. Diese einheitliche Wissensdatenbank bietet theoretische und praktische Anleitungen für die Entwicklung von Deep-Learning-Engineering-Wissen, so dass du deine Deep-Learning-Workloads leicht skalieren kannst, ohne so viele Untersuchungen durchführen zu müssen wie ich.
Warum Skalierung wichtig ist
Deep Learning und Skalierung sind miteinander verknüpft. Deep Learning ist in der Lage, deine Ziele zu skalieren: von einer Aufgabe zu Multitasking, von einer Modalität zu Multimodalität, von einer Klasse zu Tausenden von Klassen. Alles ist möglich, vorausgesetzt, du verfügst über skalierbare Hardware und eine große Datenmenge und schreibst eine Software, die effizient skalieren kann, um alle verfügbaren Ressourcen zu nutzen.
Die Skalierung von ist komplex und daher nicht kostenlos. Die Entwicklung eines auf Deep Learning basierenden Systems erfordert eine große Anzahl von Schichten, eine große Menge an Daten und Hardware, die rechenintensive Arbeitslasten bewältigen kann. Die Skalierung setzt voraus, dass du die Elastizität deines gesamten Systems - nicht nur deines Modells, sondern deines gesamten Deep-Learning-Stacks - kennst und dich an Situationen anpassen kannst, in denen die Elastizität an ihre Grenzen stößt. Darin liegt die zweite Motivation dieses Buches: Es soll dir helfen, dein System besser zu verstehen und zu erkennen, wann es zusammenbrechen könnte und wie du unnötige Brüche vermeiden kannst.
Für wen dieses Buch ist
Dieses Buch ( ) soll dir dabei helfen, ein tieferes Wissen über den Deep Learning Stack zu entwickeln - insbesondere darüber, wie Deep Learning mit Hardware, Software und Daten zusammenarbeitet. Es wird dir als wertvolle Ressource dienen, wenn du dein Deep-Learning-Modell skalieren willst, indem du entweder die Hardware-Ressourcen erweiterst, größere Datenmengen hinzufügst oder die Kapazität des Modells selbst erhöhst. Die Effizienz ist ein wichtiger Bestandteil jeder Skalierung. Aus diesem Grund wird das Thema Effizienz im gesamten Buch berücksichtigt, um dir das Wissen und die Ressourcen an die Hand zu geben, die du für eine effektive Skalierung brauchst.
Dieses Buch richtet sich an Praktiker aus allen Bereichen des maschinellen Lernens: Ingenieure, Dateningenieure, MLOps, Deep-Learning-Wissenschaftler, Machine-Learning-Ingenieure und andere, die sich für die Modellentwicklung im großen Maßstab interessieren. Es setzt voraus, dass der Leser bereits über grundlegende Kenntnisse von Deep-Learning-Konzepten wie Optimierern, Lernzielen und Verlustfunktionen sowie der Modellzusammenstellung und -kompilierung verfügt und eine gewisse Erfahrung mit der Modellentwicklung hat. Für die praktischen Abschnitte des Buches sind außerdem Kenntnisse in Python und PyTorch unerlässlich.
Angesichts der Komplexität und des Umfangs konzentriert sich dieses Buch in erster Linie auf die Skalierung der Modellentwicklung und des Trainings, wobei ein Schwerpunkt auf dem verteilten Training liegt. Auch wenn die ersten Kapitel für den Einsatz und die Inferenz nützlich sein können, geht die Skalierung der Inferenz über den Rahmen dieses Buches hinaus. Zu den Themen, die wir behandeln werden, gehören:
-
Wie dein Modell in einen Berechnungsgraphen zerlegt wird und wie deine Daten während des Trainingsprozesses durch diesen Graphen fließen.
-
Die wenig erzählte, aber schöne Geschichte der Fließkommazahlen und wie diese Higgs-Bosonen des Deep Learning genutzt werden können, um Speichereffizienz zu erreichen.
-
Wie beschleunigtes Rechnen deine Ausbildung beschleunigt und wie du die dir zur Verfügung stehenden Hardware-Ressourcen am besten nutzen kannst.
-
Wie du dein Modell mit verteilten Trainingsparadigmen trainierst (d.h. Daten, Modell, Pipeline und hybride multidimensionale Parallelität). Du lernst auch etwas über föderiertes Lernen und seine Herausforderungen.
-
Wie du das PyTorch-Ökosystem in Verbindung mit den NVIDIA-Bibliotheken und Triton nutzen kannst, um dein Modelltraining zu skalieren.
-
Debuggen, Überwachen und Untersuchen von Engpässen, die die Skalierung des Modelltrainings unerwünscht verlangsamen.
-
Wie du den Ausbildungszyklus beschleunigst und deine Feedbackschleife optimierst, um die Modellentwicklung und die damit verbundenen bewährten Methoden zu iterieren.
-
Eine Reihe von Datentricks und -techniken und wie du sie anwendest, um dein Training mit begrenzten Ressourcen zu skalieren.
-
Wie du die richtigen Tools und Techniken für dein Deep Learning-Projekt auswählst.
-
Optionen für die Verwaltung der Compute-Infrastruktur, wenn sie in großem Maßstab betrieben wird.
Wie dieses Buch organisiert ist
Dieses Buch besteht aus einem Einführungskapitel, gefolgt von einem Dutzend Kapiteln, die in drei Teile unterteilt sind und grundlegende Konzepte, verteiltes Training und extreme Skalierung behandeln. Jedes Kapitel baut auf den Konzepten, Grundlagen und Prinzipien der vorangegangenen Kapitel auf, um ein ganzheitliches Wissen über Deep Learning zu vermitteln, das ein effizientes und effektives Skalieren von Trainingsworkloads ermöglicht.
Einführung
In Kapitel 1, "Was uns die Natur und die Geschichte über Skalierung gelehrt haben", wird der theoretische Rahmen für die Entscheidung, wann skaliert werden soll, dargelegt und es werden die großen Herausforderungen bei der Skalierung untersucht. In diesem Kapitel erfährst du auch etwas über die Geschichte des Deep Learning und darüber, wie die Skalierung ein wichtiger Faktor für seinen Erfolg war.
Teil I: Grundlegende Konzepte des Deep Learning
In Kapitel 2, "Deep Learning", wird Deep Learning anhand von Berechnungsgraphen und Datenfluss vorgestellt. Für Anfänger im Bereich des maschinellen Lernens ist dieses Kapitel sehr hilfreich, da es die Funktionsweise von Deep Learning anhand von reinen Python-Übungen erklärt. Erfahrene Deep-Learning-Praktiker können dieses Kapitel überspringen.
Kapitel 3, "Die rechnerische Seite des Deep Learning", taucht in das Innenleben der elektronischen Berechnungen und der Hardware ein und untersucht, wie die Rechenleistung erreicht und skaliert wird. Außerdem erhältst du einen detaillierten Einblick in die Vielfalt der heute erhältlichen Hardware-Beschleuniger, damit du das nötige Wissen hast, um die am besten geeignete Hardware für dein Projekt auszuwählen.
Kapitel 4, "Alles auf einen Nenner bringen: Effizientes Deep Learning" fasst das grundlegende Wissen über Deep Learning zusammen und gibt dir eine praktische Anleitung, wie du ein effizientes und effektives intelligentes System für deine Aufgabe aufbauen kannst und wie du es messen und überwachen kannst. In diesem Kapitel lernst du auch etwas über die Graphkompilierung und eine Reihe von Speichertricks, die dir das Wissen vermitteln, um einen effizienten Stack zu bauen.
Teil II: Verteilte Ausbildung
Kapitel 5, "Verteilte Systeme und Kommunikation", führt in die Grundlagen verteilter Systeme ein und gibt detaillierte Einblicke in die verschiedenen Arten und die damit verbundenen Herausforderungen. Kommunikation ist ein wichtiger Aspekt verteilter Systeme, der in diesem Kapitel anhand von Deep Learning erklärt wird. Dieses Kapitel gibt auch einen Einblick in die Optionen und Werkzeuge, die du für die Skalierung deiner Hardwareressourcen nutzen kannst, um verteiltes Rechnen zu erreichen, und was dies für Hardware mit Beschleunigung bedeutet.
Kapitel 6, "Theoretische Grundlagen des verteilten Deep Learning", erweitert Kapitel 5 und vermittelt theoretisches und grundlegendes Wissen über verteiltes Deep Learning. In diesem Kapitel lernst du verschiedene Trainingsmethoden für verteiltes Deep Learning kennen und erfährst, wie du eine davon auswählen kannst.
Kapitel 7, "Datenparallelität", geht auf die Details der verteilten Datenparallelität ein und bietet eine Reihe von praktischen Übungen, die diese Techniken demonstrieren.
Kapitel 8, "Skalierung über Datenparallelität hinaus: Modell-, Pipeline-, Tensor- und Hybridparallelität" vermittelt grundlegende und praktische Kenntnisse über die Skalierung des Modelltrainings über die Datenparallelität hinaus. In diesem Kapitel lernst du etwas über Modell-, Pipeline- und multidimensionale Hybridparallelität und erfährst in praktischen Übungen die Herausforderungen und Grenzen jeder dieser Techniken.
Kapitel 9, "Praktische Erfahrung mit der Skalierung über alle Dimensionen hinweg", fasst das Gelernte aus Teil II zusammen und vermittelt Wissen und Einblicke, wie man mehrdimensionale Parallelität effektiver umsetzen kann.
Teil III: Extreme Skalierung
Kapitel 10, "Datenzentrierte Skalierung", bietet eine datenzentrierte Perspektive und wertvolle Informationen zu verschiedenen Techniken, um den Gewinn aus deinen Daten zu maximieren. In diesem Kapitel erfährst du auch, wie du deine Datenpipelines durch Stichproben und Auswahltechniken effizienter gestalten kannst.
Kapitel 11, "Skalierung von Experimenten: Effektive Planung und Verwaltung" konzentriert sich auf die Skalierung von Experimenten und bietet Einblicke in die Planung und Verwaltung von Experimenten. In diesem Kapitel findest du nützliche Informationen, wenn du mehrere Experimente durchführst und deine Chancen maximieren willst, das beste Modell zu finden; es behandelt Techniken wie Feinabstimmung, Expertenmischung (MoE), kontrastives Lernen usw.
Kapitel 12, "Effiziente Feinabstimmung großer Modelle", untersucht die Feinabstimmung großer Modelle mit niedrigem Rang anhand eines praktischen Beispiels.
Kapitel 13, "Basismodelle", legt den konzeptionellen Rahmen der Basismodelle dar und gibt einen Überblick über diese sich entwickelnde Landschaft.
Was du brauchst, um dieses Buch zu benutzen
Um die Codebeispiele in diesem Buch auf auszuführen, brauchst du ein funktionierendes Gerät mit mindestens einer 16-Kern-CPU und 16 GB (idealerweise 32 GB) RAM. Die meisten Übungen in Teil II verwenden beschleunigte Hardware, sodass du für einige der Übungen ein System mit mehr als einem Grafikprozessor - idealerweise NVIDIA - benötigst. Die meisten Übungen sind plattformunabhängig geschrieben, und eine Dockerdatei mit einer Liste der Laufzeitabhängigkeiten, die für die Ausführung der Übungen erforderlich sind, wird mitgeliefert.
Einrichten deiner Umgebung für praktische Übungen
Anweisungen zum Einrichten deiner Umgebung für die praktischen Übungen in diesem Buch findest du im dazugehörigen GitHub-Repository. Diese Seite enthält spezifische Richtlinien für die Einrichtung einer Python-basierten nativen Umgebung oder einer emulierten Docker-Umgebung. Dort findest du auch Anweisungen zum Einrichten der NVIDIA-Treiber und der CUDA-Laufzeitumgebung sowie zum Aktualisieren der Versionen und zum Ausführen der Übungen.
Für einige Übungen in Teil II gibt es spezielle Anweisungen, die im Zusammenhang mit diesen Übungen erklärt werden.
Code-Beispiele verwenden
Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/suneeta-mall/deep_learning_at_scale zum Download bereit .
Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, schicke 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. Ein Beispiel: "Deep Learning at Scale von Suneeta Mall (O'Reilly). Copyright 2024 Suneeta Mall, 978-1-098-14528-6."
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 .
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.
Constant width italic
-
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
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.
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 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-889-8969 (in den Vereinigten Staaten oder Kanada)
- 707-827-7019 (international oder lokal)
- 707-829-0104 (Fax)
- support@oreilly.com
- https://www.oreilly.com/about/contact.html
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/DLAS aufrufen .
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.
Sieh uns auf YouTube: https://youtube.com/oreillymedia.
Danksagungen
An meine geliebte Familie: Eure unerschütterliche Unterstützung und euer Verständnis während der Entstehung dieses Buches waren enorm wichtig. Mein herzlicher Dank gilt meinem Mann, der mich mit seiner Geduld und Ermutigung auf Trab gehalten hat. Meinen unglaublichen Kindern: Ihre Neugierde und ihr Enthusiasmus für das Lernen inspirieren mich jeden Tag. Dieses Buch gehört genauso zu euch wie zu mir.
Mama, Papa und Schwiegereltern, eure Liebe, eure Weisheit, euer unerschütterlicher Glaube an meine Fähigkeiten und eure unendliche Ermutigung waren mir auf dieser Reise ein Leitstern. Meinem Bruder, deine Beharrlichkeit kennt keine Grenzen und inspiriert mich immer wieder. Dieses Buch ist euch allen gewidmet.
An die Open-Source-Community für Deep Learning: Ich bin den Open-Source-Gemeinschaften auf der ganzen Welt zu tiefstem Dank verpflichtet, die ihr Wissen und ihre Arbeit zur Verfügung gestellt haben, um gemeinsam und gemeinschaftlich die Haltung von KI-Systemen in der Produktion zu verbessern. Euer Engagement für Innovation und Zugänglichkeit auf dem Gebiet des Deep Learning ist revolutionär.
Das Wissen, die Werkzeuge und die Ressourcen, die diese Gemeinschaften gemeinsam aufgebaut haben, haben nicht nur dieses Buch geprägt, sondern auch die Landschaft des maschinellen Lernens verändert. Ich bin euch sehr dankbar für eure Beiträge. Diese Arbeit wäre ohne euch nicht möglich gewesen. Es ist mir eine große Freude, dieses Buch euch zu widmen!
An meine engagierten Tech-Reviewer und mein Redaktionsteam: Ich danke euch für euren wertvollen Beitrag und euer Engagement für hervorragende Leistungen. Ich möchte mich bei den technischen Gutachtern Tim Hauke Langer, Giovanni Alzetta, Satyarth Praveen und Vishwesh Ravi Shrimali sowie bei meiner Lektorin Sara Hunter bedanken, die dieses Buch durch ihre Anleitung und ihre Ratschläge erheblich verbessert haben. Ich möchte auch Nicole Butterfield, meiner Lektorin, für ihre Unterstützung und Beratung bei der Gestaltung des Buches danken.
Get Deep Learning im Maßstab 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.