Was ist verteiltes maschinelles Lernen?

Autoren

Ivan Belcic

Staff writer

Cole Stryker

Staff Editor, AI Models

IBM Think

Was ist verteiltes maschinelles Lernen?

Verteiltes maschinelles Lernen (ML) ist ein Ansatz für umfangreiche ML-Aufgaben, bei denen die Workloads auf mehrere Geräte oder Prozessoren verteilt sind, anstatt auf einem einzigen Computer ausgeführt zu werden. Verteiltes ML wird am häufigsten für das Training großer und komplexer Modelle verwendet, wie z. B. tiefe neuronale Netze, bei denen der Rechenaufwand besonders hoch ist. 

Wenn Modelle der künstlichen Intelligenz (KI) Größe und Komplexität skalieren, können die für das Training benötigten Ressourcen die Kapazität eines einzelnen Geräts übersteigen. Ebenso können komplexe, umfangreiche Aufgaben zu anspruchsvoll sein oder mehr Speicher benötigen, als ein Gerät bereitstellen kann. Verteilte Systeme partitionieren entweder den Datensatz oder das KI-Modell auf mehrere Geräte oder Knoten, um die Leistung, Genauigkeit und Effizienz zu verbessern. 

Verteiltes ML ist ein Teilbereich des verteilten Rechnens, das umfassendere Bemühungen zur Verteilung von Rechenaufgaben auf mehrere Verarbeitungssysteme umfasst.

Die neuesten KI-Trends, präsentiert von Experten

Erhalten Sie kuratierte Einblicke in die wichtigsten – und faszinierendsten – KI-Neuheiten. Abonnieren Sie unseren wöchentlichen Think-Newsletter. Weitere Informationen in der IBM Datenschutzerklärung.

Vielen Dank! Sie haben ein Abonnement abgeschlossen.

Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.

Arten des verteilten maschinellen Lernens

Zu den Ansätzen für verteiltes maschinelles Lernen gehören: 

  • Datenparallelität: Aufteilung des Datensatzes auf mehrere Geräte 

  • Modellparallelität: Partitionierung eines Modells auf mehrere Geräte 

  • Hybride Parallelität: Kombination von Aspekten der Daten- und Modellparallelität

Das Parameter-Server-Framework für verteiltes ML verwendet einen oder mehrere Serverknoten, um Modellparameter-Updates zu verwalten, während Worker-Knoten die Daten und Berechnungen verarbeiten.

Datenparallelität

Datenparallelismus unterteilt einen umfangreichen Datensatz, der als Trainingsdaten verwendet wird, in eine Anzahl von Gruppen, die der Anzahl der Knoten im System entspricht. Jeder Knoten beherbergt eine Kopie des KI-Modells und speist es mit einer Teilmenge der verteilten Daten. Operationen zur Datenparallelität können entweder synchron oder asynchron ausgeführt werden. Synchrones Training wird bei Deep-Learning-Modellen häufiger eingesetzt, da es Konsistenz gewährleistet, jedoch auf Kosten der Geschwindigkeit. 

Da jeder Knoten eine vollständige Kopie des Modells ausführt, muss die Hardware über ausreichend Speicherplatz verfügen, um dieses zu hosten. Allerdings wird der KI-Workload pro Knoten reduziert, da jeder nur einen Teil des Datensatzes verarbeitet.

Föderiertes Lernen

Federated Learning ähnelt der Datenparallelität insofern, als mehrere Knoten Kopien eines Modells auf Teilmengen von Daten trainieren. Die Datenpartitionen werden jedoch nicht aus einem zentralen Datenpool erstellt, sondern bestehen aus lokalen Daten für jeden Knoten. Modellaktualisierungen werden zwischen den Knoten aggregiert, während die Daten ihre ursprüngliche Quelle nicht verlassen. 

Da jeder Datensatz lokalisiert ist, verwenden Datenwissenschaftler häufig föderiertes Lernen für verteilte Deep-Learning-Anwendungen, die hohe Datensicherheit oder gesetzliche Vorschriften erfordern. Zentralisierte Datenpools können während der Übertragung versehentlich personenbezogene Daten (PII) offenlegen. Durch föderiertes Lernen wird dieses Risiko gemindert, indem jeder Datensatz auf seinem eigenen Knoten isoliert wird.

