Ako fungujú LLM · Prednáška 7 zo 7

Celé GPT-3: všetko dokopy

Za sebou máš neurón, gradient, backpropagation, tokeny, attention aj MLP. Teraz to poskladáme do jedného stroja so 175 miliardami parametrov. Prejdeš si ho blok po bloku, uvidíš, ako sa učí, a nakoniec si otvoríš skutočný malý GPT model, ktorý beží priamo v tvojom prehliadači.

  • 40 až 50 minút
  • Predpoklady: prednášky 1 až 6
  • 9 interaktívnych ukážok
01

GPT-3 jednou vetou

Na začiatku kurzu sme si povedali, že neurónová sieť je funkcia s veľa nastaviteľnými číslami. Teraz už vieš, čo presne to znamená pre GPT-3:

Hlavná myšlienka

GPT-3 je funkcia so 175 181 291 520 gombíkmi. Dostane najviac 2 048 tokenov a vráti rozdelenie pravdepodobnosti nad 50 257 možnými ďalšími tokenmi. Nič viac. Všetko ostatné, aj písanie esejí či preklad, vzniká tak, že túto funkciu zavoláš znova a znova.

P(ďalší token | až 2 048 predošlých tokenov) = GPT-3θ( tokeny ) θ (théta) je všetkých 175 miliárd parametrov naraz. Výstup je 50 257 čísel od 0 po 1 so súčtom 1.

Každý kúsok tohto stroja si už videl. Tu je rýchla mapa kurzu. Ťukni na dlaždicu, ak si chceš niečo pripomenúť.

V tejto prednáške to všetko zapojíme dokopy. Najprv si pozrieš jeden prechod celým modelom, potom spočítame, kde sedí 175 miliárd parametrov, a ukážeme si, ako sa tie čísla nastavili. Na konci si otvoríš skutočný malý GPT, ktorý som natrénoval rovnakým postupom.

02

Jeden prechod modelom, stanica po stanici

Nižšie je celá architektúra GPT-3 ako mapa. Je to presne ten stroj z článku Language Models are Few-Shot Learners (Brown a kol., 2020): 96 blokov, dmodel = 12 288, 96 hláv po 128 rozmeroch, kontext 2 048 tokenov. Informácia tečie zhora nadol a na konci sa vráti na začiatok.

Vyskúšaj si

Prieskumník GPT-3

Ťukni na ktorúkoľvek súčiastku a v paneli vedľa (na mobile pod mapou) uvidíš, čo robí, aké tvary má vstup a výstup a koľko má parametrov. Bloky, attention aj MLP sa dajú otvoriť. Režim „Sleduj jeden token“ prevedie vetu celým modelom krok za krokom.

Úloha: spusti „Sleduj jeden token“ a prejdi všetkých 17 krokov. Potom v mape otvor blok, v ňom attention a vyber si ľubovoľnú hlavu. Všimni si, že jedna hlava má len 6 291 456 parametrov, ale hláv je 96 × 96 = 9 216.

Pár vecí, ktoré z mapy stoja za zapamätanie:

  • Tvar sa nemení. Do bloku vchádza tabuľka n × 12 288 a rovnaká tabuľka vychádza. Preto sa dá naskladať 96 blokov za seba.
  • Reziduálny prúd je chrbtica. Attention a MLP nič neprepisujú, iba pripočítavajú. Každý blok číta, čo tam nechali predošlé, a pridá svoju opravu.
  • Attention mieša informáciu medzi tokenmi, MLP spracuje každý token zvlášť. Tieto dve operácie sa striedajú 96-krát.
  • Výstup závisí len od posledného vektora. Pri generovaní z unembeddingu potrebuješ iba riadok posledného tokenu. Ostatné pozície sa však počítajú tiež, lebo z nich čerpá attention.

Z článku (Brown a kol., 2020, časť 2.1)

Používame rovnaký model a architektúru ako GPT-2, vrátane upravenej inicializácie, pre-normalizácie a reverzibilnej tokenizácie, s výnimkou toho, že vo vrstvách transformera striedame husté a lokálne pásové riedke vzory pozornosti.
Voľný preklad. „Pre-normalizácia“ znamená, že LayerNorm je pred attention a pred MLP, nie za nimi. Presne tak to vidíš v mape bloku.
03

