Spojte se s námi

Umělá inteligence

Pochopení parametrů velkého jazykového modelu a požadavků na paměť: Hluboký ponor

mm

Zveřejněno

 on

Výpočet parametrů v LLM založených na transformátoru

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

Transformátory-architektura

Architektura Transformers

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

  1. Vícehlavá pozornost: Umožňuje modelu soustředit se na různé části vstupní sekvence současně.
  2. Feed-Forward neuronové sítě: Dodává modelu nelinearitu a složitost.
  3. Normalizace vrstev: Stabilizuje a urychluje trénink normalizací středních výkonů.

Výpočet počtu parametrů

Trénink transformátoru

Předtrénované modely pro efektivní trénink transformátorů

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.

  1. Vrstva pro vkládání:
    • Parametry = vocab_size * d_model
  2. Vícehlavá pozornost:
    • Pro h hlavy, s d_k = d_v = d_model / h:
    • Parametry = 4 * d_model^2 (pro Q, K, V a výstupní projekce)
  3. Feed-Forward Network:
    • Parametry = 2 * d_model * d_ff + d_model + d_ff
    • Kde d_ff je typicky 4* d_model
  4. Normalizace vrstev:
    • Parametry = 2 * d_model (pro měřítko a zkreslení)

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 = 768
  • h (počet hlav pozornosti) = 12
  • N (počet vrstev) = 12
  • vocab_size = 50,000
  1. Vrstva pro vkládání:
    • 50,000 * 768 = 38,400,000
  2. Vícehlavá pozornost:
    • 4 * 768^2 = 2,359,296
  3. Feed-Forward Network:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616 XNUMX XNUMX
  4. 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:

  1. Paměť modelu: Paměť potřebná k uložení parametrů modelu.
  2. 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:

  1. Váhy modelů: FP32 kopie parametrů modelu vyžadující 4N bajtů, kde N je počet parametrů.
  2. Stavy optimalizátoru: Pro optimalizátor Adam to vyžaduje 8N bajtů (2 stavy na parametr).
  3. Přechody: FP32 kopie přechodů, vyžadující 4N bajtů.
  4. 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:

  1. Normalizace vrstev: Vyžaduje 4E bajtů na normu vrstvy, kde E = BSH (B: velikost dávky, S: délka sekvence, H: skrytá velikost).
  2. Blok pozornosti:
    • Výpočet QKV: 2E bajtů
    • Attention matrix: 4BSS bajty (S: délka sekvence)
    • Pozor výstup: 2E bajtů
  3. Feed-Forward Block:
    • První lineární vrstva: 2E bajtů
    • Aktivace GELU: 8E bajtů
    • Druhá lineární vrstva: 2E bajtů
  4. 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:

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.