AI Academy

KI-Experte werden

Erlangen Sie das nötige Wissen, um KI-Investitionen zu priorisieren, die das Unternehmenswachstum vorantreiben. Starten Sie noch heute mit unserer kostenlosen AI Academy und gestalten Sie die Zukunft der KI in Ihrem Unternehmen.

Modellparallelität

Bei der Modellparallelität wird ein Modell in Komponentenbereiche unterteilt, beispielsweise in Schichten eines tiefen neuronalen Netzwerks, die unabhängig voneinander und gleichzeitig auf separaten Knoten ausgeführt werden können. Jeder Teil des Modells verwendet dieselben Daten. Modellparallelismus wird auch als Netzwerkparallelismus bezeichnet. 

Wenn ein einzelnes ML-Modell zu groß ist, um von einem einzelnen Rechner verarbeitet zu werden, ermöglicht die Modellparallelität die Ausführung des Modells über mehrere Knoten hinweg. Jeder Knoten verarbeitet einen Teil des Modells, sodass seine Rechen- und Speicheranforderungen geringer sind, als wenn ein einzelner Computer das gesamte Modell ausführen müsste. 

Modellparallelismus ist in der Regel schwieriger zu implementieren als Datenparallelismus. Der ausgewählte verteilte Algorithmus für maschinelles Lernen wirkt sich direkt auf die Skalierbarkeit der Methode aus, wobei einige Algorithmen für diese Technik besser geeignet sind als andere. Das System muss so aufgebaut sein, dass der Umfang der gemeinsamen Nutzung von Daten zwischen den Knoten minimiert wird. Leistungsstarke Modellparallelitätssysteme erfordern ein Design und eine Optimierung auf Expertenniveau. 

Modellparallelität wird häufig mit Datenparallelität kombiniert, sodass jedes Segment des Modells einen anderen Teil der Eingabedaten verarbeitet. Die Ergebnisse werden im gesamten Netzwerk zusammengefasst.

Pipeline-Parallelität 

Pipeline-Parallelität ist eine Art der Modellparallelität, bei der ein Modell sequenziell partitioniert wird. Jede Stufe des Modells wird auf einem eigenen Knoten gehostet. Pipeline-Parallelität kann den Durchsatz verbessern – das Datenvolumen, das ein Modell gleichzeitig verarbeiten kann. 

Pipeline-Parallelität kann den Durchsatz verbessern – das Datenvolumen, das ein Modell gleichzeitig verarbeiten kann. Dieser Leistungsanstieg geht jedoch mit einer erhöhten Latenzzeit einher, d. h. der Zeit, die benötigt wird, um nach Erhalt einer Eingabe ein Ergebnis zu generieren.

Die Erhöhung der Latenzzeit ist auf die Anlaufphase zurückzuführen, in der die ersten Mikro-Datenpakete durch die Sequenz geleitet werden. Spätere Phasen in der Machine-Learning-Pipeline können erst initialisiert werden, wenn die ersten Mikro-Batches von Daten die vorherigen Phasen durchlaufen haben.

Tensor-Parallelität

Tensor-Parallelität kommt zum Einsatz, wenn bereits eine einzelne Schicht eines tiefen neuronalen Netzwerks zu viel Rechenleistung erfordert oder zu viel Speicherplatz für ein einzelnes Gerät beansprucht. Selbstaufmerksamkeits- und Einbettungsschichten – zwei Eckpfeiler der Transformer-Architektur – können sehr groß werden, was bedeutet, dass praktisch jede Entwicklung großer Sprachmodelle (LLM) Tensorparallelität beinhaltet. Ohne Tensor-Parallelismus wäre es praktisch unmöglich, LLM-Modelle zu trainieren, da die Schichten für ein einzelnes Gerät zu groß sind. 