Kde žije 175 miliárd parametrov

V 1. prednáške sme parametre siete na číslice spočítali ručne: 13 002. Pri GPT-3 to ide rovnako, len násobíme väčšie čísla. Tabuľka nižšie ide podľa výpočtu z videí 3Blue1Brown. Rozdeľuje parametre do ôsmich skupín matíc a zanedbáva biasy, LayerNorm a pozičné embeddingy, lebo spolu tvoria menej ako 0,1 %.

SkupinaVýpočetParametrePodiel
Embedding WE12 288 × 50 257617 558 0160,35 %
Key WK128 × 12 288 × 96 hláv × 96 vrstiev14 495 514 6248,27 %
Query WQ128 × 12 288 × 96 × 9614 495 514 6248,27 %
Value WV128 × 12 288 × 96 × 9614 495 514 6248,27 %
Output WO12 288 × 128 × 96 × 9614 495 514 6248,27 %
MLP up-projection49 152 × 12 288 × 9657 982 058 49633,10 %
MLP down-projection12 288 × 49 152 × 9657 982 058 49633,10 %
Unembedding WU50 257 × 12 288617 558 0160,35 %
Spolu175 181 291 520100 %

Z tabuľky vyskakujú tri veci. Dve tretiny modelu sú MLP. Jedna tretina je attention. A embedding s unembeddingom, teda celý „slovník“, je menej ako jedno percento. GPT-3 nie je veľké preto, že pozná veľa slov, ale preto, že má veľmi veľa a veľmi širokých vrstiev.

Mapa v ukážke vyššie má aj režim „Kde je 175 miliárd“, kde vidíš tie isté čísla ako plochy. A teraz si postav vlastný model. Rovnaké vzorce platia pre každý GPT.

Vyskúšaj si

Postav si vlastné GPT

Posúvaj počet blokov, šírku dmodel, počet a veľkosť hláv, slovník a kontext. Pruhy ukazujú osem skupín matíc, súčet sa počíta rovnakým vzorcom ako tabuľka. Predvoľby sú všetkých osem modelov z tabuľky 2.1 článku GPT-3.

Úloha: klikni postupne na Small, XL a 175B a porovnaj súčet s hodnotou z článku. Potom pri 175B zdvojnásob dmodel. Parametre v blokoch sa zoštvornásobia, lebo každá matica rastie v oboch rozmeroch. Zdvojnásobenie počtu blokov ich len zdvojnásobí.

Prečo súčet nesedí s článkom na desatinu presne

Článok uvádza zaokrúhlené čísla (125M, 175,0B) a nepíše, čo presne započítal. GPT-2 používa pre embedding aj unembedding tú istú maticu, takže sa započíta len raz. Ukážka preto ukazuje aj „podrobný počet“ v štýle GPT-2: jedna spoločná matica slovníka, k tomu pozície, biasy a LayerNorm. Pri malých modeloch sedí s článkom oveľa lepšie, pri 175B sa oba spôsoby líšia o menej ako pol percenta.

04

Ako sa GPT-3 naučilo svojich 175 miliárd čísel

Na začiatku tréningu je každý z parametrov náhodné malé číslo. Model vtedy vypisuje nezmysly. Nikto mu potom neukazuje „správne odpovede“ na otázky. Úloha je oveľa jednoduchšia a dá sa vyrobiť z akéhokoľvek textu: uhádni ďalší token.

Každá pozícia v texte je jeden príklad

Zober vetu „The capital of France is Paris“. Z nej máš rovno päť úloh: po „The“ má prísť „ capital“, po „The capital“ má prísť „ of“, a tak ďalej. Vďaka maske v attention (5. prednáška) sa token nemôže pozrieť dopredu, takže model môže všetky pozície vyriešiť naraz v jednom prechode a nikde nepodvádza. Z jednej sekvencie s 2 048 tokenmi je tak 2 048 tréningových príkladov. Tomu sa hovorí self-supervised učenie: správne odpovede sú priamo v texte.

Strata: −ln p správneho tokenu

Pre každú pozíciu model vráti pravdepodobnosti. Zaujíma nás len jedna z nich: koľko dal tokenu, ktorý v texte naozaj nasledoval. Ak mu dal 1, strata je 0. Ak mu dal skoro nulu, strata letí do nekonečna. Tejto funkcii sa hovorí cross-entropy.

