Modele i platformy AI

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

mm
Dodaj Unite.AI do preferowanych źródeł w Google

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

Transformers-architecture

Architektura 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

  1. Uwaga wielogłowa: Pozwala modelowi skupić się na różnych częściach sekwencji wejściowej jednocześnie.
  2. Sieci neuronowe feed-forward: Dodają nieliniowość i złożoność do modelu.
  3. Normalizacja warstwy: Stabilizuje i przyspiesza szkolenie, normalizując pośrednie dane wyjściowe.

Obliczanie liczby parametrów

Transformer Training

Pretrained Models For Efficient Transformer Training

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.

  1. Warstwa wejściowa:
    • Parametry = vocab_size * d_model
  2. Uwaga wielogłowa:
    • Dla h głów, z d_k = d_v = d_model / h:
    • Parametry = 4 * d_model^2 (dla Q, K, V i projekcji wyjściowych)
  3. Sieć neuronowa feed-forward:
    • Parametry = 2 * d_model * d_ff + d_model + d_ff
    • Gdzie d_ff jest zwykle 4 * d_model
  4. Normalizacja warstwy:
    • Parametry = 2 * d_model (dla skali i biasu)

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 = 768
  • h (liczba głów uwagi) = 12
  • N (liczba warstw) = 12
  • vocab_size = 50,000
  1. Warstwa wejściowa:
    • 50,000 * 768 = 38,400,000
  2. Uwaga wielogłowa:
    • 4 * 768^2 = 2,359,296
  3. Sieć neuronowa feed-forward:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
  4. 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:

  1. Pamięć modelu: Pamięć wymagana do przechowywania parametrów modelu.
  2. 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:

  1. Wagi modelu: Kopie FP32 parametrów modelu, wymagające 4N bajtów, gdzie N jest liczbą parametrów.
  2. Stany optymalizatora: Dla optymalizatora Adam, wymaga to 8N bajtów (2 stany na parametr).
  3. Gradients: Kopie FP32 gradientów, wymagające 4N bajtów.
  4. 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ą:

  1. Normalizacja warstwy: Wymaga 4E bajtów na warstwę normalizacji, gdzie E = BSH (B: rozmiar partii, S: długość sekwencji, H: rozmiar ukryty).
  2. Blok uwagi:
    • Obliczanie QKV: 2E bajty
    • Macierz uwagi: 4BSS bajty (S: długość sekwencji)
    • Wyjście uwagi: 2E bajty
  3. Blok feed-forward:
    • Pierwsza warstwa liniowa: 2E bajty
    • Aktywacja GELU: 8E bajtów
    • Druga warstwa liniowa: 2E bajty
  4. 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 = 12288
  • d_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:

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ć.