Oszczędność spotyka się z dokładnością: Ekonomiczne szkolenie modeli GPT NeoX i Pythia za pomocą AWS Trainium | Usługi internetowe Amazona

Oszczędność spotyka się z dokładnością: Ekonomiczne szkolenie modeli GPT NeoX i Pythia za pomocą AWS Trainium | Usługi internetowe Amazona

Duże modele językowe (ang. LLM) stały się tematem codziennych rozmów. Ich szybkie przyjęcie widać po ilości czasu potrzebnego do dotarcia do 100 milionów użytkowników, która wzrosła z „4.5 roku przez Facebook” do najniższego w historii poziomu zaledwie „2 miesięcy przez ChatGPT”. Generatywny, wstępnie wyszkolony transformator (GPT) wykorzystuje przyczynowe aktualizacje autoregresyjne do przewidywania. Wykazano, że te architektury modelowe zapewniają niesamowitą wydajność różnorodnych zadań, takich jak rozpoznawanie mowy, generowanie tekstu i odpowiadanie na pytania. Kilka najnowszych modeli, takich jak Neox, sokół, Lama użyj architektury GPT jako szkieletu. Szkolenie LLM wymaga kolosalnej ilości czasu obliczeniowego, co kosztuje miliony dolarów. W tym poście podsumujemy procedurę szkolenia GPT Neox on Szkolenie AWS, specjalnie zaprojektowany akcelerator uczenia maszynowego (ML), zoptymalizowany pod kątem głębokiego uczenia się. Opiszemy, w jaki sposób oszczędnie (3.2 mln tokenów/$) wytrenowaliśmy takie modele za pomocą AWS Trainium, nie tracąc przy tym na jakości modelu.

Omówienie rozwiązania

Modele GPT NeoX i Pythia

GPT NeoX i pytia to modele języka przyczynowego typu open source autorstwa Eleuther-AI z około 20 miliardami parametrów w NeoX i 6.9 miliarda w Pythii. Obydwa są modelami dekoderów o podobnej architekturze jak Chat GPT3. Mają jednak również kilka dodatków, które są również szeroko stosowane w ostatnich modelach, takich jak Llama. W szczególności posiadają obrotowe osadzenie pozycyjne (LINA) z częściowym obrotem w poprzek wymiarów głowy. Oryginalne modele (NeoX i Pythia 6.9B) są trenowane na ogólnodostępnych platformach Zbiór danych stosu z deduplikacją i wykorzystaniem backendu Megatron i Deepspeed.

Demonstrujemy wstępne uczenie i dostrajanie tych modeli w instancjach Trn1 opartych na AWS Trainium przy użyciu Neuron NeMo biblioteka. Aby potwierdzić słuszność koncepcji i szybko ją odtworzyć, użyjemy mniejszego podzbioru danych Wikipedii tokenizowanego przy użyciu tokenizatora GPT2 z kodowaniem par bajtów (BPE).

Opis przejścia

Pobierz wstępnie tokenizowany zbiór danych Wikipedii, jak pokazano:

export DATA_DIR=~/examples_datasets/gpt2 mkdir -p ${DATA_DIR} && cd ${DATA_DIR} wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-vocab.json
wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-merges.txt
aws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/my-gpt2_text_document.bin . --no-sign-request
aws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/my-gpt2_text_document.idx . --no-sign-request
aws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/license.txt . --no-sign-request

Zarówno NeoX 20B, jak i Pythia 6.9B wykorzystują LINĘ z częściowym obrotem, na przykład obracając 25% wymiarów głowy i utrzymując resztę nieobróconą. Aby efektywnie zaimplementować częściową rotację w akceleratorze AWS Trainium, zamiast łączyć wymiary obrotowe i nieobrotowe, dodajemy częstotliwości zerowe dla wymiarów nieobrotowych, a następnie obracamy cały zestaw wymiarów głowy. Ta prosta sztuczka pomogła nam poprawić przepustowość (sekwencje przetwarzane na sekundę) w AWS Trainium.

Kroki szkoleniowe

Do przeprowadzenia szkolenia wykorzystujemy wielowęzłową chmurę obliczeniową Amazon Elastic Compute Cloud zarządzaną przez SLURM (Amazon EC2) Klaster Trn1, w którym każdy węzeł zawiera instancję trn1.32xl. Każdy trn1.32xl ma 16 akceleratorów, po dwóch pracowników na akcelerator. Po pobraniu najnowszego Neuron NeMo pakietu, skorzystaj z dostarczonego neoks i pytia skrypty wstępnego szkolenia i dostrajania ze zoptymalizowanymi hiperparametrami i wykonaj następujące czynności w celu szkolenia z czterema węzłami.

  1. Kompiluj: Wstępnie skompiluj model z trzema iteracjami pociągowymi, aby wygenerować i zapisać wykresy:
    sbatch --nodes 4 compile.slurm ./neoX_20B_slurm.sh

  2. Uruchom: Wykonaj szkolenie, ładując buforowane wykresy z pierwszych kroków
    sbatch --nodes 4 run.slurm ./neoX_20B_slurm.sh

  3. Monitoruj wyniki
    tensorboard --logdir=nemo_experiments/megatron_neox

