Jak firma Latent Space wykorzystała bibliotekę równoległości modelu Amazon SageMaker, aby przesunąć granice transformatorów wielkoskalowych

Węzeł źródłowy: 1204406

Współautorami tego bloga są Sarah Jane Hong CSO, Darryl Barnhart CTO i Ian Thompson CEO Latent Space i Prem Ranga z AWS.

Ukryta przestrzeń to ukryta reprezentacja abstrakcyjnych idei, których uczą się modele uczenia maszynowego (ML). Na przykład „pies”, „kwiat” lub „drzwi” to pojęcia lub lokalizacje w ukrytej przestrzeni. W Utajona przestrzeń, pracujemy nad silnikiem, który pozwoli ci manipulować tą przestrzenią i eksplorować ją za pomocą podpowiedzi językowych i wizualnych. Zespół Latent Space wywodzi się z dwóch dziedzin, które od dawna w niewielkim stopniu się pokrywają: grafiki i przetwarzania języka naturalnego (NLP). Tradycyjnie modalności obrazów i tekstu były obsługiwane osobno, każdy z własną historią złożonej, kosztownej i delikatnej inżynierii funkcji. Zadania NLP, takie jak rozumienie dokumentów lub odpowiadanie na pytania, zwykle mają niewiele wspólnego z zadaniami wizyjnymi, takimi jak rozumienie lub renderowanie scen, i zwykle używamy bardzo różnych podejść i modeli do każdego zadania. Ale to szybko się zmienia.

To połączenie modalności w jednej wspólnej, ukrytej przestrzeni otwiera nową generację kreatywnych i komercyjnych aplikacji, od gier po rozumienie dokumentów. Jednak odblokowanie tych nowych aplikacji w jednym modelu otwiera nowe wyzwania związane ze skalowaniem, co zostało podkreślone w „Gorzkiej lekcji” Richarda Suttona oraz w ekscytującej pracy z ostatnich kilku lat nad prawami skalowania. Aby było to możliwe, Latent Space pracuje nad przełomowymi badaniami nad połączeniem tych modalności w jednym modelu, ale także nad skalowaniem i wydajnym działaniem. W tym miejscu pojawia się paralelizm modeli.

Amazon Sage MakerUnikalne zautomatyzowane partycjonowanie modeli i wydajne podejście do potoków umożliwiły przyjęcie równoległości modeli przy niewielkim wysiłku inżynieryjnym. Skalowaliśmy nasze szkolenie modeli do ponad 1 miliarda parametrów (używamy p4d.24xlarge A100 instancje), co jest dla nas ważnym wymogiem. Ponadto zaobserwowaliśmy, że podczas treningu z konfiguracją treningową z 16 węzłami i ośmioma GPU z biblioteką równoległości modelu SageMaker odnotowaliśmy 38% poprawę wydajności w porównaniu z naszymi poprzednimi przebiegami szkoleniowymi.

Wyzwania związane ze szkoleniem transformatorów wielkoskalowych

W Latent Space łączymy język i wizję w modelach transformatorów z miliardami parametrów, aby wspierać przypadki użycia „poza dystrybucją” z wyobraźni użytkownika lub takie, które miałyby miejsce w prawdziwym świecie, ale nie w naszych danych szkoleniowych. Z wyzwaniami nieodłącznie związanymi ze skalowaniem do miliardów parametrów i nie tylko radzimy sobie na dwa różne sposoby:

Techniki wyszukiwania informacji od dawna są kluczowym elementem wyszukiwarek i zadań zapewniania jakości. Ostatnio poczyniono ekscytujące postępy w łączeniu klasycznych technik podczerwieni z nowoczesnymi transformatorami, szczególnie w przypadku zadań odpowiadających na pytania, w których model jest szkolony wspólnie z urządzeniem do wyszukiwania neuronowego, które uczy się pobierać odpowiednie dokumenty, aby pomóc w odpowiadaniu na pytania. Aby zapoznać się z przeglądem, zobacz najnowsze prace FAIR w Retrieval Augmented Generation: usprawnienie tworzenia inteligentnych modeli przetwarzania języka naturalnego i Fusion-in-Dekoder, Google Brain's KRÓLESTWOi Nvidię Odzyskiwanie neuronów do odpowiedzi na pytania.