Bei der Tensorparallelität werden die Parameter einer einzelnen Schicht auf mehreren GPUs (Grafikprozessoren) oder TPUs (Tensorprozessoren) gespeichert. Jedes Gerät berechnet einen Teil der Operationen einer einzelnen Schicht, und die Teilergebnisse werden aggregiert, um die Ausgabe der Schicht zu erzeugen. 

Im Vergleich zu Datenparallelismus und vielen anderen Arten von Modellparallelismus erfordern Tensorparallelismus-Workflows eine wesentlich intensivere Kommunikation zwischen den Knoten. Netzwerke mit hoher Bandbreite können dazu beitragen, Kommunikationsengpässe zu reduzieren.

Hybride Parallelität

Daten- und Modellparallelitätstechniken werden selten isoliert eingesetzt. Sie werden häufig in verschiedenen hybriden Parallelitätskonfigurationen kombiniert. Die Open-Source-Frameworks PyTorch und TensorFlow für Deep Learning, die beide Python unterstützen, werden häufig zum Aufbau verteilter Systeme für maschinelles Lernen verwendet. 

Die meisten großen Sprachmodelle, einschließlich der GPT-Familie, beruhen auf hybrider Parallelität, um effizient in großem Maßstab zu trainieren.

Funktionsweise von verteiltem maschinellem Lernen

Verteiltes ML kann jede Phase der ML-Pipeline erweitern: den Prozess der Erstellung, des Trainings und der Bereitstellung von ML-Modellen für maschinelles Lernen. Vorverarbeitung, Training, Feinabstimmung, Validierung, Inferenz und Bereitstellung 

  • Verteilte Datenvorverarbeitung 

  • Verteiltes Training

  • Verteilte Feinabstimmung 

  • Verteilte Validierung 

  • Verteilte Inferenz 

  • Verteilte Bereitstellung 

Verteilte Datenvorverarbeitung

Die verteilte Datenvorverarbeitung nutzt vernetzte Knoten – die mehreren Prozessoren oder Geräte, nicht die einzelnen Neuronen des neuronalen Netzwerks, die manchmal auch als „Knoten“ bezeichnet werden –, um große Datensätze für die Analyse und weitere Verwendung vorzubereiten. 

Ein zentraler Steuerungsknoten verwaltet den Arbeitsablauf, teilt die Daten auf und weist sie den Arbeitsknoten zu. Die Dezentralisierung der Arbeit durch parallele Verarbeitung erhöht die Skalierbarkeit und Effizienz im Vergleich zu herkömmlichen Modellen, die ein einzelnes Gerät verwenden.

Verteiltes Training

Verteiltes Training nutzt verteilte ML-Techniken, um das Modelltraining auf verschiedene Geräte zu verteilen. Diese Technik wird beispielsweise häufig bei großen neuronalen Netzen eingesetzt. Wenn entweder das Netzwerk, der Trainingsdatensatz oder beides für einen einzelnen Prozessor zu umfangreich ist, wird die Workload beim verteilten Training auf mehrere Server, GPUs oder Maschinen verteilt. 

Der stochastische Gradientenabstieg (Stochastic Gradient Descent, SGD) ist ein Lernalgorithmus, der den Datensatz in Mini-Batches aufteilt und nach jedem Batch den Gradienten der Verlustfunktion berechnet. Die Verwendung von Mini-Batches anstelle des vollständigen Datensatzes erhöht die Effizienz des Trainings. 

Die Verlustfunktion misst den Fehler in den Vorhersagen des Modells, und das Ziel von SGD ist es, den Gradienten zu senken, um den Wert der Funktion zu minimieren. Wie beim herkömmlichen Modelltraining gilt der Trainingsprozess als abgeschlossen, wenn das Modell Konvergenz erreicht hat: wenn der SGD-Algorithmus den Wert der Funktion erfolgreich minimiert hat. 

Knoten verarbeiten Mini-Batches parallel, was möglich ist, da jeder Batch innerhalb jeder Iteration unabhängig von den anderen verarbeitet wird. Jeder Knoten berechnet seinen Gradienten und überträgt dann den aktualisierten Gradientenwert an die anderen Knoten im Netzwerk. Die anderen Worker-Knoten implementieren die Aktualisierungen, die sie erhalten, in ihre eigenen Modelle und tragen so dazu bei, dass alle Kopien des Modells während des gesamten Trainingsprozesses identisch bleiben. 

