Artificial Intelligence
Zrozumienie parametrów modelu dużego języka i wymagań dotyczących pamięci: głębokie nurkowanie
Opublikowany
6 dni temuon
Spis treści
Duże modele językowe (LLM) odnotowały w ostatnich latach niezwykły postęp. Modele takie jak GPT-4, Google Gemini i Claude 3 wyznaczają nowe standardy w zakresie możliwości i zastosowań. Modele te nie tylko usprawniają generowanie i tłumaczenie tekstu, ale także otwierają nowe możliwości w przetwarzaniu multimodalnym, łącząc dane wejściowe tekstu, obrazu, audio i wideo w celu zapewnienia bardziej kompleksowych rozwiązań AI.
Na przykład GPT-4 OpenAI wykazał znaczną poprawę w rozumieniu i generowaniu tekstu podobnego do ludzkiego, podczas gdy modele Gemini firmy Google przodują w obsłudze różnorodnych typów danych, w tym tekstu, obrazów i dźwięku, umożliwiając bardziej płynne i istotne kontekstowo interakcje. Podobnie modele Claude 3 firmy Anthropic są znane ze swoich wielojęzycznych możliwości i zwiększonej wydajności w zadaniach AI.
Ponieważ rozwój LLM stale przyspiesza, zrozumienie zawiłości tych modeli, w szczególności ich parametrów i wymagań dotyczących pamięci, staje się kluczowe. Celem tego przewodnika jest wyjaśnienie tych aspektów, oferując szczegółowe i łatwe do zrozumienia wyjaśnienia.
Podstawy dużych modeli językowych
Jakie są modele wielkojęzykowe?
Duże modele językowe to sieci neuronowe wytrenowane na ogromnych zbiorach danych w celu zrozumienia i generowania ludzkiego języka. Opierają się na architekturach takich jak Transformers, które wykorzystują mechanizmy takie jak samouważność do przetwarzania i tworzenia tekstu.
Znaczenie parametrów w LLM
Parametry są podstawowymi elementami tych modeli. Obejmują one wagi i błędy systematyczne, które model dostosowuje podczas uczenia, aby zminimalizować błędy w przewidywaniach. Liczba parametrów często koreluje z pojemnością i wydajnością modelu, ale wpływa również na jego wymagania obliczeniowe i pamięciowe.
Zrozumienie architektury transformatora
Przegląd
Architektura Transformera, przedstawiona w artykule „Attention Is All You Need” autorstwa Vaswani i in. (2017) stał się podstawą wielu LLM. Składa się z kodera i dekodera, z których każdy składa się z kilku identycznych warstw.
Elementy kodera i dekodera
- koder: przetwarza sekwencję wejściową i tworzy reprezentację kontekstową.
- dekoder: Generuje sekwencję wyjściową przy użyciu reprezentacji kodera i wcześniej wygenerowanych tokenów.
Kluczowe elementy konstrukcyjne
- Uwaga wielogłowa: Umożliwia modelowi jednoczesne skupienie się na różnych częściach sekwencji wejściowej.
- Sieci neuronowe ze sprzężeniem zwrotnym: Dodaje nieliniowość i złożoność do modelu.
- Normalizacja warstw: Stabilizuje i przyspiesza trening poprzez normalizację wyników pośrednich.
Obliczanie liczby parametrów
Obliczanie parametrów w LLM opartych na transformatorach
Podzielmy obliczenia parametrów dla każdego komponentu LLM opartego na transformatorze. Będziemy używać zapisu z oryginalnej pracy, gdzie d_model
reprezentuje wymiar stanów ukrytych modelu.
- Warstwa osadzania:
- Parametry =
vocab_size
*d_model
- Parametry =
- Uwaga wielogłowa:
- W razie zamówieenia projektu
h
głowy, zd_k = d_v = d_model / h
: - Parametry = 4 *
d_model
^2 (dla projekcji Q, K, V i wyjściowych)
- W razie zamówieenia projektu
- Sieć przekazująca:
- Parametry = 2 *
d_model
*d_ff
+d_model
+d_ff
- Gdzie
d_ff
zazwyczaj wynosi 4*d_model
- Parametry = 2 *
- Normalizacja warstw:
- Parametry = 2 *
d_model
(ze względu na skalę i stronniczość)
- Parametry = 2 *
Łączne parametry dla jednej warstwy Transformatora:
Parameters_layer
=Parameters_attention
+Parameters_ffn
+ 2 *Parameters_layernorm
Dla modelu z N
warstwy:
- Razem parametry =
N
*Parameters_layer
+Parameters_embedding
+Parameters_output
Przykładowe obliczenia
Rozważmy model o następujących specyfikacjach:
d_model
= 768h
(liczba głów uwagi) = 12N
(liczba warstw) = 12vocab_size
= 50,000
- Warstwa osadzania:
- 50,000 * 768 = 38,400,000
- Uwaga wielogłowa:
- 4 * 768^2 = 2,359,296
- Sieć przekazująca:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616 XNUMX XNUMX
- Normalizacja warstw:
- 2 * 768 = 1,536
Całkowite parametry na warstwę:
- 2,359,296 + 4,719,616 + (2 * 1,536) = 7,081,984
Parametry całkowite dla 12 warstw:
- 12 * 7,081,984 = 84,983,808
Całkowite parametry modelu:
- 84,983,808 + 38,400,000 = 123,383,808
Model ten miałby około 123 milionów parametrów.
Rodzaje wykorzystania pamięci
Pracując z LLM, musimy wziąć pod uwagę dwa główne typy wykorzystania pamięci:
- Pamięć modelu: Pamięć wymagana do przechowywania parametrów modelu.
- Pamięć robocza: Pamięć potrzebna podczas wnioskowania lub uczenia do przechowywania aktywacji pośrednich, gradientów i stanów optymalizatora.
Obliczanie pamięci modelu
Pamięć modelu jest bezpośrednio powiązana z liczbą parametrów. Każdy parametr jest zwykle przechowywany jako 32-bitowa liczba zmiennoprzecinkowa, chociaż w niektórych modelach stosuje się szkolenie o mieszanej precyzji z 16-bitowymi liczbami zmiennoprzecinkowymi.
Pamięć modelu (bajty) = Liczba parametrów * Bajty na parametr
Dla naszego przykładowego modelu ze 123 milionami parametrów:
- Pamięć modelu (32-bitowa) = 123,383,808 4 493,535,232 * 494 bajty = XNUMX XNUMX XNUMX bajtów ≈ XNUMX MB
- Pamięć modelu (16-bitowa) = 123,383,808 2 246,767,616 * 247 bajty = XNUMX XNUMX XNUMX bajtów ≈ XNUMX MB
Szacowanie pamięci roboczej
Wymagania dotyczące pamięci roboczej mogą się znacznie różnić w zależności od konkretnego zadania, rozmiaru partii i długości sekwencji. Przybliżone oszacowanie pamięci roboczej podczas wnioskowania wynosi:
Pamięć robocza ≈ 2 * Pamięć modelu
Uwzględnia to przechowywanie zarówno parametrów modelu, jak i aktywacji pośrednich. Podczas uczenia wymagania dotyczące pamięci mogą być jeszcze większe ze względu na konieczność przechowywania gradientów i stanów optymalizatora:
Pamięć treningowa ≈ 4 * Pamięć modelu
Dla naszego przykładowego modelu:
- Wnioskowanie Pamięć robocza ≈ 2 * 494 MB = 988 MB ≈ 1 GB
- Pamięć treningowa ≈ 4 * 494 MB = 1,976 MB ≈ 2 GB
Stałe i szczytowe wykorzystanie pamięci
Podczas uczenia dużych modeli językowych opartych na architekturze Transformer zrozumienie użycia pamięci ma kluczowe znaczenie dla efektywnej alokacji zasobów. Podzielmy wymagania dotyczące pamięci na dwie główne kategorie: stałe wykorzystanie pamięci i szczytowe wykorzystanie pamięci.
Użycie pamięci w stanie ustalonym
Stałe wykorzystanie pamięci obejmuje następujące elementy:
- Wagi modelu: Kopie FP32 parametrów modelu, wymagające 4N bajtów, gdzie N to liczba parametrów.
- Stany optymalizatora: Dla optymalizatora Adama wymaga to 8N bajtów (2 stany na parametr).
- Gradienty: Kopie gradientów FP32, wymagające 4N bajtów.
- Dane wejściowe: Zakładając, że dane wejściowe mają charakter int64, wymaga to 8 bajtów BD, gdzie B to rozmiar partii, a D to wymiar wejściowy.
Całkowite wykorzystanie pamięci w stanie ustalonym można przybliżyć wzorem:
- M_steady = 16N + 8BD bajtów
Szczytowe użycie pamięci
Szczytowe wykorzystanie pamięci występuje podczas przebiegu wstecznego, gdy aktywacje są przechowywane w celu obliczenia gradientu. Głównymi czynnikami wpływającymi na pamięć szczytową są:
- Normalizacja warstw: Wymaga 4E bajtów na normę warstwy, gdzie E = BSH (B: rozmiar partii, S: długość sekwencji, H: ukryty rozmiar).
- Blok uwagi:
- Obliczenia QKV: 2E bajtów
- Macierz uwag: 4 bajty BSS (S: długość sekwencji)
- Uwaga wyjście: 2E bajtów
- Blok sprzężenia zwrotnego:
- Pierwsza warstwa liniowa: 2E bajtów
- Aktywacja GELU: 8E bajtów
- Druga warstwa liniowa: 2E bajtów
- Utrata krzyżowa entropii:
- Logity: 6 bajtów BSV (V: rozmiar słownictwa)
Całkowitą pamięć aktywacji można oszacować jako:
- M_act = L * (14E + 4BSS) + 6 bajtów BSV
Gdzie L jest liczbą warstw transformatora.
Całkowite szczytowe wykorzystanie pamięci
Szczytowe wykorzystanie pamięci podczas treningu można oszacować, łącząc pamięć stanu ustalonego i pamięć aktywacji:
- M_peak = M_steady + M_act + 4 bajty BSV
Dodatkowy termin 4BSV uwzględnia dodatkową alokację na początku przejścia wstecz.
Rozumiejąc te komponenty, możemy zoptymalizować wykorzystanie pamięci podczas uczenia i wnioskowania, zapewniając efektywną alokację zasobów i lepszą wydajność dużych modeli językowych.
Prawa skalowania i zagadnienia dotyczące wydajności
Prawa skalowania dla LLM
Badania wykazały, że wydajność LLM ma tendencję do przestrzegania pewnych praw skalowania w miarę wzrostu liczby parametrów. Kaplan i in. (2020) zaobserwowali, że wydajność modelu poprawia się wraz z potęgowaniem liczby parametrów, budżetu obliczeniowego i rozmiaru zbioru danych.
Zależność między wydajnością modelu a liczbą parametrów można przybliżyć wzorem:
Wydajność ∝ N^α
Gdzie N to liczba parametrów, a α to wykładnik skalowania, zwykle około 0.07 w przypadku zadań modelowania języka.
Oznacza to, że aby osiągnąć 10% poprawę wydajności, musimy zwiększyć liczbę parametrów o współczynnik 10^(1/α) ≈ 3.7.
Techniki efektywności
W miarę ciągłego rozwoju LLM badacze i praktycy opracowali różne techniki poprawiające efektywność:
a) Mieszane szkolenie precyzyjne: Używanie 16-bitowych lub nawet 8-bitowych liczb zmiennoprzecinkowych do niektórych operacji w celu zmniejszenia zużycia pamięci i wymagań obliczeniowych.
b) Równoległość modelu: Dystrybucja modelu na wiele procesorów graficznych lub TPU w celu obsługi większych modeli, niż można zmieścić na jednym urządzeniu.
c) Gradientowe punkty kontrolne: Zamiana obliczeń na pamięć poprzez ponowne obliczenie niektórych aktywacji podczas przejścia wstecz zamiast ich przechowywania.
d) Przycinanie i kwantyzacja: Usunięcie mniej ważnych ciężarów lub zmniejszenie ich precyzji po treningu w celu stworzenia mniejszych, bardziej wydajnych modeli.
e) Destylacja: Trenowanie mniejszych modeli, aby naśladowały zachowanie większych, potencjalnie zachowując znaczną część 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. Wykorzystuje część dekodera architektury Transformer. Aby zrozumieć jego skalę, podzielmy liczbę parametrów na hipotetyczne wartości:
d_model = 12288
d_ff = 4 * 12288 = 49152
- Liczba warstw = 96
Dla jednej warstwy dekodera:
Łączne parametry = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 miliarda
Razem dla 96 warstw:
1.1 miliarda * 96 = 105.6 miliarda
Pozostałe parametry pochodzą z osadzania i innych komponentów.
Wnioski
Zrozumienie parametrów i wymagań dotyczących pamięci dużych modeli językowych ma kluczowe znaczenie dla skutecznego projektowania, szkolenia i wdrażania tych potężnych narzędzi. Rozbijając komponenty architektury Transformera i badając praktyczne przykłady, takie jak GPT, uzyskujemy głębszy wgląd w złożoność i skalę tych modeli.
Aby lepiej zrozumieć najnowsze osiągnięcia w zakresie dużych modeli językowych i ich zastosowań, zapoznaj się z tymi obszernymi przewodnikami:
- Zapoznaj się z pełnym przewodnikiem po grze Gemma 2: Nowy otwarty model dużego języka firmy Google aby uzyskać wgląd w jego zwiększoną wydajność i innowacyjne funkcje.
- Dowiedz się o agentach budowlanych LLM dla RAG od podstaw i nie tylko: Kompleksowy przewodnik który omawia wyzwania i rozwiązania w zakresie generacji wspomaganej odzyskiwaniem.
- Odkryj zawiłości Konfigurowanie uczenia, dostrajania i wnioskowania LLM za pomocą procesorów graficznych NVIDIA i CUDA do optymalizacji systemów AI.
Ostatnie pięć lat spędziłem zanurzając się w fascynującym świecie uczenia maszynowego i głębokiego uczenia się. Moja pasja i wiedza sprawiły, że uczestniczyłem w ponad 50 różnorodnych projektach z zakresu inżynierii oprogramowania, ze szczególnym uwzględnieniem AI/ML. Moja ciągła ciekawość przyciągnęła mnie również w stronę przetwarzania języka naturalnego – dziedziny, którą chcę dalej zgłębiać.
Możesz polubić
MARKLLM: zestaw narzędzi typu open source do znakowania wodnego LLM
Wdrażanie modeli dużych języków w Kubernetes: kompleksowy przewodnik
Zrozumienie rzadkich autoenkoderów, GPT-4 i Claude 3: dogłębna eksploracja techniczna
Qwen2 – najnowszy wielojęzyczny model językowy Alibaba stanowi wyzwanie dla SOTA jak Llama 3
LLaVA-UHD: LMM rejestrujący dowolne proporcje i obrazy o wysokiej rozdzielczości
Zwiększanie wydajności modeli wielojęzycznych dzięki przewidywaniu wielu tokenów
Najnowsze posty
- Lama 3.1: najbardziej zaawansowany model sztucznej inteligencji typu open source firmy Meta – wszystko, co musisz wiedzieć
- Rewolucja w korzystaniu z urządzenia: jak sztuczna inteligencja Apple na nowo definiuje technologię
- Klucz do skutecznych rozwiązań AI? Dane behawioralne
- Rola sieci GAN w poprawie cyberbezpieczeństwa
- 10 najlepszych aplikacji do fryzur AI (lipiec 2024 r.)