strata = −ln p(správny token)     priemer cez všetky pozície v dávke ln je prirodzený logaritmus. Pri p = 1 je strata 0, pri p = 0,5 je 0,69, pri p = 0,01 je 4,6.
Vyskúšaj si

Strata jednej predpovede

Model doplňuje „The capital of France is“. Vyber, ktorý token bol v trénovacom texte naozaj ďalší, a posúvaj, akú pravdepodobnosť mu model dal. Pravdepodobnosti sú ilustračné.

Úloha: vyber „␣Lyon“. Model mu dal len 0,02, strata je 3,9. Potom posuň p k 1 a sleduj, ako strata padá k nule. Tréning nerobí nič iné: mení váhy tak, aby táto červená krivka na priemer klesala.

Jeden krok učenia

Krok učenia je presne ten istý cyklus ako v 2. a 3. prednáške, len s obrovskými číslami. Dávka textu, forward prechod, strata, backpropagation, malá úprava všetkých váh. GPT-3 v jednej dávke spracovalo 3,2 milióna tokenov a dokopy videlo 300 miliárd tokenov. To je zhruba 300 000 000 000 / 3 200 000 ≈ 93 750 krokov. Je to len približné číslo, lebo dávka sa na začiatku tréningu postupne zväčšovala.

Vyskúšaj si

Tréningová slučka

Bod obieha päť staníc jedného kroku. Prepínaj medzi skutočnými číslami GPT-3 a mini-GPT z tejto prednášky. Tlačidlo „500 krokov naraz“ zrýchli počítadlo.

Všimni si: v kroku 4 sa počíta gradient pre všetkých 175 miliárd parametrov naraz, nie pre jeden. Bez backpropagation z 3. prednášky by bol jeden krok nemysliteľne drahý.

Detaily z prílohy B článku: optimalizátor Adam (β1 = 0,9, β2 = 0,95), rýchlosť učenia 0,6 × 10−4 s lineárnym zahriatím (warmup) na začiatku a kosínusovým poklesom na 10 %, orezanie gradientu na normu 1,0 a weight decay 0,1. Adam je vylepšený gradientný zostup: pre každý parameter si pamätá kĺzavý priemer gradientov a podľa neho volí veľkosť kroku. Podstata je stále tá istá ako v 2. prednáške: krok proti gradientu.

Koľko to stálo

Podľa článku spotreboval tréning GPT-3 175B asi 3,14 × 1023 operácií s plávajúcou čiarkou. Dá sa to odhadnúť aj ručne: forward a backward stoja spolu zhruba 6 operácií na parameter a token, teda 6 × 175 miliárd × 300 miliárd ≈ 3,15 × 1023.

Ako vyzerá učenie na vlastné oči

Pre GPT-3 krivku učenia nevidíme, ale pre mini-GPT z tejto prednášky áno. Natrénoval som ho tým istým postupom: ďalší token, cross-entropy, backpropagation, Adam s warmupom, kosínusovým poklesom a weight decay 0,1. Tokeny sú tu jednotlivé znaky a text tvorí osem Shakespearových hier. Počas tréningu som si zapisoval stratu a občas nechal model niečo napísať.

Skutočné dáta

Krivka učenia mini-GPT

Červená je strata na trénovacích dávkach, tyrkysové body sú strata na texte, ktorý model pri tréningu nevidel. Posuvníkom alebo kliknutím do grafu vyber krok a pod grafom si prečítaj, čo model v tej chvíli písal.

Úloha: prejdi kroky od 0 po koniec. Na začiatku je to náhodná zmes znakov. Potom sa objavia medzery a samohlásky, potom krátke slová, mená postáv veľkými písmenami a nakoniec riadky, ktoré vyzerajú ako divadelná hra. Gramatika a zmysel sú stále slabé. Model je milión ráz menší ako GPT-3.

05

Čo GPT-3 čítalo

Model je taký dobrý, aké sú dáta, na ktorých predpovedal ďalší token. Autori zobrali internetový archív Common Crawl, odfiltrovali z neho nekvalitné stránky, odstránili duplikáty a pridali kvalitnejšie zbierky: WebText2, dve zbierky kníh a anglickú Wikipédiu.

Vyskúšaj si

Zmes trénovacích dát

