Verteiltes maschinelles Lernen, auch verteiltes Lernen genannt, bezieht sich auf Algorithmen und Systeme, die mehrere Rechenknoten (auch Worker-Knoten, Worker) verwenden, um maschinelles Lernen oder Deep Learning durchzuführen. Es zielt darauf ab, die Leistung zu verbessern, die Privatsphäre zu schützen und kann erweitert werden zu größeren Trainingsdaten und größeren Modellen.
Verbundenes Lernen kann als eine besondere Art des verteilten Lernens betrachtet werden. Es kann einige der beim verteilten maschinellen Lernen auftretenden Schwierigkeiten weiter lösen und so Anwendungen und Produkte für den Schutz der Privatsphäre entwickeln.
In den letzten Jahren hat die rasante Entwicklung neuer Technologien zu einem beispiellosen Wachstum der Datenmenge geführt. Algorithmen des maschinellen Lernens werden zunehmend zur Analyse von Datensätzen und zum Aufbau von Entscheidungssystemen eingesetzt. Und aufgrund der Komplexität des Problems, etwa der Steuerung eines selbstfahrenden Autos, der Spracherkennung oder der Vorhersage des Verbraucherverhaltens (siehe Khandani et al. 2010), sind algorithmische Lösungen nicht realisierbar.
In einigen Fällen veranlassen lange Laufzeiten für das Modelltraining auf einer einzelnen Maschine Lösungsentwickler dazu, verteilte Systeme zu verwenden, um den Grad der Parallelität und die gesamte I/O-Bandbreite zu erhöhen, da die für komplexe Anwendungen erforderlichen Trainingsdaten leicht das Terabyte-Niveau erreichen können .
In anderen Fällen, wenn die Daten selbst verteilt sind oder das Volumen zu groß ist, um auf einem einzelnen Computer gespeichert zu werden, ist eine zentralisierte Lösung nicht einmal wünschenswert. Beispielsweise führen große Unternehmen eine Transaktionsverarbeitung für Daten durch, die an verschiedenen Orten gespeichert sind, oder das Datenvolumen ist zu groß, um verschoben und zentralisiert zu werden.
Damit diese Art von Datensätzen als Trainingsdaten für maschinelle Lernprobleme zugänglich sind, müssen Algorithmen ausgewählt und implementiert werden, die parallel rechnen können, sich an mehrere Datenverteilungen anpassen und über Fehlerwiederherstellungsfunktionen verfügen.
In den letzten Jahren ist die Technologie des maschinellen Lernens weit verbreitet. Obwohl verschiedene konkurrierende Methoden und Algorithmen entstanden sind, sind die verwendeten Datendarstellungen strukturell sehr ähnlich. Bei den meisten Berechnungen beim maschinellen Lernen geht es um grundlegende Transformationen von Vektoren, Matrizen oder Tensoren, die häufige Probleme in der linearen Algebra sind.
Die Notwendigkeit, diesen Vorgang zu optimieren, ist seit Jahrzehnten eine sehr aktive Forschungsrichtung im Bereich High Performance Computing (HPC). Daher wurden einige Technologien und Bibliotheken aus der HPC-Community (z. B. BLAS oder MPI) erfolgreich von der Machine-Learning-Community übernommen und in das System integriert.
Gleichzeitig hat die HPC-Community maschinelles Lernen als eine neue, hochwertige Arbeitslast erkannt und begonnen, HPC-Methoden auf maschinelles Lernen anzuwenden.
Coates et al. haben in nur drei Tagen ein Netzwerk mit 1 Milliarde Parametern auf ihrem kommerziellen Hochleistungsrechnersystem (COTSHPC) trainiert.
You et al. haben 2017 vorgeschlagen, das Training neuronaler Netze auf Intels Knights Landing zu optimieren, einem Chip, der für Hochleistungscomputeranwendungen entwickelt wurde.
Kurth et al. haben 2017 gezeigt, wie Deep-Learning-Probleme (z. B. das Extrahieren von Wettermustern) auf großen parallelen HPC-Systemen optimiert und skaliert werden können.
Yan et al. schlugen 2016 vor, dass die Herausforderung der Planung tiefer neuronaler Netzwerkanwendungen auf der Cloud-Computing-Infrastruktur durch die Modellierung von Arbeitslastanforderungen durch Ausleihen von Technologien wie der Lightweight-Analyse von HPC gelöst werden kann.
Li et al., 2017, untersuchten die Wiederherstellungseigenschaften tiefer neuronaler Netze bei Hardwarefehlern beim Betrieb auf Beschleunigern (Beschleuniger werden häufig in großen Hochleistungsrechnersystemen eingesetzt).
Wie bei anderen großen Computerherausforderungen haben wir zwei grundlegend unterschiedliche und sich ergänzende Möglichkeiten, Arbeitslasten zu beschleunigen: Hinzufügen weiterer Ressourcen zu einer Maschine (vertikale Skalierung, z. B. kontinuierliche Verbesserung von GPU/TPU-Rechenkernen) und Hinzufügen weiterer Ressourcen Knoten zum System (horizontale Skalierung, geringe Kosten).
Die Grenzen zwischen traditionellen Supercomputern, Grids und Clouds verschwimmen zunehmend, insbesondere wenn es um optimale Ausführungsumgebungen für anspruchsvolle Arbeitslasten wie maschinelles Lernen geht. Beispielsweise sind GPUs und Beschleuniger in großen Cloud-Rechenzentren häufiger anzutreffen. Daher ist die Parallelisierung der Workloads für maschinelles Lernen von entscheidender Bedeutung, um eine akzeptable Leistung im großen Maßstab zu erzielen. Beim Übergang von zentralisierten Lösungen zu verteilten Systemen steht das verteilte Computing jedoch vor großen Herausforderungen in Bezug auf Leistung, Skalierbarkeit, Ausfallsicherheit oder Sicherheit.
Da jeder Algorithmus einzigartige Kommunikationsmuster aufweist, ist es eine Herausforderung, ein allgemeines System zu entwerfen, das allgemeines maschinelles Lernen effektiv verteilen kann. Obwohl es derzeit eine Vielzahl unterschiedlicher Konzepte und Implementierungen des verteilten maschinellen Lernens gibt, werden wir eine gemeinsame Architektur vorstellen, die den gesamten Designraum abdeckt. Im Allgemeinen können Probleme des maschinellen Lernens in Trainingsphasen und Vorhersagephasen unterteilt werden (siehe Abbildung 1-5).
▲ Abbildung 1-5 Struktur des maschinellen Lernens. Während der Trainingsphase wird das ML-Modell mithilfe von Trainingsdaten und der Anpassung von Hyperparametern optimiert. Das trainierte Modell wird dann im System bereitgestellt, um Vorhersagen für eingehende neue Daten zu liefern
Die Trainingsphase umfasst das Trainieren eines Modells für maschinelles Lernen durch die Eingabe einer großen Menge an Trainingsdaten und die Verwendung häufig verwendeter ML-Algorithmen wie Evolutionärer Algorithmus (EA), regelbasierter Algorithmus für maschinelles Lernen wie Entscheidungsbäume und Assoziationsregeln. , Themenmodell (TM), Matrixfaktorisierung (Matrixfaktorisierung) und Algorithmen basierend auf stochastischem Gradientenabstieg (SGD) usw., um Modellaktualisierungen durchzuführen.
Zusätzlich zur Auswahl eines geeigneten Algorithmus für ein bestimmtes Problem müssen wir auch eine Hyperparameter-Optimierung für den ausgewählten Algorithmus durchführen. Das Endergebnis der Trainingsphase besteht darin, ein trainiertes Modell zu erhalten. Die Vorhersagephase besteht darin, das trainierte Modell in der Praxis einzusetzen. Ein trainiertes Modell empfängt neue Daten (als Eingabe) und generiert Vorhersagen (als Ausgabe).
Während die Trainingsphase eines Modells typischerweise rechenintensiv ist und große Datensätze erfordert, kann die Inferenz mit weniger Rechenleistung durchgeführt werden. Die Trainingsphase und die Vorhersagephase schließen sich nicht gegenseitig aus. Inkrementelles Lernen kombiniert die Trainingsphase und die Vorhersagephase und nutzt neue Daten in der Vorhersagephase, um das Modell kontinuierlich zu trainieren.
Wenn es um die Verteilung geht, können wir das Problem auf zwei verschiedene Arten auf alle Maschinen aufteilen, nämlich auf Daten- oder Modellparallelität (siehe Abbildung 1-6). Beide Methoden können auch gleichzeitig angewendet werden.
▲ Abbildung 1-6 Parallelität beim verteilten maschinellen Lernen. Bei der Datenparallelität werden mehrere Instanzen desselben Modells auf verschiedenen Teilmengen des Trainingsdatensatzes trainiert, während bei der Modellparallelität die parallelen Pfade eines einzelnen Modells auf mehrere Knoten verteilt werden. Bei der Datenparallelitätsmethode (Datenparallelität) werden die Daten partitioniert so oft, wie es Worker-Knoten im System gibt, und alle Worker-Knoten wenden dann denselben Algorithmus auf verschiedene Datensätze an. Das gleiche Modell steht allen Worker-Knoten zur Verfügung (entweder durch Zentralisierung oder Replikation) und erzeugt so natürlich eine einzige konsistente Ausgabe. Diese Methode kann für jeden ML-Algorithmus verwendet werden, der die Annahme einer unabhängigen und identischen Verteilung auf den Datenproben erfüllt (d. h. die meisten ML-Algorithmen).
Beim Model Parallel-Ansatz wird eine exakte Kopie des gesamten Datensatzes von Worker-Knoten verarbeitet, die verschiedene Teile des Modells bedienen. Daher ist ein Modell die Zusammenfassung aller Modellteile. Modellparallelitätsmethoden können nicht automatisch auf jeden Algorithmus für maschinelles Lernen angewendet werden, da Modellparameter normalerweise nicht partitioniert werden können.
Eine Möglichkeit besteht darin, verschiedene Instanzen desselben oder ähnlicher Modelle zu trainieren und die Ausgabe aller trainierten Modelle mithilfe von Methoden wie Ensembles (z. B. Bagging, Boosting usw.) zu aggregieren. Die endgültige Architekturentscheidung ist die Topologie des verteilten maschinellen Lernsystems. Verschiedene Knoten, aus denen ein verteiltes System besteht, müssen über spezifische Architekturmuster verbunden werden, um umfassende Funktionalität zu erreichen. Dies ist eine häufige Aufgabe. Die Wahl des Modus hat jedoch Auswirkungen auf die Rollen, die Knoten spielen können, auf den Grad der Kommunikation zwischen Knoten und auf die Ausfallsicherheit der gesamten Bereitstellung.
Abbildung 1-7 zeigt 4 mögliche Topologien, die mit Barans allgemeiner Klassifizierung verteilter Kommunikationsnetzwerke übereinstimmen. Die zentralisierte Architektur (Abbildung 1-7a) verwendet einen streng hierarchischen Ansatz zur Aggregation, die an einem einzigen zentralen Ort erfolgt. Die dezentrale Struktur ermöglicht eine Zwischenaggregation, bei der das Replikationsmodell kontinuierlich aktualisiert wird, wenn die Aggregation an alle Knoten gesendet wird (z. B. eine Baumtopologie) (Abbildung 1-7b), oder die Verwendung eines partitionierten Modells, das über mehrere Parameterserver aufgeteilt ist (Abbildung 1). -7b). Eine vollständig verteilte Architektur (Abbildung 1-7d) besteht aus einem Netzwerk unabhängiger Knoten, die die Lösung integrieren, und jedem Knoten ist keine bestimmte Rolle zugewiesen.
▲ Abbildung 1-7 Verteilte maschinelle Lerntopologie
3. Die gemeinsame Entwicklung des verteilten maschinellen Lernens
Federated Learning ist ein verteilter maschineller Lernansatz, bei dem mehrere Benutzer zusammenarbeiten, um ein Modell zu trainieren, während die Originaldaten verteilt bleiben und nicht auf einen einzelnen Server oder ein einzelnes Rechenzentrum verschoben werden. Beim föderierten Lernen werden Rohdaten oder durch sichere Verarbeitung von Rohdaten erzeugte Daten als Trainingsdaten verwendet. Föderiertes Lernen ermöglicht nur die Übertragung von Zwischendaten zwischen verteilten Computerressourcen und vermeidet gleichzeitig die Übertragung von Trainingsdaten. Verteilte Computerressourcen beziehen sich auf mobile Geräte von Endbenutzern oder die Server mehrerer Organisationen.
Verbundenes Lernen führt Code in Daten statt Daten in Code ein und löst so technisch die grundlegenden Probleme des Datenschutzes, des Eigentums und des Datenspeicherorts. Auf diese Weise ermöglicht föderiertes Lernen mehreren Benutzern, gemeinsam ein Modell zu trainieren und gleichzeitig rechtliche Datenbeschränkungen einzuhalten.
Dieser Artikel ist ein Auszug aus „Federated Learning: Detaillierte Erklärung von Algorithmen und Systemimplementierung“ (ISBN: 978-7-111-70349-5) und wird mit Genehmigung des Herausgebers veröffentlicht.
Das obige ist der detaillierte Inhalt vonEndlich hat jemand das verteilte maschinelle Lernen klar erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!