Udostępnij przez


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 należy podzielić obciążenie, aby wytrenować model i udostępnić go między wiele mini procesorów nazywanych węzłami roboczymi. Te węzły robocze działają równolegle, aby przyspieszyć trenowanie modelu. Można użyć trenowania rozproszonego dla 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ą dzielone na partycje, w których liczba partycji jest równa całkowitej liczbie dostępnych węzłów w klastrze obliczeniowym lub bezserwerowych obliczeniach. Kopiujesz model w każdym z tych węzłów roboczych, a każdy węzeł działa na swoim własnym podzestawie danych. Należy pamiętać, że każdy węzeł musi posiadać pojemność do obsługi trenowanego modelu, czyli cały model musi zmieścić się w każdym węźle.

Na poniższym diagramie przedstawiono to podejście.

Diagram równoległości danych przedstawiający model skopiowany do węzłów roboczych.

Każdy węzeł niezależnie oblicza błędy między swoimi przewidywaniami dla próbek treningowych a oznaczonymi wynikami. 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 robocze muszą synchronizować parametry modelu lub gradienty na końcu obliczeń partii, aby upewnić się, że trenują spójny model.

Równoległość modelu

Równoległość modelu, znana również jako równoległość sieci, dzieli model na różne części, które są uruchamiane współbieżnie na różnych węzłach. Każda część jest uruchamiana na tych samych danych. Skalowalność tej metody zależy od stopnia równoległości zadania algorytmu. Implementacja jest bardziej skomplikowana niż równoległość danych.

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