Prepínaj medzi tým, aké veľké sú jednotlivé sady, akú majú váhu v tréningu a koľkokrát ich model prečítal. Čísla sú z tabuľky 2.2 článku.

Všimni si: Wikipedia má len 3 miliardy tokenov, ale model ju videl 3,4-krát. Common Crawl je 136-krát väčší, a predsa z neho model nevidel ani polovicu. Autori vedome uprednostnili kvalitu pred množstvom.

300 mld.tokenov počas tréningu

Pri bežnom odhade 0,75 slova na token je to asi 225 miliárd slov.

≈ 1 700rokov čítania

Toľko by trvalo prečítať to rýchlosťou 250 slov za minútu, bez spánku a bez prestávky.

570 GBCommon Crawl po filtrovaní

Z pôvodných 45 TB komprimovaného textu z rokov 2016 až 2019.

06

Generovanie: jeden token, a znova

Natrénovaný model vie jedinú vec: k textu vrátiť pravdepodobnosti ďalšieho tokenu. Ako z toho vznikne celá odpoveď? Jednoducho slučkou, ktorú si videl v prieskumníku ako žltú šípku:

  1. Prežeň celý doterajší text modelom a zober pravdepodobnosti z poslednej pozície.
  2. Vyžrebuj podľa nich jeden token. Teplota (4. prednáška) určí, či sa drží najpravdepodobnejších, alebo riskuje.
  3. Pripoj token na koniec textu a choď na krok 1. Skonči pri špeciálnom tokene konca alebo pri limite dĺžky.

Z toho plynú tri dôležité dôsledky:

  • Odpovede sa líšia. Ak teplota nie je nula, rovnaká otázka dá zakaždým iný žreb, a teda inú odpoveď.
  • Model nič neplánuje dopredu v texte. Každý token vzniká zvlášť. Akýkoľvek „plán“ musí byť zakódovaný vo vektoroch reziduálneho prúdu.
  • Čo vypadne z kontextu, neexistuje. GPT-3 vidí naraz najviac 2 048 tokenov. Staršie tokeny model jednoducho nevidí.

Chat je len dokument

Keď sa rozprávaš s chatbotom, model nevidí „konverzáciu“. Vidí jeden dlhý text: nejaké úvodné inštrukcie, tvoje správy a jeho doterajšie odpovede, oddelené dohodnutými značkami. A pokračuje v ňom, token po tokene. Chatboty ako ChatGPT sú navyše po základnom tréningu doladené na príkladoch dobrých odpovedí a na hodnoteniach od ľudí, aby takéto dokumenty dopĺňali užitočne. Základný stroj je ale ten istý.

07

Skutočné mini-GPT, ktoré si otvoríš

GPT-3 si do prehliadača nestiahneš: len jeho váhy by mali stovky gigabajtov. Preto som natrénoval jeho miniatúru s rovnakou architektúrou: token embedding a naučený pozičný embedding, bloky s LayerNorm pred attention aj pred MLP, kauzálna multi-head attention, MLP so 4-násobnou šírkou a GELU, záverečná LayerNorm, unembedding a softmax. Rozdiel je len vo veľkosti:

65tokenov v slovníku

Tokenom je jeden znak: písmená, medzera, nový riadok a interpunkcia.

3 × 4bloky × hlavy

dmodel = 64, každá hlava má 16 rozmerov, MLP má 256 neurónov.

64znakov kontextu

Model vidí naraz len posledných 64 znakov.

162 496parametrov

Vrátane biasov, LayerNorm a pozícií. Výpočtom 3Blue1Brown 155 776.

Tréning som napísal v čistom JavaScripte, bez knižníc. Forward aj backward prechod sú naprogramované ručne a gradienty som overil numericky, rovnako ako v 3. prednáške. Model videl 4 000 krokov po 32 úsekoch so 64 znakmi, teda asi 8,2 milióna znakov, a strata na texte, ktorý pri tréningu nevidel, klesla zo 4,18 na 1,53. Celý tréning trval asi 27 minút na obyčajnom 6-jadrovom procesore. Výsledok píše text, ktorý vyzerá ako Shakespeare, kým ho nezačneš čítať: slová väčšinou existujú, mená postáv sedia, zmysel nie.

Vyskúšaj si

Otvor si mini-GPT

