PyTorch
PyTorch to otwartoźródłowy framework do uczenia maszynowego opracowany przez Meta AI, znany ze swojej elastyczności, dynamicznych grafów obliczeniowych, akceler...
Horovod to solidne, otwarte oprogramowanie do rozproszonego uczenia głębokiego, stworzone w celu umożliwienia wydajnego skalowania na wielu GPU lub maszynach. Wspiera TensorFlow, Keras, PyTorch i MXNet, optymalizując szybkość i skalowalność treningu modeli uczenia maszynowego.
Horovod został zaprojektowany, aby optymalizować szybkość, skalowalność i alokację zasobów podczas treningu modeli uczenia maszynowego. Jego kluczowy mechanizm — algorytm Ring-AllReduce — wydajnie zarządza komunikacją danych, minimalizując konieczne zmiany w kodzie przy skalowaniu z pojedynczego węzła do środowisk wielowęzłowych.
Horovod został wprowadzony przez Uber w 2017 roku jako część wewnętrznej platformy ML-as-a-service, Michelangelo. Narzędzie powstało, aby rozwiązać problemy ze skalowaniem w standardowej, rozproszonej konfiguracji TensorFlow, która nie spełniała szerokich potrzeb Ubera. Architektura Horovod została zaprojektowana w celu radykalnego skrócenia czasu treningu, umożliwiając płynne rozproszone uczenie.
Obecnie Horovod jest utrzymywany w ramach AI Foundation Linux Foundation, co odzwierciedla jego szeroką akceptację i ciągły rozwój w społeczności open source.
Niezależność od frameworka
Integruje się z wieloma frameworkami uczenia głębokiego, umożliwiając programistom stosowanie jednolitego podejścia do rozproszonego treningu w różnych narzędziach. Zmniejsza to próg wejścia dla deweloperów obeznanych z jednym frameworkiem, którzy muszą pracować w zróżnicowanych środowiskach.
Algorytm Ring-AllReduce
Klucz do wydajności Horovod — algorytm ten realizuje uśrednianie gradientów pomiędzy węzłami z minimalnym wykorzystaniem przepustowości, ograniczając narzut komunikacyjny podczas treningu na dużą skalę.
Łatwość użycia
Upraszcza przejście od treningu na pojedynczym GPU do wielu GPU, wymagając minimalnych zmian w kodzie. Obejmuje istniejące optymalizatory i wykorzystuje Message Passing Interface (MPI) do komunikacji między procesami.
Świadomość GPU
Wykorzystuje bibliotekę NCCL firmy NVIDIA do optymalizacji komunikacji GPU-GPU, zapewniając szybkie przesyłanie danych i efektywne zarządzanie pamięcią — co jest kluczowe dla dużych, wielowymiarowych zbiorów danych.
Aby zainstalować Horovod:
Wymagania:
Polecenie instalacyjne:
pip install horovod[tensorflow,keras,pytorch,mxnet]
Zmiennie środowiskowe dla frameworków:
Ustaw takie zmienne środowiskowe jak HOROVOD_WITH_TENSORFLOW=1, aby kontrolować wsparcie dla wybranych frameworków podczas instalacji.
Horovod jest szeroko stosowany tam, gdzie wymagane jest szybkie iterowanie i trening modeli:
Automatyzacja AI i chatboty:
W aplikacjach opartych o AI, takich jak chatboty, szybszy trening modeli NLP przyspiesza cykl wdrożeniowy produktu.
Samochody autonomiczne:
W Uberze Horovod jest wykorzystywany przy tworzeniu modeli ML dla autonomicznych pojazdów, gdzie duże zbiory danych i złożone modele wymagają rozproszonego treningu.
Wykrywanie oszustw i prognozowanie:
Wydajność Horovod w pracy z dużymi zbiorami danych sprawia, że jest idealny dla sektora finansowego i platform e-commerce, gdzie szybki trening modeli na danych transakcyjnych, wykrywanie oszustw i prognozowanie trendów jest kluczowe.
Przykład: Integracja Horovod ze skryptem treningowym TensorFlow:
import tensorflow as tf
import horovod.tensorflow as hvd
# Inicjalizacja Horovod
hvd.init()
# Przypisanie GPU do przetwarzania lokalnego ranku
config = tf.ConfigProto()
config.gpu_options.visible_device_list = str(hvd.local_rank())
# Budowanie modelu
model = ... # Zdefiniuj tutaj swój model
optimizer = tf.train.AdagradOptimizer(0.01)
# Dodanie rozproszonego optymalizatora Horovod
optimizer = hvd.DistributedOptimizer(optimizer)
# Rozgłoszenie początkowych wartości zmiennych z rangi 0 do pozostałych procesów
hvd.broadcast_global_variables(0)
# Pętla treningowa
for epoch in range(num_epochs):
# Kod treningowy
...
Horovod Timeline:
Profiluje rozproszone zadania treningowe, aby zidentyfikować wąskie gardła wydajności. Uwaga: włączenie tej funkcji może zmniejszyć przepustowość — używaj rozważnie.
Elastyczny trening:
Umożliwia dynamiczne dostosowywanie zasobów podczas treningu — szczególnie przydatne w środowiskach chmurowych, gdzie zasoby mogą się zmieniać.
Horovod jest hostowany na GitHubie, z silną społecznością współtwórców i użytkowników. Jako część Linux Foundation AI, deweloperzy są zachęcani do współtworzenia projektu. Ponad 14 000 gwiazdek i liczne forki podkreślają kluczową rolę Horovod w rozproszonym uczeniu.
Horovod upraszcza rozproszone uczenie głębokie, rozwiązując dwa główne wyzwania skalowania: narzut komunikacyjny i konieczność modyfikacji kodu.
Efektywna komunikacja między GPU:
Opracowany przez Alexandra Sergeeva i Mike’a Del Balso, Horovod wykorzystuje ring reduction do komunikacji pomiędzy GPU, znacząco ograniczając zmiany kodu wymagane do rozproszonego treningu.
Dostępność:
Umożliwia szybszy, łatwiej dostępny rozproszony trening w TensorFlow i innych frameworkach, ułatwiając naukowcom wyjście poza trening na pojedynczym GPU.
Dowiedz się więcej:
Po więcej informacji sięgnij do publikacji “Horovod: fast and easy distributed deep learning in TensorFlow
.”
Trening modeli NLP:
Publikacja “Modern Distributed Data-Parallel Large-Scale Pre-training Strategies For NLP models” autorstwa Hao Bai opisuje trening równoległy z użyciem PyTorch i Horovod. Badanie podkreśla niezawodność Horovod, zwłaszcza w połączeniu ze strategią mieszanej precyzji Apex, co czyni go skutecznym dla dużych modeli, takich jak GPT-2 z 100 milionami parametrów.
Dynamiczne planowanie:
Publikacja “Dynamic Scheduling of MPI-based Distributed Deep Learning Training Jobs” autorstwa Tima Capesa i in. analizuje dynamiczne planowanie zadań uczenia głębokiego z użyciem architektury pierścieniowej Horovod, pokazując, że umożliwia ona efektywne zatrzymywanie i wznawianie zadań, skracając całkowity czas realizacji i demonstrując elastyczność w złożonych zadaniach uczenia głębokiego.
Zacznij tworzyć własne rozwiązania AI z wykorzystaniem zaawansowanych narzędzi FlowHunt i płynnych integracji.
PyTorch to otwartoźródłowy framework do uczenia maszynowego opracowany przez Meta AI, znany ze swojej elastyczności, dynamicznych grafów obliczeniowych, akceler...
Torch to otwartoźródłowa biblioteka uczenia maszynowego oraz framework do obliczeń naukowych oparty na języku Lua, zoptymalizowany pod kątem zadań związanych z ...
Kubeflow to otwarta platforma uczenia maszynowego (ML) oparta na Kubernetes, upraszczająca wdrażanie, zarządzanie i skalowanie przepływów pracy ML. Oferuje zest...
Zgoda na Pliki Cookie
Używamy plików cookie, aby poprawić jakość przeglądania i analizować nasz ruch. See our privacy policy.