Freigeben über


Verteiltes Training mit Azure Machine Learning

Dieser Artikel informiert Sie über verteiltes Training und die Unterstützung von Deep Learning-Modellen durch Azure Machine Learning.

In verteilten Schulungen teilen Sie die Arbeitsauslastung auf, um ein Modell zu trainieren und mit mehreren Miniprozessoren zu teilen, die als Arbeitsknoten bezeichnet werden. Diese Workerknoten werden parallel ausgeführt, um das Modelltraining zu beschleunigen. Sie können verteilte Schulungen für herkömmliche Machine Learning-Modelle verwenden, aber es eignet sich besser für rechen- und zeitintensive Aufgaben, z. B. Deep Learning für das Training von tiefen neuralen Netzwerken.

Deep Learning und verteiltes Training

Es gibt zwei Haupttypen von verteiltem Training: Datenparallelität und Modellparallelität. Das Azure Machine Learning-SDK in Python unterstützt für verteiltes Training in Deep Learning-Modellen Integrationen in die PyTorch und TensorFlow. Beide sind beliebte Frameworks, die Datenparallelität für verteiltes Training verwenden und Horovod verwenden können, um Rechengeschwindigkeiten zu optimieren.

Für Machine Learning-Modelle, die kein verteiltes Training erfordern, finden Sie unter Trainieren von Modellen mit Azure Machine Learning Informationen über die verschiedenen Möglichkeiten zum Trainieren von Modellen mithilfe des Python-SDK.

Datenparallelität

Datenparallelität lässt sich einfacher als der andere Ansatz für verteiltes Training implementieren und ist für die meisten Anwendungsfälle ausreichend.

Bei diesem Ansatz teilen Sie die Daten in Partitionen auf, wobei die Anzahl der Partitionen der Gesamtzahl der verfügbaren Knoten im Computecluster oder serverlosen Compute entspricht. Sie kopieren das Modell in jeden dieser Arbeitsknoten, und jeder Knoten arbeitet mit einer eigenen Teilmenge der Daten. Beachten Sie, dass jeder Knoten das Modell unterstützen muss, das trainiert wird. Das heißt, das gesamte Modell muss auf jeden Knoten passen.

Im folgenden Diagramm wird diese Vorgehensweise veranschaulicht.

Diagramm des Datenparallelismus mit dem Modell, das in Workerknoten kopiert wurde.

Jeder Knoten berechnet eigenständig die Fehler (Abweichungen) zwischen den Vorhersagen für die Trainingsbeispiele und den gekennzeichneten Ausgaben. Jeder Knoten wiederum aktualisiert sein Modell basierend auf den Fehlern. Er muss alle seine Änderungen an die anderen Knoten übermitteln, damit diese ihre entsprechenden Modelle aktualisieren. Die Workerknoten müssen die Modellparameter (oder Gradienten) am Ende der Batchberechnung synchronisieren, um sicherzustellen, dass sie ein konsistentes Modell trainieren.

Modellparallelität

Im Modellparallelismus, auch als Netzwerkparallelität bezeichnet, segmentieren Sie das Modell in verschiedene Teile, die gleichzeitig auf verschiedenen Knoten ausgeführt werden. Jeder Teil wird auf denselben Daten ausgeführt. Die Skalierbarkeit dieser Methode hängt vom Grad der Task-Parallelisierung des Algorithmus ab. Es ist komplexer zu implementieren als Datenparallelität.

Bei Modellparallelität müssen die Workerknoten nur die freigegebenen Parameter synchronisieren, in der Regel einmal für jeden Vorwärtspropagierungs- oder Rückpropagierungsschritt. Außerdem sind größere Modelle ohne Belang, da jeder Knoten in einem Unterabschnitt des Modells mit denselben Trainingsdaten arbeitet.