Die AllReduce-Funktion ist eine kollektive Kommunikationsoperation, die es jedem Knoten ermöglicht, seine Ergebnisse zu teilen und die aggregierten Ergebnisse über das Netz zu verbreiten. AllReduce ermöglicht es allen Knoten, Aktualisierungen der Modellparameter zu synchronisieren und die Konsistenz aufrechtzuerhalten. AllReduce, das lange Zeit im High-Performance-Rechnen verwendet wurde, wurde in ML-Frameworks wie Horovod populär. 

SGD kann synchron oder asynchron ausgeführt werden. Synchrones SGD aktualisiert alle Knoten gleichzeitig, wodurch die Konsistenz auf Kosten möglicher Verzögerungen gewahrt bleibt, wenn einige Knoten zurückbleiben. Asynchrones SGD aktualisiert Parameter, sobald ein Update bereit ist, aber einige Knoten erhalten möglicherweise Updates, die nicht die aktuellsten Werte enthalten. 

Durch die Reduzierung der pro Gerät benötigten Rechenressourcen kann das verteilte Training die Trainingszeiten beschleunigen. Da es so rechenintensiv ist, ist das Training ein wichtiger Anwendungsfall für verteiltes ML.

Verteilte Feinabstimmung 

Die gleichen Prinzipien und Nutzen des verteilten Trainings gelten auch für die verteilte Feinabstimmung. Durch die Feinabstimmung wird ein vorab trainiertes Modell weiter geschult, um sich auf spezifischere Aufgaben zu spezialisieren. Die Anwendung verteilter ML-Techniken macht den Prozess schneller, effizienter und skalierbarer.

Verteilte Validierung 

Unter Validierung versteht man den Prozess der Bewertung der Leistung eines trainierten Modells. Das Verteilen des Datensatzes oder eines großen Modells auf mehrere Knoten bietet den gleichen Nutzen wie der Rest des verteilten Trainingsprozesses. 

Verteilte Inferenz

Inferenz ist der Prozess, bei dem ein trainiertes KI-Modell neue Daten verarbeitet, um Muster zu erkennen und Ausgaben oder Vorhersagen zu generieren. Durch die Verteilung der Workload auf mehrere Geräte ist es möglich, KI-Modelle zu betreiben, die für einen einzelnen Rechner zu groß sind. Verteilte Inferenz kann auch einen höheren Durchsatz und eine geringere Latenz ermöglichen.

Verteilte Bereitstellung 

Die verteilte Bereitstellung verwaltet den Betrieb einer Softwareanwendung über ein Netzwerk von Knoten. Die Lastverteilung über die Worker-Knoten hinweg trägt dazu bei, Engpässe zu verringern und die Ressourceneffizienz zu optimieren, wodurch der Durchsatz erhöht und die Latenz verringert wird.

Vorteile von verteiltem ML

Zu den Vorteilen des verteilten maschinellen Lernens gehören: 

  • Effizienz 

  • Skalierbarkeit

  • Redundanz

Effizienz

Durch die Automatisierung und Aufteilung der Workload auf mehrere Geräte wird die Belastung eines einzelnen Geräts reduziert. Knoten können parallel arbeiten, um langfristige Aufgaben schneller zu erledigen, und anschließend ihre Ergebnisse zum Endergebnis zusammenfassen. 

Das Training eines Bilderkennungsmodells auf ImageNet (einem Datensatz mit über 14 Millionen beschrifteten Bildern) würde auf einer einzelnen GPU mehrere Wochen dauern. Mit verteiltem ML könnte selbst ein kleines Start-up diese Aufgabe innerhalb weniger Stunden bewältigen.

Skalierbarkeit

Unternehmen müssen nicht in extrem leistungsstarke Computer investieren, um LLMs und andere ressourcenintensive Systeme auszuführen. Verteiltes Computing ermöglicht es Cloud-Service-Anbietern, riesige Infrastrukturen über viele Server und Rechenzentren hinweg zu koordinieren und sie Unternehmenskunden nach Bedarf zur Verfügung zu stellen.

