W ciągu ostatnich kilku lat nastąpił szybki rozwój w dziedzinie przetwarzania języka naturalnego (NLP). Chociaż sprzęt uległ poprawie, na przykład dzięki najnowszej generacji akceleratorów firm NVIDIA i Amazon, praktycy zaawansowanego uczenia maszynowego (ML) nadal regularnie napotykają problemy ze skalowaniem swoich dużych modeli językowych na wiele procesorów graficznych.
W tym poście na blogu krótko podsumowujemy powstanie modeli NLP na dużą i małą skalę, głównie poprzez abstrakcję dostarczoną przez Hugging Face i modułowe zaplecze Amazon SageMaker. W szczególności podkreślamy wprowadzenie czterech dodatkowych funkcji w ramach równoległej biblioteki modeli SageMaker, które odblokowują 175 miliardów parametrów wstępnego uczenia i dostrajania modeli NLP dla klientów.
Wykorzystaliśmy tę bibliotekę na platformie szkoleniowej SageMaker i osiągnęliśmy przepustowość 32 próbek na sekundę na 120 ml.p4d.24xlarge instancjach i 175 miliardach parametrów. Przewidujemy, że gdybyśmy zwiększyli tę liczbę do 240 wystąpień, uczenie pełnego modelu zajęłoby 25 dni.
Aby uzyskać więcej informacji na temat równoległości modelu, zobacz artykuł Paralelizm modelu Amazon SageMaker: ogólne i elastyczne ramy szkolenia dużych modeli.
Na naszej stronie możesz również zobaczyć notatnik GPT2, którego użyliśmy do wygenerowania tych wyników Repozytorium GitHub.
Aby dowiedzieć się więcej o tym, jak korzystać z nowych funkcji w modelu równoległym SageMaker, zobacz Rozszerzone funkcje biblioteki modeli równoległych SageMaker dla PyTorch, Używaj z SageMaker Python SDK.
NLP na Amazon SageMaker – Hugging Face i równoległość modelu
Jeśli jesteś nowy w Hugging Face i NLP, najważniejszą rzeczą, o której musisz wiedzieć, jest to, że aplikacje korzystające z przetwarzania języka naturalnego (NLP) zaczynają osiągać wydajność na poziomie człowieka. Jest to w dużej mierze napędzane przez mechanizm uczenia się, tzw Uwaga, co dało początek modelowi głębokiego uczenia się, tzw transformator, który jest znacznie bardziej skalowalny niż poprzednie sekwencyjne metody głębokiego uczenia się. Teraz-słynny modelu BERT został opracowany w celu wykorzystania transformatora i opracował po drodze kilka przydatnych taktyk NLP. Transformatory i zestaw modeli, zarówno w ramach NLP, jak i poza nim, które zostały zainspirowane przez BERT, są główną wyszukiwarką Twoich wyników wyszukiwania Google, w Twoim Wyniki tłumaczenia Google, szereg nowych startupów.
SageMaker i Hugging Face nawiązały współpracę, aby uczynić to łatwiejszym dla klientów niż kiedykolwiek wcześniej. Uruchomiliśmy kontenery do głębokiego uczenia Hugging Face (DLC), abyś mógł trenować i hostować wstępnie wyszkolone modele bezpośrednio z Hugging Face repozytorium ponad 26,000 XNUMX modeli. Uruchomiliśmy Kompilator szkoleń SageMaker aby przyspieszyć czas wykonywania pętli treningowych Hugging Face nawet o 50%. Zintegrowaliśmy się również Flagowy pakiet Transformers SDK Hugging Face w nasze rozproszone biblioteki szkoleniowe aby skalowanie modeli NLP było łatwiejsze niż kiedykolwiek wcześniej.
Aby uzyskać więcej informacji na temat modeli Hugging Face Transformer w Amazon SageMaker, zobacz Obsługa modeli transformatorów do przytulania twarzy.
Nowe funkcje do szkolenia modeli NLP na dużą skalę z równoległą biblioteką modeli SageMaker
Na AWS re:Invent 2020 firma SageMaker uruchomiła rozproszone biblioteki, które zapewniają najlepszą wydajność w chmurze do uczenia komputerowych modeli wizyjnych, takich jak Maska-RCNN i modele NLP, takie jak T5-3B. Jest to możliwe dzięki ulepszonym prymitywom komunikacyjnym, które są o 20-40% szybsze niż NCCL w AWS, oraz technikom dystrybucji modeli, które umożliwiają skalowanie bardzo dużych modeli językowych na dziesiątki, setki, a nawet tysiące procesorów graficznych.
Biblioteka równoległa modeli SageMaker (SMP) zawsze dawała ci możliwość pobrania predefiniowanego modelu NLP w PyTorch, czy to przez Hugging Face, czy gdzie indziej, i podzielenia tego modelu na wiele procesorów graficznych w twoim klastrze. Innymi słowy, SMP dzieli model na mniejsze części, dzięki czemu nie występują błędy braku pamięci (OOM). Cieszymy się, że dodaliśmy dodatkowe techniki oszczędzania pamięci, które są krytyczne w przypadku dużych modeli, a mianowicie:
- Równoległość tensorowa
- Fragmentowanie stanu optymalizatora
- Punkt kontrolny aktywacji
- Odciążanie aktywacji
Możesz połączyć te cztery funkcje, aby efektywniej wykorzystać pamięć i wyszkolić następną generację modeli NLP o ekstremalnej skali.
Uczenie rozproszone i równoległość tensorowa
Aby zrozumieć równoległość tensorów, warto wiedzieć, że istnieje wiele rodzajów treningu rozproszonego lub równoległości. Prawdopodobnie znasz już najpopularniejszy typ, równoległość danych. Rdzeń równoległości danych działa w następujący sposób: dodajesz dodatkowy węzeł do swojego klastra, na przykład przechodząc od jednej do dwóch instancji ml.EC2 w estymatorze SageMaker. Następnie używasz struktury równoległej danych, takiej jak Horovod, PyTorch Distributed Data Parallel lub SageMaker Distributed. Tworzy to repliki twojego modelu, po jednej na akcelerator, i obsługuje podział danych na poszczególne węzły, a także łączy wszystkie wyniki podczas etapu wstecznej propagacji sieci neuronowej. Pomyśl o rozproszonym spadku gradientu. Równoległość danych jest również popularna na serwerach; dzielisz dane na wszystkie procesory graficzne i czasami procesory we wszystkich swoich węzłach. Poniższy diagram ilustruje równoległość danych.
Model równoległości jest nieco inny. Zamiast tworzyć kopie tego samego modelu, dzielimy Twój model na części. Następnie zarządzamy jego uruchomieniem, więc Twoje dane nadal przepływają przez sieć neuronową dokładnie w ten sam sposób matematycznie, ale różne części Twojego modelu znajdują się na różnych procesorach graficznych. Jeśli używasz ml.p3.8xlarge, masz cztery NVIDIA V100, więc prawdopodobnie chciałbyś podzielić swój model na 4 części, po jednej na GPU. Jeśli skoczysz do dwóch ml.p4d.24xlarge, będzie to łącznie 16 A100 w twoim klastrze, więc możesz podzielić swój model na 16 części. Nazywa się to też czasem równoległość rurociągu. Dzieje się tak, ponieważ zestaw warstw w sieci jest podzielony na partycje na procesory graficzne i działa w sposób potokowy, aby zmaksymalizować wykorzystanie procesora graficznego. Poniższy diagram ilustruje równoległość modelu.
Aby równoległość modelu miała miejsce na dużą skalę, potrzebujemy trzeciego typu dystrybucji: równoległość tensorowa. Równoległość tensorów wykorzystuje te same koncepcje o krok dalej — rozdzielamy największe warstwy sieci neuronowej i umieszczamy części samych warstw na różnych urządzeniach. Jest to istotne, gdy pracujesz ze 175 miliardami parametrów lub więcej i próbujesz zmieścić nawet kilka rekordów w pamięci RAM wraz z częściami modelu, aby wytrenować ten transformator. Poniższy diagram ilustruje równoległość tensorów.
Aby włączyć równoległość tensora, ustaw ją w opcjach smp przekazujesz swojemu estymatorowi.
W poprzednim kodzie pipeline_parallel_degree
opisuje, na ile segmentów należy podzielić model w oparciu o równoległość potoku omówioną powyżej. Innym słowem na to jest wyniki.
Aby włączyć równoległość tensorów, ustaw tensor_parallel_degree
do pożądanego poziomu. Upewnij się, że wybierasz liczbę równą lub mniejszą niż liczba GPU na instancję, więc nie większą niż 8 dla maszyn ml.p4d.24xlarge. Aby uzyskać dodatkowe zmiany w skrypcie, zobacz Uruchom zadanie szkolenia równoległego rozproszonego modelu SageMaker z równoległością tensorową.
Parametr ddp odnosi się do rozproszonych danych równoległych. Zwykle włączasz tę opcję, jeśli używasz równoległości danych lub równoległości tensorowej, ponieważ biblioteka równoległości modelu opiera się na DDP dla tych funkcji.
Fragmentowanie stanu optymalizatora, odciążanie aktywacji i punkty kontrolne
Jeśli masz bardzo duży model, potrzebujesz również bardzo dużego stanu optymalizatora. Przygotowanie optymalizatora do SMP jest proste: wystarczy pobrać go z dysku w skrypcie i załadować do pliku smp.DistributedOptimizer()
obiekt.
Upewnij się, że włączysz to w estymatorze przez ustawienie shard_optimizer_state
do Prawdy w smp_options
którego używasz do konfigurowania SMP:
Podobnie jak w przypadku równoległości tensorów i potoków, SMP profiluje model i rozmiar świata (całkowitą liczbę procesorów graficznych we wszystkich węzłach treningowych), aby znaleźć najlepsze strategie rozmieszczenia.
W uczeniu głębokim wyjścia warstwy pośredniej są również nazywane aktywacjami i muszą być przechowywane podczas przekazywania. Dzieje się tak, ponieważ muszą być używane do obliczania gradientu w przejściu wstecznym. W dużym modelu jednoczesne przechowywanie wszystkich tych aktywacji w pamięci może spowodować powstanie znacznych wąskich gardeł pamięci. Aby rozwiązać to wąskie gardło, możesz użyć punkt kontrolny aktywacji, trzecia nowa funkcja w bibliotece równoległości modeli SageMaker. Punkt kontrolny aktywacji lub punkt kontrolny gradientu, to technika zmniejszania zużycia pamięci poprzez usuwanie aktywacji niektórych warstw i ponowne ich obliczanie podczas przejścia wstecz. To skutecznie zamienia dodatkowy czas obliczeń na mniejsze zużycie pamięci.
Wreszcie odciążenie aktywacji bezpośrednio wykorzystuje punkt kontrolny aktywacji. Strategia polega na utrzymywaniu tylko kilku aktywacji tensorów w pamięci RAM procesora graficznego podczas szkolenia modelu. W szczególności przenosimy aktywacje z punktami kontrolnymi do pamięci procesora podczas przejścia w przód i ładujemy je z powrotem do GPU w celu przejścia wstecz określonej mikro-partii.
Mikropartie i strategie lokowania
Inne tematy, które czasami powodują zamieszanie wśród klientów, to mikropartie i strategie lokowania. Oba są hiperparametrami, które możesz dostarczyć do równoległej biblioteki modelu SageMaker. W szczególności mikropartie są istotne przy wdrażaniu modeli opartych na równoległości potoków, takich jak modele o wielkości co najmniej 30 miliardów parametrów.
Mikropartie to podzbiory minipartii. Kiedy model znajduje się w pętli szkoleniowej, definiujesz pewną liczbę rekordów, które mają zostać pobrane i przekazane do przodu i do tyłu przez warstwy — nazywa się to minipartia, a czasem po prostu partia. Pełne przejście przez zestaw danych nazywa się an epoka. Aby uruchamiać przebiegi do przodu i do tyłu z równoległością potoków, biblioteka równoległa modelu SageMaker dzieli partie na mniejsze podzbiory zwane mikropartiami, które są uruchamiane pojedynczo, aby zmaksymalizować wykorzystanie GPU. Wynikowy, znacznie mniejszy zestaw przykładów na GPU, nazywany jest mikro-partiami. W naszym przykładzie GPT-2 dodaliśmy domyślnie 1 mikropartię bezpośrednio do skryptu szkoleniowego.
Zwiększając skalę konfiguracji treningowej, zdecydowanie zaleca się odpowiednią zmianę wielkości partii i wielkości mikropartii. Jest to jedyny sposób na zapewnienie dobrej wydajności: w przypadku polegania na równoległości potoków należy wziąć pod uwagę wielkość partii i rozmiary mikropartii jako funkcję ogólnego rozmiaru świata.
Strategie umieszczania to fizyczne informowanie SageMakera, gdzie umieścić partycje modelu. Jeśli używasz zarówno modelu równoległego, jak i równoległego danych, ustawienie placement_strategy
do “cluster”
umieszcza repliki modeli w identyfikatorach urządzeń (GPU), które są fizycznie blisko siebie. Jeśli jednak naprawdę chcesz bardziej preskrypcyjnie określić swoją strategię równoległości, możesz podzielić ją na pojedynczy ciąg z różnymi kombinacjami trzech liter: D dla równoległości danych, P
wskazuje równoległość potoku i T
dla równoległości tensorowej. Ogólnie zalecamy zachowanie domyślnego rozmieszczenia "cluster"
, ponieważ jest to najbardziej odpowiednie w przypadku uczenia modeli w dużej skali. Umieszczenie „klastra” odpowiada „DPT
".
Aby uzyskać więcej informacji na temat strategii umieszczania, zobacz Strategia umieszczania z równoległością tensorową.
Przykładowy przypadek użycia
Wyobraźmy sobie, że masz jeden plik ml.p3.16xlarge w swoim zadaniu szkoleniowym. To ci daje 8 NVIDIA V100 na węzeł. Pamiętaj, że za każdym razem, gdy dodajesz dodatkową instancję, doświadczasz dodatkowego obciążenia przepustowości, więc zawsze lepiej jest mieć więcej procesorów graficznych w jednym węźle. W takim przypadku lepiej jest mieć jeden ml.p3.16xlarge niż na przykład dwa ml.p3.8xlarge. Mimo że liczba procesorów graficznych jest taka sama, dodatkowe narzuty związane z przepustowością dodatkowego węzła spowalniają przepustowość.
Poniższy diagram ilustruje czterokierunkową równoległość modelu w połączeniu z dwukierunkową równoległością danych. Oznacza to, że faktycznie masz dwie repliki swojego modelu (myśl o danych równoległych), z których każda jest podzielona na cztery GPU (model równoległy).
Jeśli którakolwiek z tych partycji modelowych jest zbyt duża, aby zmieścić się na pojedynczym GPU, możesz dodać dodatkowy typ dystrybucji — równoległość tensorów — aby go wypluć i wykorzystać oba urządzenia.
Wnioski
W tym poście na blogu omówiliśmy rozproszone biblioteki szkoleniowe SageMaker, ze szczególnym uwzględnieniem równoległości modeli. Udostępniliśmy testy porównawcze wydajności z naszego ostatniego testu, osiągając 32 próbki na sekundę w instancjach 120 ml.p4d.24xlarge i parametrach 175B w Amazon SageMaker. Przewidujemy, że gdybyśmy zwiększyli tę liczbę do 240 instancji p4, moglibyśmy wytrenować model parametrów 175B w 25 dni.
Omówiliśmy również najnowsze funkcje umożliwiające szkolenie na dużą skalę, a mianowicie równoległość tensorów, fragmentację stanu optymalizatora, punkt kontrolny aktywacji i odciążanie aktywacji. Udostępniliśmy kilka wskazówek i sztuczek, jak to umożliwić, poprzez szkolenie w zakresie Amazon SageMaker.
Wypróbuj sam używając tego samego notatnika, który wygenerował nasze liczby, który jest dostępny na GitHub tutaj. Możesz również poprosić o więcej procesorów graficznych dla swojego konta AWS za pośrednictwem prośba o zatwierdzenie limitu usługi tutaj.
O autorach
Emily Webber dołączył do AWS zaraz po uruchomieniu SageMaker i od tego czasu próbuje opowiedzieć o tym światu! Poza tworzeniem nowych doświadczeń związanych z ML dla klientów, Emily lubi medytować i studiować buddyzm tybetański.
Aditya Bindal jest starszym menedżerem produktu w AWS Deep Learning. Pracuje nad produktami, które ułatwiają klientom trenowanie modeli głębokiego uczenia się w AWS. W wolnym czasie lubi spędzać czas z córką, grając w tenisa, czytając powieści historyczne i podróżując.
Luisa Quintelę jest Software Developer Manager dla biblioteki równoległej modelu AWS SageMaker. W wolnym czasie można go spotkać jadącego na Harleyu w rejonie SF Bay Area.
- Coinsmart. Najlepsza w Europie giełda bitcoinów i kryptowalut.
- Platoblockchain. Web3 Inteligencja Metaverse. Wzmocniona wiedza. DARMOWY DOSTĘP.
- CryptoJastrząb. Radar Altcoin. Bezpłatna wersja próbna.
- Źródło: https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- O nas
- akcelerator
- Konto
- osiągnięty
- w poprzek
- Dodatkowy
- adres
- zaawansowany
- Wszystkie kategorie
- już
- Amazonka
- Inne
- aplikacje
- POWIERZCHNIA
- dostępny
- AWS
- Zatoka
- BEST
- Najwyższa
- Miliard
- Blog
- Budowanie
- Spowodować
- zmiana
- Chmura
- kod
- kombinacje
- wspólny
- Komunikacja
- systemu
- zamieszanie
- Pojemniki
- rdzeń
- mógłby
- Klientów
- dane
- rozwinięty
- Deweloper
- oprogramowania
- urządzenie
- urządzenia
- różne
- dystrybuowane
- 分配
- na dół
- napędzany
- umożliwiając
- szczególnie
- przykład
- doświadczenie
- Doświadczenia
- skrajny
- Twarz
- szybciej
- Cecha
- Korzyści
- Fikcja
- dopasować
- następujący
- Naprzód
- znaleziono
- Framework
- pełny
- funkcjonować
- Ogólne
- Generować
- GitHub
- będzie
- dobry
- Szukaj w Google
- GPU
- sprzęt komputerowy
- pomocny
- Atrakcja
- historyczny
- W jaki sposób
- How To
- HTTPS
- Setki
- wzrosła
- Informacja
- inspirowane
- zintegrowany
- problemy
- IT
- Praca
- Dołączył
- skok
- konserwacja
- język
- duży
- firmy
- uruchomić
- UCZYĆ SIĘ
- nauka
- poziom
- Biblioteka
- załadować
- maszyna
- uczenie maszynowe
- maszyny
- Dokonywanie
- kierownik
- Pamięć
- ML
- model
- modele
- Modułowa
- większość
- ruch
- mianowicie
- Naturalny
- sieć
- Nowe funkcje
- węzły
- notatnik
- z naszej
- Inne
- Papier
- partner
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- kawałek
- Platforma
- Popularny
- możliwy
- pierwotny
- Produkt
- Produkty
- profile
- zapewniać
- RAM
- RE
- Czytający
- polecić
- dokumentacja
- zmniejszyć
- Efekt
- run
- bieganie
- Powiedział
- skalowalny
- Skala
- skalowaniem
- Sdk
- Szukaj
- usługa
- zestaw
- ustawienie
- sharding
- shared
- znaczący
- Rozmiar
- So
- Tworzenie
- swoiście
- prędkość
- Spędzanie
- dzielić
- Stan
- strategie
- Strategia
- Dostawa
- taktyka
- Techniki
- test
- świat
- tysiące
- Przez
- czas
- wskazówki
- porady i wskazówki
- razem
- tematy
- Transakcje
- Trening
- zrozumieć
- posługiwać się
- wykorzystać
- wizja
- w ciągu
- pracujący
- działa
- świat
- lat