Te same kroki należy wykonać, aby uruchomić model Pythia 6.9B z wymianą neox_20B_slurm.sh by pythia_6.9B_slurm.sh.

Eksperymenty przedszkoleniowe i dostrajające

Demonstrujemy wstępne szkolenie modeli GPT-NeoX i Pythia w AWS Trainium przy użyciu Neuron NeMo bibliotekę dla 10 tys. iteracji, a także pokazują dostrajanie tych modeli dla 1 tys. kroków. Do treningu wstępnego używamy tokenizera GPT2 BPE wewnątrz NeMo i postępujemy zgodnie z tym samym config jak w oryginalnym modelu. Dostrojenie w AWS Trainium wymaga zmiany kilku parametrów (takich jak współczynnik podziału wielkości słownictwa), które są dostępne w skryptach dostrajających, aby uwzględnić różnice między Megatronem i NeMo oraz zmianami GPU i AWS Trainium. W tabeli 1 przedstawiono rozproszoną przepustowość uczenia wielu węzłów przy różnej liczbie węzłów.

Model Tensor równoległy Rurociąg równoległy Liczba instancji Koszt ($/godz.) Długość sekwencji Globalny rozmiar partii Przepustowość (sekw./sek.) Stosunek kosztów do przepustowości (tokeny/$)
Pytia 6.9B 8 1 1 7.59 2048 256 10.4 10,102,387
8 1 4 30.36 2048 256 35.8 8,693,881
NeoX20B 8 4 4 30.36 2048 16384 13.60 3,302,704
8 4 8 60.72 2048 16384 26.80 3,254,134
8 4 16 121.44 2048 16384 54.30 3,296,632
8 4 32 242.88 2048 16384 107.50 3,263,241
8 4 64 485.76 2048 16384 212.00 3,217,708

Tabela 1. Porównanie średniej przepustowości modeli GPT NeoX i Pythia dla treningu do 500 kroków ze zmienną liczbą węzłów. The ceny trn1.32xl opiera się na efektywnej stawce za godzinę zarezerwowanej na 3 lata.

Następnie oceniamy również trajektorię strat uczenia modelu na AWS Trainium i porównujemy ją z odpowiednim przebiegiem na klastrze P4d (rdzenie GPU Nvidia A100). Wraz ze stratą treningową porównujemy także przydatny wskaźnik, taki jak norma gradientu, która jest 2-normą gradientów modelu obliczanych w każdej iteracji treningowej w celu monitorowania postępu treningu. Wyniki treningu pokazano na rys. 1, 2, a dostrajanie NeoX 20B na rys. 3.

Strata treningowa uśredniona dla wszystkich pracowników (po lewej) i norma gradientu (po prawej) na każdym etapie treningu.

Rysunek 1. Strata treningowa uśredniona dla wszystkich pracowników (po lewej) i norma gradientu (po prawej) na każdym etapie treningu. NeoX 20B jest trenowany na 4 węzłach z małym zbiorem danych wiki na GPU i Trainium z tymi samymi hiperparametrami szkoleniowymi (globalny rozmiar wsadu = 256). GPU używa BF16 i domyślnej mieszanej precyzji, podczas gdy AWS Trainium używa pełnego BF16 z zaokrąglaniem stochastycznym. Trajektorie strat i norm gradientu są zgodne z GPU i AWS Trainium.

Strata treningowa uśredniona dla wszystkich pracowników (po lewej) i norma gradientu (po prawej) na każdym etapie treningu (Pythia).

Rysunek 2. Strata treningowa uśredniona dla wszystkich pracowników (po lewej) i norma gradientu (po prawej) na każdym etapie treningu. Podobnie jak GPT NeoX na rysunku 1, Pythia 6.9B jest trenowana na 4 węzłach z małym zbiorem danych wiki na GPU i Trainium z tymi samymi hiperparametrami szkoleniowymi (globalny rozmiar wsadu = 256). Trajektorie strat i norm gradientu są zgodne dla GPU i Trainium.

Dostrajanie modelu GPT NeoX 20B na GPU i AWS Trainium ze stratami treningowymi uśrednionymi dla wszystkich pracowników (po lewej) i normą gradientu (po prawej).

Rysunek 3. Dostrajanie modelu GPT NeoX 20B na GPU i AWS Trainium ze stratami treningowymi uśrednionymi dla wszystkich pracowników (po lewej) i normą gradientu (po prawej). Mały zbiór danych wiki jest używany do demonstracji dostrajania. Trajektorie strat i norm gradientu są zgodne z GPU i AWS Trainium.