Intensive Data-Science-Aufgaben wie die Datenverarbeitung mit Big Data können ohne größere Infrastrukturinvestitionen durchgeführt werden. Die groß angelegte Datenverarbeitung ermöglicht es auch kleineren Start-ups, ihren Nutzern Dienste wie Empfehlungssysteme oder Chatbots anzubieten. 

Am anderen Ende des Skalierbarkeitsspektrums liegen Hyperscale-Rechenzentren. Wo die Ressourcen es zulassen, bauen Unternehmen riesige Server-Cluster auf, um die fortschrittlichsten neuronalen Netze zu betreiben. Es wäre nicht möglich, so große Modelle auf Tausenden von GPUs ohne verteiltes ML zu betreiben.

Redundanz

Viele reale Systeme verlassen sich auf Fehlertoleranz – die Fähigkeit, fortzufahren, wenn einzelne Knoten ausfallen. Modellanbieter müssen sicherstellen, dass einzelne Benutzer sowie Anwendungen, die mit APIs verbunden sind, ununterbrochenen Zugriff haben. Bei verteiltem ML sorgt Redundanz für die Erhaltung der Betriebszeit, indem Prozesse über Knoten repliziert werden, sodass Ausfälle den Service nicht unterbrechen.

Herausforderungen von verteiltem ML

Zu den Herausforderungen einer effektiven verteilten ML-Implementierung gehören: 

  • Netzwerkengpässe

  • Mehraufwand für die Synchronisierung 

  • Energieverbrauch

Engpässe im Netzwerk

Unzureichende Bandbreite zwischen Knoten ist eine häufige Ursache für Engpässe in verteilten ML-Netzwerken. Methoden wie Tensorparallelismus, die mehr Kommunikation erfordern, beanspruchen die größte Bandbreite. Wenn das Netzwerk nicht in der Lage ist, die erforderliche Bandbreite bereitzustellen, werden verteilte ML-Projekte mit längeren Trainingszeiten und einer geringeren Skalierbarkeit konfrontiert sein.

Mehraufwand für die Synchronisierung

Der Synchronisationsaufwand ist eine Verzögerung, die auftritt, wenn eine Aufgabe erst begonnen werden kann, nachdem eine andere Aufgabe abgeschlossen ist. In einem synchronen System müssen alle Worker-Knoten die gemeinsam genutzten Daten hochladen, bevor sie zur nächsten Trainingsphase übergehen können. Dieser Moment wird als Synchronisationsbarriere bezeichnet, da die nächste Phase erst beginnt, wenn alle Knoten synchronisiert sind. 

Nachzügler-Knoten – Mitarbeiter, die länger als andere benötigen, um ihre Aufgabe zu erledigen – verlangsamen dadurch den gesamten Prozess. Asynchrone Systeme beseitigen diese Barriere, jedoch mit dem Risiko, dass einige Knoten mit veralteten Parameterkonfigurationen betrieben werden.

Energieverbrauch

Verteilte Netzwerke können einen hohen Energieverbrauch aufweisen, nicht nur aufgrund der Knotenpunkte, sondern auch aufgrund der Kommunikation zwischen ihnen. Der Energieverbrauch kann je nach Implementierung und Architektur des verteilten ML-Systems variieren. 

  • Leistungsanforderungen: Die leistungsstarken GPUs, die für viele anspruchsvolle ML-Aufgaben benötigt werden, sind energieintensiv. 

  • Kommunikation: Knoten benötigen Hochgeschwindigkeitsnetzwerke, um effektiv zu kommunizieren und den Synchronisierungsaufwand zu minimieren. 

  • Cloud oder Edge Computing: Die zentralisierten Hyperscale-Rechenzentren, die die führenden KI-Modelle antreiben, verbrauchen enorme Mengen an Energie. Edge Computing kann helfen, die Netzwerkkosten zu senken. 

  • Algorithmus und Datenverarbeitung: Die Wahl des richtigen Algorithmus und die Einhaltung guter Datenverarbeitungspraktiken wie Funktion-Engineering können Modelle effizienter machen.

