Distribuerad utbildning med Azure Machine Learning

I den här artikeln får du lära dig mer om distribuerad utbildning och hur Azure Machine Learning stöder den för djupinlärningsmodeller.

I distribuerad utbildning delas arbetsbelastningen för att träna en modell upp och delas mellan flera miniprocessorer, så kallade arbetsnoder. Dessa arbetsnoder fungerar parallellt för att påskynda modellträningen. Distribuerad träning kan användas för traditionella maskininlärningsmodeller, men passar bättre för beräknings- och tidsintensiva uppgifter, till exempel djupinlärning för träning av djupa neurala nätverk.

Djupinlärning och distribuerad utbildning

Det finns två huvudsakliga typer av distribuerad träning: dataparallellitet och modellparallellitet. För distribuerad utbildning om djupinlärningsmodeller stöder Azure Machine Learning SDK i Python integreringar med PyTorch och TensorFlow. Båda är populära ramverk som använder dataparallellitet för distribuerad träning och kan använda Horovod för att optimera beräkningshastigheter.

Information om maskininlärningsmodeller som inte kräver distribuerad utbildning finns i Träna modeller med Azure Machine Learning för olika sätt att träna modeller med Python SDK.

Dataparallellitet

Dataparallellitet är det enklaste att implementera de två distribuerade träningsmetoderna och räcker för de flesta användningsfall.

I den här metoden delas data in i partitioner, där antalet partitioner är lika med det totala antalet tillgängliga noder i beräkningsklustret eller serverlös beräkning. Modellen kopieras i var och en av dessa arbetsnoder och varje nod fungerar på sin egen delmängd av data. Tänk på att varje nod måste ha kapacitet för att stödja den modell som tränas, dvs. hela modellen måste få plats på varje nod.

Följande diagram visar den här metoden.

Diagram över dataparrallelism som visar modellen som kopierats till arbetsnoder.

Varje nod beräknar oberoende felen mellan sina förutsägelser för sina träningsexempel och de märkta utdata. Varje nod uppdaterar i sin tur sin modell baserat på felen och måste kommunicera alla sina ändringar till de andra noderna för att uppdatera sina motsvarande modeller. Arbetsnoder måste synkronisera modellparametrarna eller toningarna i slutet av batchberäkningen för att säkerställa att de tränar en consis tältläge l.

Modellparallellitet

I modellparallellitet, även kallat nätverksparallellitet, segmenteras modellen i olika delar som kan köras samtidigt i olika noder, och var och en körs på samma data. Skalbarheten för den här metoden beror på graden av uppgiftsparallellisering av algoritmen och det är mer komplext att implementera än dataparallellitet.

I modellparallellitet behöver arbetsnoder bara synkronisera de delade parametrarna, vanligtvis en gång för varje steg för framåt- eller bakåtspridning. Dessutom är större modeller inte ett problem eftersom varje nod körs på en underavsnitt av modellen på samma träningsdata.