Chociaż techniki wspomagane odzyskiwaniem pomagają w obniżaniu kosztów i wydajności, nadal nie jesteśmy w stanie dopasować modelu do jednego GPU dla naszego największego modelu. Oznacza to, że musimy użyć równoległości modelu, aby go wytrenować. Jednak ze względu na naturę naszej architektury pobierania zaprojektowanie podziału modelu było trudne ze względu na współzależności między pobranymi kontekstami w danych wejściowych szkolenia. Co więcej, nawet jeśli określimy, w jaki sposób podzielimy nasz model, wprowadzenie równoległości modeli było dla nas znaczącym zadaniem inżynieryjnym, który musieliśmy wykonać ręcznie w całym cyklu życia badań i rozwoju.

Biblioteka równoległości modelu SageMaker

Równoległość modeli to proces dzielenia modelu na wiele urządzeń lub węzłów (takich jak instancje wyposażone w GPU) i tworzenia wydajnego potoku do trenowania modelu na tych urządzeniach w celu maksymalizacji wykorzystania GPU. Plik biblioteka równoległości modelu w SageMaker sprawia, że ​​równoległość modeli jest bardziej dostępna, zapewniając zautomatyzowane dzielenie modelu, zwane również automatyczne partycjonowanie modelu i wyrafinowane planowanie przebiegu potoków. Algorytmy dzielenia modelu mogą być optymalizowane pod kątem szybkości lub zużycia pamięci. Biblioteka wykorzystuje algorytm partycjonowania, który równoważy pamięć, minimalizuje komunikację między urządzeniami i optymalizuje wydajność.

Zautomatyzowane partycjonowanie modeli

W naszym przypadku użycia PyTorch biblioteka równoległa modelu wewnętrznie uruchamia krok śledzenia (w pierwszym kroku szkoleniowym), który konstruuje wykres modelu i określa tensor i kształty parametrów. Następnie konstruuje drzewo, które składa się z zagnieżdżonych plików nn.Module obiekty w modelu, a także dodatkowe dane zebrane podczas śledzenia, takie jak ilość przechowywanych nn.Parametersi środowisko wykonawcze dla każdego nn.Module.

Biblioteka następnie przechodzi przez to drzewo z katalogu głównego i uruchamia algorytm partycjonowania, który równoważy obciążenie obliczeniowe i użycie pamięci oraz minimalizuje komunikację między instancjami. Jeśli wiele modułów nn.Modules ma ten sam parametr nn.Parameter, moduły te są umieszczane na tym samym urządzeniu, aby uniknąć utrzymywania wielu wersji tego samego parametru. Po podjęciu decyzji o partycjonowaniu przypisane moduły i wagi są ładowane do ich urządzeń.

Planowanie przebiegu potoku

Inną podstawową funkcją biblioteki równoległej modelu rozproszonego SageMaker jest rurociągi, które określają kolejność wykonywania obliczeń i przetwarzania danych na różnych urządzeniach podczas uczenia modelu. Pipelining polega na podzieleniu mini-partii na mikroparty, które są kolejno wprowadzane do potoku szkoleniowego i zgodnie z harmonogramem uruchamiania określonym przez środowisko wykonawcze biblioteki.

Potok mikropróbki zapewnia pełne wykorzystanie wszystkich procesorów graficznych, co musielibyśmy sami zbudować, ale dzięki bibliotece równoległości modeli dzieje się to bezproblemowo za kulisami. Wreszcie możemy użyć Amazona FSx, co jest ważne, aby zapewnić szybkie prędkości odczytu, biorąc pod uwagę liczbę plików odczytywanych podczas uczenia modelu multimodalnego z pobieraniem.

