Udostępnij za pośrednictwem


Trenowanie rozproszone za pomocą usługi Azure Machine Learning

Z tego artykułu dowiesz się więcej na temat trenowania rozproszonego i sposobu, w jaki usługa Azure Machine Learning obsługuje go na potrzeby modeli uczenia głębokiego.

W trenowaniu rozproszonym obciążenie do trenowania modelu jest dzielone i współdzielone między wiele mini procesorów nazywanych węzłami roboczymi. Te węzły robocze działają równolegle, aby przyspieszyć trenowanie modelu. Trenowanie rozproszone może służyć do tradycyjnych modeli uczenia maszynowego, ale lepiej nadaje się do zadań wymagających obliczeń i czasu, takich jak uczenie głębokie na potrzeby trenowania głębokich sieci neuronowych.

Uczenie głębokie i trenowanie rozproszone

Istnieją dwa główne typy trenowania rozproszonego: równoległość danych i równoległość modelu. W przypadku trenowania rozproszonego w modelach uczenia głębokiego zestaw SDK usługi Azure Machine Learning w języku Python obsługuje integracje z bibliotekami PyTorch i TensorFlow. Obie są popularnymi strukturami, które wykorzystują równoległość danych do trenowania rozproszonego i mogą używać struktury Horovod do optymalizowania szybkości obliczeń.

Aby zapoznać się z modelami uczenia maszynowego, które nie wymagają trenowania rozproszonego, zobacz Trenowanie modeli za pomocą usługi Azure Machine Learning , aby poznać różne sposoby trenowania modeli przy użyciu zestawu SDK języka Python.

Równoległość danych

Równoległość danych jest najłatwiejsza do zaimplementowania dwóch metod trenowania rozproszonego i jest wystarczająca dla większości przypadków użycia.

W tym podejściu dane są podzielone na partycje, w których liczba partycji jest równa całkowitej liczbie dostępnych węzłów w klastrze obliczeniowym lub bezserwerowych obliczeniach. Model jest kopiowany w każdym z tych węzłów procesu roboczego, a każdy węzeł działa we własnym podzestawie danych. Należy pamiętać, że każdy węzeł musi mieć pojemność do obsługi trenowanego modelu, czyli całego modelu musi zmieścić się w każdym węźle.

Na poniższym diagramie przedstawiono to podejście.

Diagram parrallelizmu danych przedstawiający model skopiowany do węzłów roboczych.

Każdy węzeł niezależnie oblicza błędy między przewidywaniami dla przykładów treningowych i oznaczonych etykietami danych wyjściowych. Z kolei każdy węzeł aktualizuje swój model na podstawie błędów i musi komunikować się ze wszystkimi zmianami w innych węzłach, aby zaktualizować odpowiednie modele. Węzły procesu roboczego muszą synchronizować parametry modelu lub gradienty na końcu obliczeń wsadowych, aby upewnić się, że są trenowane consis tryb namiotu l.

Równoległość modelu

W przypadku równoległości modelu, znanej również jako równoległość sieci, model jest podzielony na różne części, które mogą być uruchamiane współbieżnie w różnych węzłach, a każdy z nich działa na tych samych danych. Skalowalność tej metody zależy od stopnia równoległości zadania algorytmu i jest bardziej skomplikowane do zaimplementowania niż równoległość danych.

W przypadku równoległości modelu węzły procesu roboczego muszą synchronizować tylko parametry współużytkowane, zwykle raz dla każdego kroku propagacji do przodu lub do tyłu. Ponadto większe modele nie są problemem, ponieważ każdy węzeł działa w podsekcji modelu na tych samych danych treningowych.