Verteilte Frameworks für maschinelles Lernen

Verteilte ML-Frameworks implementieren maschinelles Lernen und optimieren gleichzeitig die Nutzung von Speicher- und Rechenressourcen. Sie können auch dabei helfen, ML-Implementierungen zu skalieren, Trainingszeiten zu verkürzen und die Kosten zu kontrollieren.

Zu den bemerkenswerten verteilten ML-Frameworks gehören:

  • PyTorch Distributed
     

  • Apache Spark
     

  • TensorFlow Distributed
     

  • Ray Train
     

  • InstructLab

PyTorch Distributed

PyTorch Distributed ist im beliebten PyTorch ML-Framework verfügbar und umfasst eine Reihe von Tools zum Erstellen und Skalieren von Deep-Learning-Modellen auf mehreren Geräten. Das torch.distributed-Paket deckt die Kommunikation innerhalb des Knotens ab, wie z. B. bei AllReduce. Die integrierte Unterstützung für Datenparallelität und Modellparallelität ermöglicht eine Reihe von verteilten Trainingsansätzen.

Apache Spark

Apache Spark ist ein seit langem bestehendes ML-Framework mit Unterstützung für verteiltes Training. Benutzer können End-to-End-ML-Pipelines erstellen, die sich in das größere Spark-Ökosystem integrieren, einschließlich Spark SQL für die Datenbankmanipulation. Spark bietet zwei Bibliotheken: die ursprüngliche MLlib und die neuere SparkML.

TensorFlow Distributed

Die tf.distribute.Strategy-API innerhalb von TensorFlow öffnet die Tür zu verteiltem ML und enthält Unterstützung für eine Reihe von Schemata: mehrere GPUs auf einer Maschine, mehrere GPUs auf mehreren Maschinen und mehr. ParameterServerStrategy speichert beispielsweise Parameter auf dedizierten Servern, von denen aus Workerknoten auf sie zugreifen.

Ray Train

Ray Train ist die skalierbare verteilte Trainings- und Feinabstimmungsbibliothek innerhalb des Ray ML-Frameworks für verteiltes Computing. Ray Train ist sowohl mit PyTorch als auch mit TensorFlow kompatibel. Die Ray Abstimmung Bibliothek unterstützt die verteilte Abstimmung von Hyperparametern über mehrere Geräte hinweg.

InstructLab

Der neuartige Ansatz von InstructLab für verteiltes ML verzichtet auf den traditionellen GPU-Cluster und setzt stattdessen auf einen Community-basierten Ansatz – fast wie Crowdsourcing-Fundraising. Community-Mitglieder tragen Parameteraktualisierungen zu einem zentralen Repository bei und können Modelle auf ihren persönlichen Geräten Feinabstimmung vornehmen.

Weiterführende Lösungen
IBM watsonx.ai

Trainieren, validieren, optimieren und implementieren Sie generative KI, Foundation Models und maschinelle Lernfunktionen mit IBM watsonx.ai, einem Studio der nächsten Generation für AI Builder in Unternehmen. Erstellen Sie KI-Anwendungen mit einem Bruchteil der Zeit und Daten.

Entdecken sie watsonx.ai
Lösungen im Bereich künstlicher Intelligenz

Setzen Sie KI in Ihrem Unternehmen ein – mit branchenführendem Fachwissen im Bereich KI und dem Lösungsportfolio von IBM an Ihrer Seite.

Erkunden Sie KI-Lösungen
KI-Beratung und -Services

Erfinden Sie kritische Workflows und Abläufe neu, indem Sie KI einsetzen, um Erfahrungen, Entscheidungsfindung in Echtzeit und den geschäftlichen Nutzen zu maximieren.

KI-Services entdecken
Machen Sie den nächsten Schritt

Profitieren Sie von einem einheitlichen Zugriff auf Funktionen, die den gesamten Lebenszyklus der KI-Entwicklung abdecken. Erstellen Sie leistungsstarke KI-Lösungen mit benutzerfreundlichen Oberflächen, Workflows und Zugriff auf branchenübliche APIs und SDKs.

watsonx.ai erkunden Buchen Sie eine Live-Demo