Architektura szkoleniowa

Poniższy diagram przedstawia, w jaki sposób konfigurujemy naszą architekturę szkoleniową. Naszym głównym celem było zwiększenie szybkości szkolenia i obniżenie kosztów. Przetwarzane przez nas transformatory obrazu i języka są bardzo złożone, ze znaczną liczbą warstw i wag wewnątrz, obsługujących miliardy parametrów, co sprawia, że ​​nie są one w stanie zmieścić się w pamięci pojedynczego węzła. Każdy węzeł zawiera podzbiór modelu, przez który przepływa dane i transformacje są udostępniane i kompilowane. Ustawiamy 16 p4d.24xduży instancje, każdy z ośmioma procesorami graficznymi przy użyciu następującej reprezentacji architektury:

Kiedy skalujemy nasze modele, powszechnym trendem jest przechowywanie wszystkiego w wagach sieci. Jednak ze względów praktycznych chcemy rozszerzyć nasze modele, aby nauczyć się szukać odpowiednich kontekstów, aby pomóc w zadaniu renderowania. Dzięki temu możemy obniżyć koszty obsługi bez uszczerbku dla jakości obrazu. Używamy dużego modelu NLP opartego na transformatorze i jak wspomniano wcześniej, zaobserwowaliśmy 38% wzrost wydajności uczenia dzięki bibliotece równoległości modelu SageMaker, jak pokazano poniżej:

  • Potrzebujemy allreduce dla każdego obliczenia w przypadku równoległości poziomu tensorów. To wymaga O (log_2 n) równoległych kroków. To znaczy n maszyn wykonujących O (n) kroków, dla O (n log_2 n) operacji ogółem.
  • W przypadku paralelizmu potoków wymagamy O (1) równoległych kroków do przekazywania danych w dół potoku
  • Biorąc pod uwagę 16 maszyn z ośmioma GPU, mamy koszt O (1) dla równoległego potoku i O (log_2 (8)) = O (3) koszt dla równoległego modelu wgłębnego.
  • W tym przypadku widzimy, że koszt sieci jest zmniejszony do 1/3 poprzez przełączenie na równoległe potoki tego, czego używamy z równoległością modeli SageMaker, a całkowity koszt szkolenia zmniejsza się do 1/2 + 1/2 * 1 / log_2 (16 ) = 0.625 pierwotnego kosztu prowadzącego do odpowiedniej poprawy wydajności.

Ogólnie rzecz biorąc, gdy potrzeba wymaga szkolenia rozproszonego (problemy ze skalowaniem rozmiaru modelu lub danych szkoleniowych), możemy zastosować zestaw najlepszych praktyk, aby określić, które podejście działa najlepiej.

Najlepsze praktyki dotyczące szkoleń rozproszonych

Opierając się na naszym doświadczeniu, sugerujemy rozpoczęcie od rozproszonego podejścia równoległego do danych. Rozproszona równoległość danych, taka jak SageMaker rozproszona równoległa biblioteka danych rozwiązuje większość problemów z siecią w przypadku replik modeli, dlatego należy dopasować modele do jak najmniejszej liczby węzłów, a następnie wykonać replikację w celu skalowania rozmiaru partii w razie potrzeby.

Jeśli zabraknie Ci pamięci podczas treningu, tak jak to zrobiliśmy w tym scenariuszu, możesz przełączyć się na podejście równoległe w modelu. Jednak rozważ te alternatywy przed wypróbowaniem modelowania treningu równoległego:

  • Na sprzęcie wyposażonym w NVIDIA Tensor Core użyj trening mieszanej precyzji aby przyspieszyć i zmniejszyć zużycie pamięci.
  • Zmniejsz rozmiar wsadu (lub zmniejsz rozdzielczość obrazu lub długość sekwencji NLP, jeśli to możliwe).