Napíš text a sleduj každý krok výpočtu so skutočnými číslami: tokeny a ich ID, embedding, reziduálny prúd po každom bloku, vzory pozornosti všetkých 12 hláv, aktivácie 256 neurónov MLP a pravdepodobnosti ďalšieho znaku. Tlačidlo „Generuj“ pridáva znaky jeden po druhom a všetky obrázky sa pri tom menia.

Úloha: napíš „ROMEO.“ a nový riadok a nechaj model generovať. Potom ťukni na znak v strede slova a pozri sa do bloku 1 na hlavy attention. Niektoré sa pozerajú len na predošlý znak, iné na začiatok slova alebo na nový riadok. Nakoniec zdvihni teplotu na 2 a znova generuj: text sa rozpadne na náhodné písmená.

Toto je celý princíp GPT-3 v malom. Keď v mini-GPT zväčšíš dmodel z 64 na 12 288, bloky z 3 na 96, hlavy zo 4 na 96, znaky vymeníš za 50 257 BPE tokenov a 8 miliónov znakov za 300 miliárd tokenov, dostaneš GPT-3. Nič iné sa nemení. Kód forward prechodu by zostal skoro rovnaký.

08

Učenie bez zmeny váh: zero-, one- a few-shot

Hlavný objav článku o GPT-3 je v jeho názve: Language Models are Few-Shot Learners. Starší prístup bol takýto: na každú úlohu (preklad, otázky, klasifikácia) model ďalej dotrénuješ na tisícoch príkladov. To sa volá fine-tuning a mení váhy. GPT-3 ukázalo, že veľkému modelu stačí úlohu opísať a ukázať pár príkladov priamo v texte.

Translate English to French: sea otter => loutre de mer peppermint => menthe poivrée plush giraffe => girafe peluche cheese => fromage

Toto je prompt podobný obrázku 2.1 v článku. Model nevie, že „robí preklad“. Vidí dokument, v ktorom sa opakuje vzor „anglické slovo => francúzske slovo“, a najpravdepodobnejšie pokračovanie je dodržať ho. Autori to volajú in-context learning: učenie z kontextu.

Vyskúšaj si

Zero-shot, one-shot, few-shot

Prepínaj, koľko príkladov dostane model v prompte. Sleduj, čo sa mení v modeli.

Všimni si: počet zmenených váh je vždy 0. Rozdiel je len v texte na vstupe. Článok ukazuje, že s počtom príkladov a s veľkosťou modelu presnosť rastie, a že najväčší model z toho ťaží najviac.

Z článku (Brown a kol., 2020)

Pre všetky úlohy sa GPT-3 používa bez akýchkoľvek gradientných krokov alebo fine-tuningu. Úlohy a ukážky sú zadané čisto textom, v interakcii s modelom.
Voľný preklad z abstraktu. Pri few-shot autori zvyčajne dávali 10 až 100 príkladov, koľko sa zmestí do 2 048 tokenov.

Ako to môže fungovať? Presne to nevieme. Autori sami píšu, že nie je jasné, či sa model úlohu z príkladov naozaj „učí“, alebo iba rozpozná úlohu, ktorú videl v trénovacích dátach. Isté je len to, že všetka práca sa deje v attention a MLP počas jedného forward prechodu.

09

Mierka: od 13 002 po 175 miliárd

Všetky siete z tohto kurzu sú postavené z rovnakých dielov: násobenie matice vektorom, nelinearita, gradient, backpropagation. Líšia sa hlavne veľkosťou. A tá je taká rozdielna, že ju na obyčajnej osi nevidno. Preto logaritmická os, na ktorej každá čiarka znamená 10× viac.

Vyskúšaj si

Od siete na číslice po GPT-3

Hore sú počty parametrov piatich sietí. Dole posúvaj dĺžku kontextu a sleduj, koľko skóre attention treba spočítať.

Úloha: nastav kontext na 4 096 tokenov, teda dvakrát viac ako GPT-3. Počet skóre attention sa zväčší skoro štyrikrát. Toto je dôvod, prečo je dlhý kontext drahý.

Attention porovnáva každý token s každým predošlým, takže práca rastie s druhou mocninou dĺžky kontextu, n². Aj preto GPT-3 v polovici vrstiev používa lokálne pásové riedke vzory: token sa tam pozerá len na blízke tokeny.