W tym poście pokazaliśmy opłacalne szkolenie LLM na sprzęcie do głębokiego uczenia się AWS. Trenowaliśmy modele GPT NeoX 20B i Pythia 6.9B na AWS Trn1 z biblioteką Neuron NeMo. Znormalizowana przepustowość kosztowa dla 20 miliardów modeli z AWS Trainium wynosi około 3.2 mln tokenów/wydane $. Wraz z oszczędnym szkoleniem na AWS Trainium uzyskujemy podobną dokładność modelu, co widać po utracie kroku treningowego i trajektorii normy gradientu. Dopracowaliśmy także dostępne punkty kontrolne dla modelu NeoX 20B w AWS Trainium. Dodatkowe informacje na temat rozproszonego szkolenia z NeMo Megatron na AWS Trainium można znaleźć w artykule Referencja AWS Neuron dla NeMo Megatron. Dobre źródło informacji na temat rozpoczęcia dostrajania modelu Lamy można znaleźć tutaj: Dostrajanie Lamy2. Aby rozpocząć korzystanie z zarządzanego AWS Trainium wł Amazon Sage Maker, Patrz Trenuj swoje modele uczenia maszynowego za pomocą AWS Trainium i Amazon SageMaker.


O autorach

Oszczędność spotyka się z dokładnością: ekonomiczne szkolenie modeli GPT NeoX i Pythia za pomocą AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Gauraw Gupta jest obecnie naukowcem stosowanym w laboratoriach sztucznej inteligencji Amazon Web Services (AWS). Doktor Gupta uzyskał stopień doktora na USC Viterbi. Jego zainteresowania badawcze obejmują sekwencyjne modelowanie danych, naukę równań różniczkowych cząstkowych, teorię informacji na potrzeby uczenia maszynowego, ułamkowe modele dynamiczne i sieci złożone. Obecnie pracuje nad stosowanymi i matematycznymi problemami zachowań szkoleniowych LLM, modelami wizyjnymi z PDE, informacyjnymi modelami multimodalności. Dr Gupta ma publikacje w czołowych czasopismach/konferencjach, takich jak Neurips, ICLR, ICML, Nature, IEEE Control Society, ACM cyber-physical Society.

Oszczędność spotyka się z dokładnością: ekonomiczne szkolenie modeli GPT NeoX i Pythia za pomocą AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Bena Snydera jest naukowcem stosowanym w AWS Deep Learning. Jego zainteresowania badawcze obejmują modele podstawowe, uczenie się przez wzmacnianie i optymalizację asynchroniczną. Poza pracą lubi jeździć na rowerze i biwakować w terenie.

Oszczędność spotyka się z dokładnością: ekonomiczne szkolenie modeli GPT NeoX i Pythia za pomocą AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Amith (R) Mamidala jest starszym inżynierem aplikacji uczenia maszynowego w AWS Annapurna Labs. Dr Mamidala ukończył studia doktoranckie na Uniwersytecie Stanowym Ohio w zakresie obliczeń o wysokiej wydajności i komunikacji. Podczas swojej pracy w dziale badawczym IBM dr Mamidala przyczynił się do powstania klasy komputerów BlueGene, które często znajdowały się na czele rankingu Top500 najpotężniejszych i najbardziej energooszczędnych superkomputerów. Projekt został nagrodzony Narodowym Medalem Technologii i Innowacji 2009. Po krótkim okresie pracy jako inżynier sztucznej inteligencji w finansowym funduszu hedgingowym dr Mamidala dołączyła do laboratoriów w Annapurnie, koncentrując się na szkoleniu z modeli wielkojęzykowych.

Oszczędność spotyka się z dokładnością: ekonomiczne szkolenie modeli GPT NeoX i Pythia za pomocą AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Jun (Luke) Huan jest głównym naukowcem w AWS AI Labs. Dr Huan zajmuje się sztuczną inteligencją i analizą danych. Opublikował ponad 180 recenzowanych artykułów na wiodących konferencjach i czasopismach. W 2009 roku otrzymał nagrodę NSF Faculty Early Career Development Award. Przed dołączeniem do AWS pracował w Baidu Research jako wybitny naukowiec i kierownik Baidu Big Data Laboratory. Założył StylingAI Inc., start-up AI, a w latach 2019-2021 pracował jako dyrektor generalny i główny naukowiec. Przed dołączeniem do przemysłu był profesorem Charlesa E. i Mary Jane Spahr na wydziale EECS na Uniwersytecie w Kansas.

Oszczędność spotyka się z dokładnością: ekonomiczne szkolenie modeli GPT NeoX i Pythia za pomocą AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Shruti Koparkar jest Senior Product Marketing Managerem w AWS. Pomaga klientom badać, oceniać i dostosowywać akcelerowaną infrastrukturę obliczeniową Amazon EC2 do potrzeb związanych z uczeniem maszynowym.

Znak czasu:

Więcej z Uczenie maszynowe AWS