Ponadto preferujemy projekty modeli, które nie mają normalizacji wsadowej, jak opisano w Wysokowydajne rozpoznawanie obrazów na dużą skalę bez normalizacji. Jeśli nie można tego uniknąć, upewnij się, że normalizacja wsadowa jest zsynchronizowana między urządzeniami. Kiedy korzystasz z rozproszonego uczenia, Twoja partia jest dzielona na GPU, więc dokładne statystyki wsadowe wymagają synchronizacji na wszystkich urządzeniach. Bez tego normalizacja zwiększyłby błąd, a tym samym osłabiłaby konwergencję.

Zacznij od trenowania równoległego modelu, jeśli masz następujące ograniczenia:

  • Twój model nie mieści się na jednym urządzeniu
  • Ze względu na rozmiar modelu napotykasz ograniczenia w wyborze większych rozmiarów partii, na przykład jeśli ciężary modelu zajmują większość pamięci GPU i jesteś zmuszony wybrać mniejszy, nieoptymalny rozmiar partii

Podczas optymalizacji pod kątem wydajności wykonaj następujące czynności:

  • Użyj pipeliningu do komunikacji między węzłami, aby zminimalizować opóźnienia i zwiększyć przepustowość
  • Rurociągi powinny być jak najkrótsze, aby zminimalizować wszelkie pęcherzyki. Liczba mikropróbek powinna być tak dobrana, aby zrównoważyć wydajność obliczeniową z rozmiarem pęcherzyków i odpowiadać co najmniej długości rurociągu. W razie potrzeby możesz utworzyć mikrobatche na poziomie tokenów, jak opisano w TeraPipe: paralelizm potoku na poziomie tokenu do szkolenia modeli językowych na dużą skalę

Podczas optymalizacji pod kątem kosztów użyj do szkolenia instancji Spot zarządzanych przez SageMaker. Może to zoptymalizować koszt modeli szkoleniowych nawet o 90% w porównaniu z instancjami na żądanie. SageMaker zarządza przerwami Spot w Twoim imieniu.

Inne czynniki do rozważenia:

  • W węźle, gdy istnieje szybkie połączenie międzysieciowe, jest on bardziej zniuansowany. Jeśli istnieje wystarczająca przepustowość sieci wewnątrz węzła, przetasowanie danych w celu uzyskania bardziej optymalnych obliczeń może przynieść korzyści.
  • Jeśli aktywacje są znacznie większe niż tensory wagi, pomocny może być również optymalizator podzielony na fragmenty. Należy zapoznać się Zero by uzyskać więcej szczegółów.

W poniższej tabeli przedstawiono niektóre typowe scenariusze skalowania szkolenia i sposób ich konfigurowania w usłudze AWS.

Scenariusz Kiedy to obowiązuje? Rozwiązanie
Skalowanie od pojedynczego GPU do wielu GPU Gdy ilość danych uczących lub rozmiar modelu jest zbyt duży Zmień na instancję z wieloma GPU, taką jak p3.16xlarge, która ma osiem procesorów graficznych, z danymi i przetwarzaniem podzielonymi na osiem GPU, co zapewnia prawie liniowe przyspieszenie w czasie potrzebnym do wytrenowania modelu.
Skalowanie z jednej instancji do wielu instancji Gdy potrzeba skalowania wykracza poza zmianę rozmiaru instancji Skaluj liczbę instancji za pomocą funkcji estymatora SageMaker Python SDK, ustawiając parametr instance_type na p3.16xlarge i instance_count na 2. Zamiast ośmiu GPU na pojedynczym p3.16xlarge, masz 16 GPU w dwóch identycznych instancjach. Rozważ użycie SageMaker rozproszona równoległa biblioteka danych.
Wybór modelu równoległego podejścia do treningu Podczas napotykania błędów braku pamięci podczas treningu Przełącz się na podejście równoległe modelu przy użyciu Biblioteka równoległa modelu rozproszonego SageMaker.
Wydajność sieci w komunikacji między węzłami W przypadku szkolenia rozproszonego z wieloma instancjami (na przykład komunikacja między węzłami w klastrze podczas wykonywania operacji AllReduce) Twoje instancje muszą znajdować się w tym samym regionie i tej samej strefie dostępności. Gdy używasz SageMaker Python SDK, jest to obsługiwane za Ciebie. Twoje dane treningowe również powinny znajdować się w tej samej Strefie dostępności. Rozważ użycie SageMaker rozproszona równoległa biblioteka danych.
Zoptymalizowany procesor graficzny, sieć i pamięć masowa Do rozproszonych potrzeb szkoleniowych na dużą skalę Instancja typu p4d.24xlarge została zaprojektowana z myślą o szybkiej lokalnej pamięci masowej i szybkiej sieciowej płycie bazowej do 400 gigabitów i zdecydowanie zalecamy ją jako najbardziej wydajną opcję do szkolenia rozproszonego.

