Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leert u meer over gedistribueerde training en hoe Azure Machine Learning dit ondersteunt voor Deep Learning-modellen.
In gedistribueerde training splitst u de workload op om een model te trainen en te delen tussen meerdere miniprocessors, werkknooppunten genoemd. Deze werkknooppunten werken parallel om modeltraining te versnellen. U kunt gedistribueerde training gebruiken voor traditionele machine learning-modellen, maar het 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: gegevensparallelisme 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.
Data-parallelisme
Gegevensparallellisme is het eenvoudigst te implementeren van de twee gedistribueerde trainingsmethoden en is voldoende voor de meeste gebruiksvoorbeelden.
In deze benadering verdeelt u de gegevens in partities, waarbij het aantal partities gelijk is aan het totale aantal beschikbare knooppunten in het rekencluster of serverloze berekening. U kopieert het model 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.
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 gradiƫnten aan het einde van de batchberekening synchroniseren om ervoor te zorgen dat er een consistent model wordt getraind.
Modelparallelisme
In modelparallelisme, ook wel netwerkparallelisme genoemd, segmenteert u het model in verschillende onderdelen die gelijktijdig op verschillende knooppunten worden uitgevoerd. Elk onderdeel wordt uitgevoerd op dezelfde gegevens. De schaalbaarheid van deze methode is afhankelijk van de mate van taakparallelisatie van het algoritme. Het is complexer om te implementeren dan gegevensparallellisme.
In modelparallelisme hoeven werkknooppunten alleen de gedeelde parameters te synchroniseren, meestal eenmalig bij iedere stap van de voorwaartse of achterwaartse doorvoer. Grotere modellen zijn ook geen probleem, omdat elk knooppunt werkt op een subsectie van het model op dezelfde trainingsgegevens.