Čo bolo po GPT-3? Novšie modely, napríklad GPT-4, stoja na tej istej myšlienke transformera, ktorý predpovedá ďalší token. Sú väčšie, trénované na viac a lepších dátach a po základnom tréningu ešte doladené na užitočné a bezpečné odpovede. Pri GPT-4 OpenAI veľkosť ani presnú architektúru nezverejnil, preto o nich nebudeme hádať.

10

Čo vieme a čo nevieme

Na konci kurzu je fér povedať, kde sú hranice nášho poznania.

  • Vieme presne, čo model počíta. Každé násobenie a každé číslo sa dá vypísať, ako v mini-GPT vyššie. Žiadna mágia tam nie je.
  • Nevieme dobre, prečo to funguje. Z 175 miliárd čísel nevieme jednoducho prečítať, kde je uložený fakt o Paríži alebo ako model sčítava čísla. Odbor interpretability to skúma: hľadá, čo znamenajú jednotlivé neuróny a smery v reziduálnom prúde. Superpozícia zo 6. prednášky je jeden z dôvodov, prečo je to ťažké.
  • Halucinácie nie sú porucha, ale vedľajší účinok. Model vždy vráti nejaké pravdepodobnosti a vždy sa dá vyžrebovať ďalší token. Neexistuje v ňom zvláštny výstup „neviem“, rovnako ako sieť na číslice z 1. prednášky nevedela povedať, že to nie je číslica. Plynulý a sebavedomý text preto ešte neznamená pravdivý.
  • Model nevie nič po konci dát. Pozná len texty z čias pred tréningom. Čo sa stalo potom, môže iba hádať.

Článok o GPT-3 to sám priznáva: texty sa niekedy opakujú, pri dlhších pasážach strácajú súvislosť a protirečia si. Autori venujú celú kapitolu aj rizikám, napríklad predsudkom prevzatým z dát.

11

Záverečný kvíz celého kurzu

Osem otázok naprieč všetkými siedmimi prednáškami. Nič sa nikam neposiela.

1. Čo presne vráti GPT-3 po jednom forward prechode?

2. Kde je väčšina parametrov GPT-3?

3. Model dal správnemu ďalšiemu tokenu pravdepodobnosť 0,25. Aká je strata (cross-entropy)?

4. Prečo môže byť pri tréningu každá pozícia v texte samostatný príklad, a to všetky v jednom prechode?

5. Čo sa zmení v GPT-3, keď mu v prompte dáš päť príkladov úlohy (few-shot)?

6. Čo spočíta backpropagation v jednom kroku tréningu GPT-3?

7. Čo majú spoločné sieť na číslice z 1. prednášky a GPT-3?

8. Čo sa stane, keď pri generovaní zvýšiš teplotu?

12

Čo si odnášaš z celého kurzu

  • GPT-3 je funkcia so 175 181 291 520 parametrami (výpočtom 3Blue1Brown). Z najviac 2 048 tokenov spraví pravdepodobnosti pre 50 257 možných ďalších tokenov.
  • Tok informácie: tokenizer → embedding + pozícia → 96 blokov (LayerNorm, attention, pripočítanie, LayerNorm, MLP, pripočítanie) → LayerNorm → unembedding → softmax → token → znova.
  • Dve tretiny parametrov sú v MLP, tretina v attention a menej ako percento v slovníku.
  • Tréning je predpovedanie ďalšieho tokenu na 300 miliardách tokenov: cross-entropy, backpropagation cez 96 blokov a Adam. Zhruba 93 750 krokov po 3,2 milióna tokenov.
  • Generovanie je slučka. Chat je len dokument, ktorý model dopĺňa.
  • In-context learning: príklady v prompte zmenia správanie bez zmeny jedinej váhy.
  • Mini-GPT so 162 496 parametrami je ten istý stroj, len asi milión ráz menší. A napíše niečo, čo vyzerá ako Shakespeare.

Kurz je za tebou

Prešiel si celú cestu od jedného neurónu k modelu so 175 miliardami parametrov. Keď nabudúce uvidíš chatbota písať odpoveď slovo po slove, budeš presne vedieť, čo sa deje: 96 blokov, attention, MLP, softmax a žreb. Znova a znova.

Späť na prehľad kurzu

Zdroje