Modele i platformy AI
Zrozumienie parametrów i wymagań pamięciowych dużych modeli językowych: głębokie zanurzenie

Przez
Aayush Mittal Mittal
Duże modele językowe (LLM) w ostatnich latach osiągnęły znaczące postępy. Modele takie jak GPT-4, Google’s Gemini i Claude 3 ustanawiają nowe standardy pod względem możliwości i zastosowań. Te modele nie tylko poprawiają generowanie tekstu i tłumaczenia, ale także otwierają nowe możliwości w przetwarzaniu multimodalnym, łącząc tekst, obrazy, dźwięk i filmy, aby zapewnić bardziej kompleksowe rozwiązania AI.
Na przykład, OpenAI’s GPT-4 wykazał znaczące poprawy w zrozumieniu i generowaniu ludzkiego tekstu, podczas gdy Google’s Gemini modele wyróżniają się w radzeniu z różnymi typami danych, w tym tekstem, obrazami i dźwiękiem, umożliwiając bardziej płynne i kontekstowo istotne interakcje. Podobnie, Anthropic’s Claude 3 modele są znane ze swoich wielojęzycznych możliwości i poprawionej wydajności w zadaniach AI.
Jako że rozwój LLM kontynuuje przyspieszać, zrozumienie zawiłości tych modeli, szczególnie ich parametrów i wymagań pamięciowych, staje się kluczowe. Ten przewodnik ma na celu wyjaśnić te aspekty, oferując szczegółowe i łatwe do zrozumienia wyjaśnienie.
Podstawy dużych modeli językowych
Czym są duże modele językowe?
Duże modele językowe to sieci neuronowe szkolone na ogromnych zbiorach danych, aby zrozumieć i wygenerować ludzki język. Opierają się na architekturach takich jak Transformatory, które wykorzystują mechanizmy takie jak uwaga, aby przetwarzać i generować tekst.
Znaczenie parametrów w LLM
Parametry są podstawowymi składnikami tych modeli. Obejmują one wagi i biasy, które model dostosowuje podczas szkolenia, aby zminimalizować błędy w predykcjach. Liczba parametrów często koreluje z pojemnością modelu i jego wydajnością, ale także wpływa na wymagania obliczeniowe i pamięciowe.
Zrozumienie architektury Transformatora
Przegląd
Architektura Transformatora, wprowadzona w artykule “Attention Is All You Need” przez Vaswani et al. (2017), stała się podstawą dla wielu LLM. Składa się z enkodera i dekodera, z których każdy składa się z kilku identycznych warstw.
Składniki enkodera i dekodera
- Enkoder: Przetwarza sekwencję wejściową i tworzy reprezentację świadomą kontekstu.
- Dekoder: Generuje sekwencję wyjściową, wykorzystując reprezentację enkodera i poprzednio wygenerowane tokeny.
Kluczowe elementy budulcowe
- Uwaga wielogłowa: Pozwala modelowi skupić się na różnych częściach sekwencji wejściowej jednocześnie.
- Sieci neuronowe feed-forward: Dodają nieliniowość i złożoność do modelu.
- Normalizacja warstwy: Stabilizuje i przyspiesza szkolenie, normalizując pośrednie dane wyjściowe.
Obliczanie liczby parametrów
Obliczanie parametrów w modelach opartych na Transformatore
Rozbijmy obliczenie parametrów dla każdego składnika modelu opartego na Transformatore. Będziemy używać notacji z oryginalnego artykułu, gdzie d_model reprezentuje wymiar ukrytych stanów modelu.
- Warstwa wejściowa:
- Parametry =
vocab_size*d_model
- Parametry =
- Uwaga wielogłowa:
- Dla
hgłów, zd_k = d_v = d_model / h: - Parametry = 4 *
d_model^2 (dla Q, K, V i projekcji wyjściowych)
- Dla
- Sieć neuronowa feed-forward:
- Parametry = 2 *
d_model*d_ff+d_model+d_ff - Gdzie
d_ffjest zwykle 4 *d_model
- Parametry = 2 *
- Normalizacja warstwy:
- Parametry = 2 *
d_model(dla skali i biasu)
- Parametry = 2 *
Całkowita liczba parametrów dla jednej warstwy Transformatora:
Parametry_warstwa=Parametry_uwagi+Parametry_ffn+ 2 *Parametry_layernorm
Dla modelu z N warstwami:
- Całkowita liczba parametrów =
N*Parametry_warstwa+Parametry_wejściowe+Parametry_wyjściowe
Przykład obliczenia
Rozważmy model o następujących specyfikacjach:
d_model= 768h(liczba głów uwagi) = 12N(liczba warstw) = 12vocab_size= 50,000
- Warstwa wejściowa:
- 50,000 * 768 = 38,400,000
- Uwaga wielogłowa:
- 4 * 768^2 = 2,359,296
- Sieć neuronowa feed-forward:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
- Normalizacja warstwy:
- 2 * 768 = 1,536
Całkowita liczba parametrów na warstwę:
- 2,359,296 + 4,719,616 + (2 * 1,536) = 7,081,984
Całkowita liczba parametrów dla 12 warstw:
- 12 * 7,081,984 = 84,983,808
Całkowita liczba parametrów modelu:
- 84,983,808 + 38,400,000 = 123,383,808
Ten model miałby około 123 milionów parametrów.
Rodzaje zużycia pamięci
Podczas pracy z LLM musimy rozważyć dwa główne rodzaje zużycia pamięci:
- Pamięć modelu: Pamięć wymagana do przechowywania parametrów modelu.
- Pamięć robocza: Pamięć potrzebna podczas inferencji lub szkolenia do przechowywania pośrednich aktywacji, gradientów i stanów optymalizatora.
Obliczanie pamięci modelu
Pamięć modelu jest bezpośrednio związana z liczbą parametrów. Każdy parametr jest zwykle przechowywany jako 32-bitowa liczba zmiennoprzecinkowa, chociaż niektóre modele używają szkolenia o zmieszanej precyzji z 16-bitowymi liczbami zmiennoprzecinkowymi.
Pamięć modelu (bajty) = Liczba parametrów * Bajty na parametr
Dla naszego przykładowego modelu z 123 milionami parametrów:
- Pamięć modelu (32-bit) = 123,383,808 * 4 bajty = 493,535,232 bajty ≈ 494 MB
- Pamięć modelu (16-bit) = 123,383,808 * 2 bajty = 246,767,616 bajtów ≈ 247 MB
Szacowanie pamięci roboczej
Wymagania pamięci roboczej mogą się znacznie różnić w zależności od konkretnego zadania, rozmiaru partii i długości sekwencji. Szacunkowa pamięć robocza podczas inferencji to:
Pamięć robocza ≈ 2 * Pamięć modelu
To uwzględnia przechowywanie parametrów modelu i pośrednich aktywacji. Podczas szkolenia wymagania pamięci mogą być jeszcze wyższe ze względu na potrzebę przechowywania gradientów i stanów optymalizatora:
Pamięć szkoleniowa ≈ 4 * Pamięć modelu
Dla naszego przykładowego modelu:
- Pamięć robocza podczas inferencji ≈ 2 * 494 MB = 988 MB ≈ 1 GB
- Pamięć szkoleniowa ≈ 4 * 494 MB = 1,976 MB ≈ 2 GB
Stała pamięć i szczytowa pamięć
Podczas szkolenia dużych modeli językowych opartych na architekturze Transformatora, zrozumienie zużycia pamięci jest kluczowe dla efektywnej alokacji zasobów. Rozbijmy wymagania pamięci na dwie główne kategorie: stałą pamięć i szczytową pamięć.
Stała pamięć
Stała pamięć składa się z następujących składników:
- Wagi modelu: Kopie FP32 parametrów modelu, wymagające 4N bajtów, gdzie N jest liczbą parametrów.
- Stany optymalizatora: Dla optymalizatora Adam, wymaga to 8N bajtów (2 stany na parametr).
- Gradients: Kopie FP32 gradientów, wymagające 4N bajtów.
- Dane wejściowe: Zakładając dane wejściowe int64, wymaga to 8BD bajtów, gdzie B jest rozmiarem partii, a D jest wymiarem danych wejściowych.
Całkowita stała pamięć może być przybliżona przez:
- M_steady = 16N + 8BD bajty
Szczytowa pamięć
Szczytowa pamięć występuje podczas fazy wstecznej, gdy aktywacje są przechowywane do obliczania gradientów. Głównymi składnikami szczytowej pamięci są:
- Normalizacja warstwy: Wymaga 4E bajtów na warstwę normalizacji, gdzie E = BSH (B: rozmiar partii, S: długość sekwencji, H: rozmiar ukryty).
- Blok uwagi:
- Obliczanie QKV: 2E bajty
- Macierz uwagi: 4BSS bajty (S: długość sekwencji)
- Wyjście uwagi: 2E bajty
- Blok feed-forward:
- Pierwsza warstwa liniowa: 2E bajty
- Aktywacja GELU: 8E bajtów
- Druga warstwa liniowa: 2E bajty
- Strata cross-entropy:
- Logity: 6BSV bajtów (V: rozmiar słownika)
Całkowita pamięć aktywacji może być oszacowana jako:
- M_act = L * (14E + 4BSS) + 6BSV bajtów
Gdzie L jest liczbą warstw Transformatora.
Całkowita szczytowa pamięć
Całkowita szczytowa pamięć podczas szkolenia może być przybliżona przez połączenie stałej pamięci i pamięci aktywacji:
- M_peak = M_steady + M_act + 4BSV bajty
Dodatkowy termin 4BSV uwzględnia dodatkową alokację na początku fazy wstecznej.
Poprzez zrozumienie tych składników, możemy zoptymalizować zużycie pamięci podczas szkolenia i inferencji, zapewniając efektywną alokację zasobów i poprawiając wydajność dużych modeli językowych.
Prawa skalowania i rozważania efektywności
Prawa skalowania dla LLM
Badania wykazały, że wydajność LLM tendencję do podążania za określonymi prawami skalowania wraz ze wzrostem liczby parametrów. Kaplan et al. (2020) zaobserwowali, że wydajność modelu poprawia się jako potęga liczby parametrów, budżetu obliczeniowego i rozmiaru zbioru danych.
Zależność między wydajnością modelu a liczbą parametrów może być przybliżona przez:
Wydajność ∝ N^α
Gdzie N jest liczbą parametrów, a α jest wykładnikiem skalowania, zwykle wokół 0,07 dla zadań modelowania języka.
To oznacza, że aby osiągnąć 10% poprawę wydajności, musimy zwiększyć liczbę parametrów o czynnik 10^(1/α) ≈ 3,7.
Techniki efektywności
Ponieważ LLM nadal rosną, badacze i praktycy opracowali różne techniki, aby poprawić efektywność:
a) Szkolenie o mieszanej precyzji: Używanie liczb zmiennoprzecinkowych 16-bitowych lub nawet 8-bitowych dla pewnych operacji, aby zmniejszyć zużycie pamięci i wymagania obliczeniowe.
b) Parallelizm modelu: Dystrybucja modelu na wiele procesorów graficznych lub TPU, aby obsłużyć większe modele, niż te, które mieszczą się na jednym urządzeniu.
c) Pomiar gradientu: Wymiana obliczeń na pamięć, przez ponowne obliczanie pewnych aktywacji podczas fazy wstecznej zamiast ich przechowywania.
d) Pruning i kwantyzacja: Usuwanie mniej ważnych wag lub zmniejszanie ich precyzji po szkoleniu, aby utworzyć mniejsze, bardziej efektywne modele.
e) Destylacja: Szkolenie mniejszych modeli, aby naśladować zachowanie większych, potencjalnie zachowując wiele wydajności przy mniejszej liczbie parametrów.
Praktyczny przykład i obliczenia
GPT-3, jeden z największych modeli językowych, ma 175 miliardów parametrów. Używa części dekodera architektury Transformatora. Aby zrozumieć jego skalę, rozbijmy liczbę parametrów z hipotetycznymi wartościami:
d_model = 12288d_ff = 4 * 12288 = 49152- Liczba warstw = 96
Dla jednej warstwy dekodera:
Całkowita liczba parametrów = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1,1 miliarda
Całkowita dla 96 warstw:
1,1 miliarda * 96 = 105,6 miliarda
Pozostałe parametry pochodzą z warstwy wejściowej i innych składników.
Podsumowanie
Zrozumienie parametrów i wymagań pamięciowych dużych modeli językowych jest kluczowe dla skutecznego projektowania, szkolenia i wdrożenia tych potężnych narzędzi. Poprzez rozbicie składników architektury Transformatora i analizę praktycznych przykładów, takich jak GPT, zyskujemy głębsze zrozumienie złożoności i skali tych modeli.
Aby dalej zgłębić najnowsze osiągnięcia w dużych modelach językowych i ich zastosowaniach, sprawdź te kompleksowe przewodniki:
- Przeglądaj kompletny przewodnik na temat Gemmy 2: Nowego otwartego dużego modelu językowego Google w celu uzyskania wglądu w jego poprawioną wydajność i innowacyjne funkcje.
- Dowiedz się o budowaniu agentów LLM dla RAG od podstaw i więcej: Kompleksowy przewodnik, który omawia wyzwania i rozwiązania w generacji wspomaganej przez odzyskiwanie.
- Odkryj szczegóły konfigurowania szkolenia, dostrajania i inferencji LLM z procesorami graficznymi NVIDIA i CUDA (NVDA ) w celu optymalizacji systemów AI.
Przez ostatnie pięć lat zanurzałem się w fascynującym świecie Machine Learning i Deep Learning. Moja pasja i ekspertyza doprowadziły mnie do udziału w ponad 50 różnorodnych projektach inżynierii oprogramowania, ze szczególnym uwzględnieniem AI/ML. Moja nieustanna ciekawość również skierowała mnie w stronę Natural Language Processing, dziedziny, którą chcę dalej eksplorować.
Odkryj więcej


Jeśli bot może flirtować z dziećmi, co jeszcze wolno mu robić z Twoimi danymi?


Jak Przesmycić Absurdalne Prace Naukowe Przez Recenzentów AI


Modele AI wolą pisanie ludzkie od generowanego przez AI


Rewolucja MoE: Jak Zaawansowane Routing i Specjalizacja Przekształcają Duże Modele Językowe


Koniec ery skalowania: Dlaczego przełomy algorytmiczne są ważniejsze niż rozmiar modelu


Dlaczego AI nie może po prostu przyznać, że nie zna odpowiedzi?

