Glossar

Verteilte Ausbildung

Beschleunige das KI-Training mit verteiltem Training! Lerne, wie du die Trainingszeit verkürzen, Modelle skalieren und Ressourcen für komplexe ML-Projekte optimieren kannst.

Trainiere YOLO Modelle einfach
mit Ultralytics HUB

Mehr erfahren

Verteiltes Training ist eine Technik, die beim maschinellen Lernen (ML) eingesetzt wird, um das Training von Modellen erheblich zu beschleunigen, insbesondere von großen und komplexen Modellen, wie sie beim Deep Learning (DL) üblich sind. Da die Datensätze immer umfangreicher werden und Modelle wie Transformatoren oder große Faltungsnetze immer größer werden, ist es nicht mehr möglich, sie auf einem einzigen Prozessor, wie z. B. einer CPU oder sogar einem leistungsstarken GPUkann unpraktisch viel Zeit in Anspruch nehmen - Tage, Wochen oder sogar Monate. Verteiltes Training umgeht diesen Engpass, indem es die Rechenlast auf mehrere Recheneinheiten verteilt. Diese Einheiten (oft Grafikprozessoren) können sich in einem einzigen leistungsstarken Rechner befinden oder auf mehrere Rechner verteilt sein, die über ein Netzwerk miteinander verbunden sind, häufig unter Nutzung von Cloud-Computing-Ressourcen.

Wie verteiltes Training funktioniert

Das Grundprinzip der verteilten Ausbildung ist die Parallelität - die Aufteilung der Ausbildungsaufgabe, so dass mehrere Teile gleichzeitig ausgeführt werden können. Anstatt dass ein Prozessor alle Daten und Berechnungen nacheinander bearbeitet, wird die Arbeit auf mehrere Prozessoren verteilt, die oft als "Worker" bezeichnet werden. Um dies zu erreichen, gibt es zwei Hauptstrategien:

  • Datenparallelität: Dies ist der häufigste Ansatz. Eine vollständige Kopie des Modells befindet sich auf jedem Worker. Der Trainingsdatensatz wird in kleinere Teile aufgeteilt, und jeder Worker bearbeitet den ihm zugewiesenen Teil mit seiner lokalen Kopie des Modells. Die Arbeiter/innen berechnen die Aktualisierungen der Modellgewichte auf der Grundlage ihrer Datenuntermenge. Diese Aktualisierungen (Gradienten) werden dann für alle Arbeiter/innen zusammengefasst (oft gemittelt) und zur Aktualisierung des Master-Modells oder zur Synchronisierung aller Modellkopien verwendet. Auf diese Weise lassen sich auch größere Stapel effektiv verarbeiten. Frameworks wie PyTorch bieten Distributed Data Parallel (DDP) und TensorFlow bietet verschiedene verteilte Trainingsstrategien, die Datenparallelität implementieren. Effiziente Kommunikation zwischen den Workern ist entscheidend und wird oft von Bibliotheken wie der NVIDIA Collective Communications Library (NCCL) verwaltet.
  • Modellparallelität: Diese Strategie wird in der Regel angewendet, wenn ein Modell so groß ist, dass es nicht in den Speicher einer einzelnen GPU passt. Anstatt das gesamte Modell zu replizieren, werden verschiedene Teile (z. B. Schichten) des Modells auf verschiedene Worker verteilt. Die Daten fließen sowohl beim Vorwärts- als auch beim Rückwärtslauf nacheinander durch diese Teile über die Worker. Dieser Ansatz ist komplexer zu implementieren als die Datenparallelität, aber notwendig, um wirklich riesige Modelle zu trainieren. Einige Frameworks bieten Tools zur Unterstützung an, wie z. B. die Ansätze vonTensorFlow zur Modellparallelität, und Techniken wie Pipeline-Parallelität werden häufig verwendet.

Anwendungen in der realen Welt