Wnioski

Dzięki bibliotece równoległej modeli w SageMaker otrzymujemy wiele korzyści po wyjęciu z pudełka, takich jak automatyczne partycjonowanie modeli i wydajne przetwarzanie potokowe. W tym poście podzieliliśmy się naszymi wyzwaniami z naszym przypadkiem użycia ML, naszymi rozważaniami na temat różnych podejść szkoleniowych oraz sposobem wykorzystania biblioteki równoległości modelu Amazon SageMaker, aby przyspieszyć nasze szkolenie. A co najważniejsze, przyjęcie najlepszych rozwiązań dotyczących równoległości modeli i ulepszeń wydajności opisanych tutaj może zająć tylko kilka godzin. Jeśli ten post pomoże Ci lub zainspiruje Cię do rozwiązania problemu, chcielibyśmy o tym usłyszeć! Podziel się swoimi komentarzami i opiniami.

Referencje

Aby uzyskać więcej informacji, zobacz:


O autorach

Prem Ranga jest architektem rozwiązań dla przedsiębiorstw z siedzibą w Atlancie w stanie Georgia. Jest częścią społeczności technicznej uczenia maszynowego i uwielbia pracować z klientami w ich podróży ML i AI. Prem jest pasjonatem robotyki, jest badaczem pojazdów autonomicznych, a także zbudował sterowane przez Alexę Beer Pours w Houston i innych lokalizacjach.

Sarah Jane Hong jest współzałożycielem i Chief Science Officer w Latent Space. Jej przeszłość leży na styku interakcji człowiek-komputer i uczenia maszynowego. Wcześniej kierowała badaniami NLP w firmie Sonar (przejętej przez Marchex), która obsługuje biznesy w konwersacyjnej przestrzeni AI. Jest także cenionym programistą AR / VR, otrzymując nagrody i stypendia od Oculus, Mozilla Mixed Reality i Microsoft Hololens.

Darryla Barnharta jest współzałożycielem i dyrektorem ds. technologii w Latent Space. Jest doświadczonym programistą z doświadczeniem w akceleracji GPU, grafice komputerowej, danych na dużą skalę i uczeniu maszynowym. Inne pasje to matematyka, tworzenie gier i nauka informacji.

Iana Thompsona jest założycielem i CEO w Latent Space. Ian jest inżynierem i badaczem zainspirowanym „sąsiednim możliwym” - technologiami, które mają mieć duży wpływ na nasze życie. Obecnie koncentruje się na upraszczaniu i skalowaniu uczenia się reprezentacji multimodalnej, aby pomóc w tworzeniu bezpiecznej i kreatywnej sztucznej inteligencji. Wcześniej pomagał budować firmy w zakresie grafiki / rzeczywistości wirtualnej (AltspaceVR, przejęty przez Microsoft) oraz edukacji / NLP (HSE).

Źródło: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- transformatory wagowe /

Znak czasu:

Więcej z Blog dotyczący uczenia maszynowego AWS