Umělá inteligence
Pochopení parametrů velkého jazykového modelu a požadavků na paměť: Hluboký ponor
Zveřejněno
6 dní zpátkyon
Obsah
Velké jazykové modely (LLM) zaznamenala v posledních letech pozoruhodný pokrok. Modely jako GPT-4, Gemini od Googlu a Claude 3 nastavují nové standardy ve schopnostech a aplikacích. Tyto modely nejen vylepšují generování a překlad textu, ale také představují průlom v multimodálním zpracování, kombinují textové, obrazové, zvukové a obrazové vstupy a poskytují komplexnější řešení AI.
Například GPT-4 OpenAI prokázala významná zlepšení v porozumění a generování lidského textu, zatímco modely Gemini od Googlu vynikají ve zpracování různých typů dat, včetně textu, obrázků a zvuku, což umožňuje bezproblémovější a kontextově relevantní interakce. Podobně modely Claude 3 od Anthropic jsou známé svými vícejazyčnými schopnostmi a vylepšeným výkonem v úlohách umělé inteligence.
Jak se vývoj LLM neustále zrychluje, pochopení složitosti těchto modelů, zejména jejich parametrů a požadavků na paměť, se stává zásadní. Tato příručka si klade za cíl tyto aspekty demystifikovat a nabízí podrobné a snadno srozumitelné vysvětlení.
Základy velkých jazykových modelů
Co jsou velké jazykové modely?
Velké jazykové modely jsou neuronové sítě trénované na masivních souborech dat, aby porozuměly a generovaly lidský jazyk. Spoléhají na architektury jako Transformers, které ke zpracování a produkci textu využívají mechanismy, jako je sebepozorování.
Význam parametrů v LLM
Parametry jsou základními součástmi těchto modelů. Zahrnují váhy a odchylky, které model upravuje během tréninku, aby se minimalizovaly chyby v předpovědích. Počet parametrů často koreluje s kapacitou a výkonem modelu, ale také ovlivňuje jeho výpočetní a paměťové nároky.
Pochopení architektury Transformer
O programu
Architektura Transformer, představená v článku „Attention Is All You Need“ od Vaswaniho a kol. (2017), se stal základem pro mnoho LLM. Skládá se z kodéru a dekodéru, z nichž každý se skládá z několika stejných vrstev.
Komponenty kodéru a dekodéru
- Encoder: Zpracuje vstupní sekvenci a vytvoří reprezentaci s vědomím kontextu.
- Decoder: Generuje výstupní sekvenci pomocí reprezentace kodéru a dříve vygenerovaných tokenů.
Klíčové stavební bloky
- Vícehlavá pozornost: Umožňuje modelu soustředit se na různé části vstupní sekvence současně.
- Feed-Forward neuronové sítě: Dodává modelu nelinearitu a složitost.
- Normalizace vrstev: Stabilizuje a urychluje trénink normalizací středních výkonů.
Výpočet počtu parametrů
Výpočet parametrů v LLM založených na transformátoru
Rozeberme výpočet parametrů pro každou součást LLM založeného na transformátoru. Použijeme zápis z původního papíru, kde d_model
představuje dimenzi skrytých stavů modelu.
- Vrstva pro vkládání:
- Parametry =
vocab_size
*d_model
- Parametry =
- Vícehlavá pozornost:
- Pro
h
hlavy, sd_k = d_v = d_model / h
: - Parametry = 4 *
d_model
^2 (pro Q, K, V a výstupní projekce)
- Pro
- Feed-Forward Network:
- Parametry = 2 *
d_model
*d_ff
+d_model
+d_ff
- Kde
d_ff
je typicky 4*d_model
- Parametry = 2 *
- Normalizace vrstev:
- Parametry = 2 *
d_model
(pro měřítko a zkreslení)
- Parametry = 2 *
Celkové parametry pro jednu vrstvu Transformer:
Parameters_layer
=Parameters_attention
+Parameters_ffn
+ 2 *Parameters_layernorm
Pro model s N
vrstvy:
- Celkové parametry =
N
*Parameters_layer
+Parameters_embedding
+Parameters_output
Příklad výpočtu
Uvažujme model s následujícími specifikacemi:
d_model
= 768h
(počet hlav pozornosti) = 12N
(počet vrstev) = 12vocab_size
= 50,000
- Vrstva pro vkládání:
- 50,000 * 768 = 38,400,000
- Vícehlavá pozornost:
- 4 * 768^2 = 2,359,296
- Feed-Forward Network:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616 XNUMX XNUMX
- Normalizace vrstev:
- 2 * 768 = 1,536
Celkové parametry na vrstvu:
- 2,359,296 + 4,719,616 + (2 * 1,536) = 7,081,984
Celkové parametry pro 12 vrstev:
- 12 * 7,081,984 = 84,983,808
Celkové parametry modelu:
- 84,983,808 + 38,400,000 = 123,383,808
Tento model by měl přibližně 123 milionů parametrů.
Typy využití paměti
Při práci s LLM musíme zvážit dva hlavní typy využití paměti:
- Paměť modelu: Paměť potřebná k uložení parametrů modelu.
- Pracovní paměť: Paměť potřebná během inference nebo tréninku k uložení přechodných aktivací, přechodů a stavů optimalizátoru.
Výpočet paměti modelu
Paměť modelu přímo souvisí s počtem parametrů. Každý parametr je obvykle uložen jako 32bitové číslo s plovoucí desetinnou čárkou, ačkoli některé modely používají trénování se smíšenou přesností s 16bitovými plovoucí desetinnou čárkou.
Paměť modelu (bajty) = Počet parametrů * Bajty na parametr
Pro náš vzorový model se 123 miliony parametrů:
- Paměť modelu (32bitová) = 123,383,808 4 493,535,232 * 494 bajty = XNUMX XNUMX XNUMX bajtů ≈ XNUMX MB
- Paměť modelu (16bitová) = 123,383,808 2 246,767,616 * 247 bajty = XNUMX XNUMX XNUMX bajtů ≈ XNUMX MB
Odhad pracovní paměti
Požadavky na pracovní paměť se mohou výrazně lišit v závislosti na konkrétní úloze, velikosti dávky a délce sekvence. Hrubý odhad pro pracovní paměť během inference je:
Pracovní paměť ≈ 2 * Paměť modelu
To odpovídá za ukládání jak parametrů modelu, tak i meziaktivací. Během tréninku mohou být požadavky na paměť ještě vyšší kvůli nutnosti ukládat gradienty a stavy optimalizátoru:
Tréninková paměť ≈ 4 * Paměť modelu
Pro náš vzorový model:
- Inferenční pracovní paměť ≈ 2 * 494 MB = 988 MB ≈ 1 GB
- Tréninková paměť ≈ 4 * 494 MB = 1,976 2 MB ≈ XNUMX GB
Využití paměti v ustáleném stavu a maximální využití paměti
Při trénování velkých jazykových modelů založených na architektuře Transformer je pochopení využití paměti zásadní pro efektivní alokaci zdrojů. Rozdělme požadavky na paměť do dvou hlavních kategorií: využití paměti v ustáleném stavu a maximální využití paměti.
Využití paměti v ustáleném stavu
Využití paměti v ustáleném stavu se skládá z následujících komponent:
- Váhy modelů: FP32 kopie parametrů modelu vyžadující 4N bajtů, kde N je počet parametrů.
- Stavy optimalizátoru: Pro optimalizátor Adam to vyžaduje 8N bajtů (2 stavy na parametr).
- Přechody: FP32 kopie přechodů, vyžadující 4N bajtů.
- Vstupní data: Za předpokladu int64 vstupů to vyžaduje 8BD bajtů, kde B je velikost dávky a D je vstupní rozměr.
Celkové využití paměti v ustáleném stavu lze přiblížit:
- M_steady = 16N + 8BD bajtů
Špičkové využití paměti
K maximálnímu využití paměti dochází během zpětného průchodu, kdy se ukládají aktivace pro výpočet gradientu. Hlavními přispěvateli ke špičkové paměti jsou:
- Normalizace vrstev: Vyžaduje 4E bajtů na normu vrstvy, kde E = BSH (B: velikost dávky, S: délka sekvence, H: skrytá velikost).
- Blok pozornosti:
- Výpočet QKV: 2E bajtů
- Attention matrix: 4BSS bajty (S: délka sekvence)
- Pozor výstup: 2E bajtů
- Feed-Forward Block:
- První lineární vrstva: 2E bajtů
- Aktivace GELU: 8E bajtů
- Druhá lineární vrstva: 2E bajtů
- Ztráta křížové entropie:
- Logits: 6BSV bajtů (V: velikost slovní zásoby)
Celkovou aktivační paměť lze odhadnout jako:
- M_act = L* (14E + 4BSS) + 6BSV bajtů
Kde L je počet vrstev transformátoru.
Celkové maximální využití paměti
Maximální využití paměti během tréninku lze aproximovat kombinací paměti v ustáleném stavu a aktivační paměti:
- M_peak = M_steady + M_act + 4BSV bajtů
Dodatečný termín 4BSV představuje zvláštní přidělení na začátku zpětného průchodu.
Porozuměním těmto komponentám můžeme optimalizovat využití paměti během školení a vyvozování, zajistit efektivní alokaci zdrojů a lepší výkon velkých jazykových modelů.
Zákony o škálování a úvahy o účinnosti
Zákony o škálování pro LLM
Výzkum ukázal, že výkon LLM má tendenci dodržovat určité zákony škálování, jak se zvyšuje počet parametrů. Kaplan a kol. (2020) zjistili, že výkon modelu se zlepšuje jako mocninný zákon počtu parametrů, výpočetního rozpočtu a velikosti datové sady.
Vztah mezi výkonem modelu a počtem parametrů lze přiblížit:
Výkon ∝ N^α
Kde N je počet parametrů a α je škálovací exponent typicky kolem 0.07 pro úlohy jazykového modelování.
To znamená, že abychom dosáhli 10% zlepšení výkonu, musíme zvýšit počet parametrů faktorem 10^(1/α) ≈ 3.7.
Techniky účinnosti
Jak LLM neustále rostou, výzkumní pracovníci a praktici vyvinuli různé techniky ke zlepšení účinnosti:
a) Smíšený trénink přesnosti: Použití 16bitových nebo dokonce 8bitových čísel s pohyblivou řádovou čárkou pro určité operace ke snížení využití paměti a výpočetních požadavků.
b) Modelový paralelismus: Distribuce modelu mezi více GPU nebo TPU pro zpracování větších modelů, než se vejdou na jedno zařízení.
c) Přechodový kontrolní bod: Obchodování s výpočtem pro paměť přepočítáním určitých aktivací během zpětného průchodu namísto jejich uložení.
d) Prořezávání a kvantování: Odstranění méně důležitých závaží nebo snížení jejich přesnosti po tréninku za účelem vytvoření menších, efektivnějších modelů.
e) Destilace: Trénink menších modelů, aby napodobovaly chování větších, což potenciálně zachovává velkou část výkonu s menším počtem parametrů.
Praktický příklad a výpočty
GPT-3, jeden z největších jazykových modelů, má 175 miliard parametrů. Využívá dekodérovou část architektury Transformer. Abychom porozuměli jeho měřítku, rozdělme počet parametrů na hypotetické hodnoty:
d_model = 12288
d_ff = 4 * 12288 = 49152
- Počet vrstev = 96
Pro jednu vrstvu dekodéru:
Celkové parametry = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 miliardy
Celkem pro 96 vrstev:
1.1 miliardy * 96 = 105.6 miliardy
Zbývající parametry pocházejí z vkládání a dalších komponent.
Proč investovat do čističky vzduchu?
Pochopení parametrů a požadavků na paměť velkých jazykových modelů je zásadní pro efektivní návrh, školení a nasazení těchto výkonných nástrojů. Rozdělením komponent architektury Transformer a prozkoumáním praktických příkladů, jako je GPT, získáme hlubší vhled do složitosti a rozsahu těchto modelů.
Chcete-li dále porozumět nejnovějším pokrokům ve velkých jazykových modelech a jejich aplikacích, prohlédněte si tyto komplexní průvodce:
- Prozkoumejte kompletního průvodce Gemma 2: Nový otevřený velký jazykový model společnosti Google pro nahlédnutí do jeho vylepšeného výkonu a inovativních funkcí.
- Přečtěte si o službě Building LLM Agents for RAG from Scratch and Beyond: Komplexní průvodce který pojednává o výzvách a řešeních v generování rozšířeného vyhledávání.
- Objevte spletitost Nastavení školení, jemného ladění a odvození LLM pomocí GPU NVIDIA a CUDA pro optimalizaci systémů AI.
Posledních pět let jsem strávil ponořením se do fascinujícího světa strojového učení a hlubokého učení. Moje vášeň a odborné znalosti mě vedly k tomu, abych se podílel na více než 50 různých projektech softwarového inženýrství se zvláštním zaměřením na AI/ML. Moje neustálá zvědavost mě také přivedla ke zpracování přirozeného jazyka, což je obor, který bych rád dále prozkoumal.
Můžete se vám líbit
MARKLLM: Open-Source Toolkit pro LLM Watermarking
Nasazení velkých jazykových modelů na Kubernetes: Komplexní průvodce
Porozumění Sparse Autoencoders, GPT-4 a Claude 3: Hloubkový technický průzkum
Qwen2 – Nejnovější vícejazyčný jazykový model společnosti Alibaba zpochybňuje SOTA jako Llama 3
LLaVA-UHD: LMM vnímající jakýkoli poměr stran a obrázky ve vysokém rozlišení
Přeplňování velkých jazykových modelů pomocí predikce s více tokeny
Poslední příspěvky
- Llama 3.1: Nejpokročilejší model umělé inteligence s otevřeným zdrojovým kódem společnosti Meta – vše, co potřebujete vědět
- Revoluce ve vašem zařízení: Jak AI společnosti Apple mění definici technologie
- Klíč k úspěšným řešením AI? Údaje o chování
- Role GANs při zlepšování kybernetické bezpečnosti
- 10 nejlepších aplikací pro AI účesy (červenec 2024)