Verteiltes Training ist für viele hochmoderne Anwendungen der Künstlichen Intelligenz (KI ) unerlässlich:

  • Training großer Sprachmodelle (LLMs): Modelle wie OpenAI's GPT-4 oder Google's Gemini haben Milliarden oder Billionen von Parametern. Um sie zu trainieren, müssen die Berechnungen über einen längeren Zeitraum auf möglicherweise Tausende von Grafikprozessoren verteilt werden. Dies ist für Aufgaben wie die Verarbeitung natürlicher Sprache (NLP), maschinelle Übersetzung und den Aufbau fortschrittlicher Chatbots unerlässlich.
  • Fortgeschrittene Computer Vision Modelle: Training modernster Computer Vision Modelle, wie z.B. Ultralytics YOLO für die Objekterkennung oder komplexe Modelle für die Bildsegmentierung, auf großen Datensätzen wie ImageNet oder COCO zu trainieren, profitiert immens vom verteilten Training. Das Training eines Objekterkennungsmodells für autonome Fahrzeuge beispielsweise umfasst riesige Mengen an Bilddaten und erfordert eine hohe Genauigkeit, so dass ein verteiltes Training auf mehreren GPUs eine Notwendigkeit ist, um in einem angemessenen Zeitrahmen Ergebnisse zu erzielen. Dies gilt auch für Spezialgebiete wie die medizinische Bildanalyse.
  • Empfehlungssysteme: Unternehmen wie Netflix oder Amazon trainieren komplexe Modelle auf Basis von Nutzerinteraktionsdaten, um personalisierte Empfehlungen zu erstellen. Der Umfang dieser Daten macht oft verteilte Ansätze erforderlich.
  • Wissenschaftliches Rechnen: Groß angelegte Simulationen in Bereichen wie Klimamodellierung, Physik und Medikamentenentwicklung nutzen oft die Prinzipien des verteilten Rechnens, die auch beim verteilten ML-Training verwendet werden.

Verteiltes Training vs. andere Trainingsmethoden

Es ist wichtig, die verteilte Ausbildung von verwandten Konzepten zu unterscheiden:

  • Föderiertes Lernen: Während bei beiden Verfahren mehrere Geräte beteiligt sind, ist Federated Learning für Szenarien gedacht, in denen die Daten dezentralisiert sind und aus Datenschutzgründen nicht an einen zentralen Ort übertragen werden können (oder sollten) (z. B. beim Training von Modellen auf Benutzerdaten, die auf Mobiltelefonen gespeichert sind). Beim föderierten Lernen werden Modellaktualisierungen lokal auf den Geräten berechnet und zur Aggregation an einen zentralen Server gesendet, aber die Rohdaten verlassen das Gerät nicht. Verteiltes Training setzt in der Regel voraus, dass die Daten auf den Rechencluster (z. B. in einem Rechenzentrum oder einer Cloud) verschoben und dort verteilt werden können. Ein Beispiel für ein solches Framework ist TensorFlow Federated.
  • Training auf einem einzigen Gerät: Das ist die traditionelle Methode, bei der der gesamte Trainingsprozess auf einer einzigen CPU oder GPU läuft. Sie ist einfacher einzurichten(siehe Ultralytics Quickstart), wird aber bei großen Modellen oder Datensätzen aufgrund von Zeit- und Speicherbeschränkungen unpraktikabel.

Tools und Umsetzung

Die Durchführung von verteilten Schulungen wird durch verschiedene Tools und Plattformen erleichtert:

  • ML-Frameworks: Kern-Frameworks wie PyTorch und TensorFlow bieten integrierte Unterstützung für verteilte Trainings-APIs.
  • Spezialisierte Bibliotheken: Bibliotheken wie Horovod, die von Uber entwickelt wurden, bieten einen Framework-unabhängigen Ansatz für verteiltes Deep Learning.
  • Cloud-Plattformen: Große Cloud-Anbieter wie AWS, Google Cloud und Microsoft Azure bieten verwaltete ML-Dienste und Infrastrukturen an, die für groß angelegte verteilte Schulungen optimiert sind.
  • MLOps-Plattformen: Plattformen wie Ultralytics HUB vereinfachen den Prozess, indem sie Schnittstellen für die Verwaltung von Datensätzen, die Auswahl von Modellen und den Start von Trainingsaufträgen bieten, einschließlich Cloud-Trainingsoptionen, die die zugrunde liegende verteilte Infrastruktur verwalten. Gute MLOps-Praktiken sind der Schlüssel zum effektiven Management verteilter Schulungen.

Verteiltes Training ist eine grundlegende Technik, die die Entwicklung der leistungsstärksten KI-Modelle von heute ermöglicht, da sie das Training in großem Maßstab realisierbar und effizient macht.

Alles lesen