Gedistribueerde training met Azure Machine Learning

In dit artikel leert u meer over gedistribueerde training en hoe Azure Machine Learning dit ondersteunt voor Deep Learning-modellen.

In gedistribueerde training wordt de workload voor het trainen van een model gesplitst en gedeeld tussen meerdere miniprocessors, werkknooppunten genoemd. Deze werkknooppunten werken parallel om modeltraining te versnellen. Gedistribueerde training kan worden gebruikt voor traditionele machine learning-modellen, maar is beter geschikt voor reken- en tijdintensieve taken, zoals deep learning voor het trainen van deep neurale netwerken.

Deep Learning en gedistribueerde training

Er zijn twee hoofdtypen gedistribueerde training: parallelle uitvoering van gegevens en modelparallelisme. Voor gedistribueerde training over deep learning-modellen ondersteunt de Azure Machine Learning SDK in Python integraties met PyTorch en TensorFlow. Beide zijn populaire frameworks die gebruikmaken van gegevensparallellisme voor gedistribueerde training en kunnen Horovod gebruiken om de rekensnelheden te optimaliseren.

Zie Modellen trainen met Azure Machine Learning voor verschillende manieren om modellen te trainen met behulp van de Python SDK voor machine learning-modellen waarvoor geen gedistribueerde training is vereist.

Parallelle uitvoering van gegevens

Gegevensparallellisme is het eenvoudigst te implementeren van de twee gedistribueerde trainingsmethoden en is voldoende voor de meeste gebruiksvoorbeelden.

In deze benadering worden de gegevens onderverdeeld in partities, waarbij het aantal partities gelijk is aan het totale aantal beschikbare knooppunten in het rekencluster of serverloze berekening. Het model wordt gekopieerd in elk van deze werkknooppunten en elk knooppunt werkt op een eigen subset van de gegevens. Houd er rekening mee dat elk knooppunt de capaciteit moet hebben om het model te ondersteunen dat wordt getraind, dat wil gezegd, het hele model moet op elk knooppunt passen.

Het volgende diagram laat deze benadering zien.

Diagram van gegevensparrallelisme met het model dat is gekopieerd naar werkknooppunten.

Elk knooppunt berekent onafhankelijk de fouten tussen de voorspellingen voor de trainingsvoorbeelden en de gelabelde uitvoer. Elk knooppunt werkt op zijn beurt het model bij op basis van de fouten en moet alle wijzigingen aan de andere knooppunten doorgeven om de bijbehorende modellen bij te werken. Werkknooppunten moeten de modelparameters of kleurovergangen aan het einde van de batchberekening synchroniseren om ervoor te zorgen dat ze een consis trainen tentmodus l.

Modelparallelisme

In modelparallellisme, ook wel netwerkparallelisme genoemd, wordt het model gesegmenteerd in verschillende onderdelen die gelijktijdig in verschillende knooppunten kunnen worden uitgevoerd en elke model wordt uitgevoerd op dezelfde gegevens. De schaalbaarheid van deze methode is afhankelijk van de mate van taakparallellisatie van het algoritme en het is complexer om te implementeren dan gegevensparallellisme.

In modelparallellisme hoeven werkknooppunten alleen de gedeelde parameters te synchroniseren, meestal één keer voor elke stap voor voor- of achterwaartse doorgifte. Grotere modellen zijn ook geen probleem, omdat elk knooppunt werkt op een subsectie van het model op dezelfde trainingsgegevens.