Susisiekti su mumis

Dirbtinis intelektas

Didelių kalbų modelio parametrų ir atminties reikalavimų supratimas: gilus nardymas

mm

paskelbta

 on

Parametrų skaičiavimas transformatorių pagrindu veikiančiose LLM

Dideli kalbų modeliai (LLM) pastaraisiais metais padarė didelę pažangą. Tokie modeliai kaip GPT-4, Google Gemini ir Claude 3 nustato naujus galimybių ir programų standartus. Šie modeliai ne tik pagerina teksto generavimą ir vertimą, bet ir laužo naujus kelius daugiarūšio apdorojimo srityje, derindami teksto, vaizdo, garso ir vaizdo įvestis, kad pateiktų išsamesnius AI sprendimus.

Pavyzdžiui, „OpenAI GPT-4“ žymiai pagerino žmogaus panašaus teksto supratimą ir generavimą, o „Google“ „Gemini“ modeliai puikiai valdo įvairius duomenų tipus, įskaitant tekstą, vaizdus ir garsą, o tai leidžia sklandžiau ir pagal kontekstą sąveikauti. Panašiai, Anthropic's Claude 3 modeliai pasižymi daugiakalbystės galimybėmis ir geresniu DI užduočių našumu.

Kadangi LLM kūrimas ir toliau spartėja, labai svarbu suprasti šių modelių sudėtingumą, ypač jų parametrus ir atminties reikalavimus. Šiame vadove siekiama išsiaiškinti šiuos aspektus, pateikiant išsamų ir lengvai suprantamą paaiškinimą.

Didžiųjų kalbų modelių pagrindai

Kas yra didelių kalbų modeliai?

Dideli kalbų modeliai yra neuroniniai tinklai, parengti naudojant didžiulius duomenų rinkinius, kad suprastų ir generuotų žmonių kalbą. Jie remiasi tokiomis architektūromis kaip „Transformatoriai“, kurios naudoja tokius mechanizmus kaip dėmesys į save, kad apdorotų ir sukurtų tekstą.

Parametrų svarba LLM

Parametrai yra pagrindiniai šių modelių komponentai. Jie apima svorį ir paklaidas, kurias modelis koreguoja treniruotės metu, kad sumažintų prognozių klaidas. Parametrų skaičius dažnai koreliuoja su modelio talpa ir našumu, bet taip pat turi įtakos jo skaičiavimo ir atminties reikalavimams.

Transformatorių architektūros supratimas

Transformatoriai-architektūra

Transformatorių architektūra

Apžvalga

Transformatoriaus architektūra, pristatyta Vaswani ir kt. dokumente „Attention Is All You Need“. (2017), tapo daugelio LLM pagrindu. Jį sudaro kodavimo įrenginys ir dekoderis, kurių kiekvienas sudarytas iš kelių vienodų sluoksnių.

Kodavimo ir dekoderio komponentai

  • Daviklių: apdoroja įvesties seką ir sukuria kontekstinį vaizdą.
  • dekoderis: generuoja išvesties seką, naudodamas kodavimo įrenginio atvaizdą ir anksčiau sugeneruotus prieigos raktus.

Pagrindiniai statybiniai blokai

  1. Daugiagalvis dėmesys: leidžia modeliui vienu metu sutelkti dėmesį į skirtingas įvesties sekos dalis.
  2. Neuroniniai tinklai: suteikia modeliui netiesiškumo ir sudėtingumo.
  3. Sluoksnio normalizavimas: stabilizuoja ir pagreitina treniruotę normalizuodamas tarpinius rezultatus.

Parametrų skaičiaus apskaičiavimas

Transformatorių mokymas

Iš anksto paruošti modeliai efektyviam transformatorių mokymui

Parametrų skaičiavimas transformatorių pagrindu veikiančiose LLM

Išskaidykime kiekvieno transformatoriumi pagrįsto LLM komponento parametrų skaičiavimą. Naudosime žymą iš originalaus popieriaus, kur d_model atspindi modelio paslėptų būsenų dimensiją.

  1. Sluoksnio įterpimas:
    • Parametrai = vocab_size * d_model
  2. Daugiagalvis dėmesys:
    • Dėl h galvos, su d_k = d_v = d_model / h:
    • Parametrai = 4 * d_model^2 (skirta Q, K, V ir išvesties projekcijoms)
  3. „Fed-Forward“ tinklas:
    • Parametrai = 2 * d_model * d_ff + d_model + d_ff
    • Kur d_ff paprastai yra 4* d_model
  4. Sluoksnio normalizavimas:
    • Parametrai = 2 * d_model (dėl masto ir šališkumo)

Bendri vieno transformatoriaus sluoksnio parametrai:

  • Parameters_layer = Parameters_attention + Parameters_ffn + 2* Parameters_layernorm

Modeliui su N sluoksniai:

  • Iš viso parametrų = N * Parameters_layer + Parameters_embedding + Parameters_output

Skaičiavimo pavyzdys

Panagrinėkime modelį su šiomis specifikacijomis:

  • d_model = 768
  • h (dėmesio galvų skaičius) = 12
  • N (sluoksnių skaičius) = 12
  • vocab_size = 50,000
  1. Sluoksnio įterpimas:
    • 50,000 * 768 = 38,400,000
  2. Daugiagalvis dėmesys:
    • 4 * 768^ 2 = 2,359,296
  3. „Fed-Forward“ tinklas:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616 XNUMX XNUMX
  4. Sluoksnio normalizavimas:
    • 2 * 768 = 1,536

Bendras sluoksnio parametrų skaičius:

  • 2,359,296 4,719,616 2 + 1,536 7,081,984 XNUMX + (XNUMX * XNUMX XNUMX) = XNUMX XNUMX XNUMX

Bendri parametrai 12 sluoksnių:

  • 12 * 7,081,984 = 84,983,808

Bendri modelio parametrai:

  • 84,983,808 + 38,400,000 = 123,383,808

Šis modelis turėtų maždaug 123 milijonus parametrų.

Atminties naudojimo tipai

Dirbdami su LLM, turime atsižvelgti į du pagrindinius atminties naudojimo tipus:

  1. Modelio atmintis: atmintis, reikalinga modelio parametrams išsaugoti.
  2. Darbinė atmintis: atmintis, reikalinga atliekant išvadas arba treniruojantis tarpiniams aktyvinimams, gradientams ir optimizavimo būsenoms išsaugoti.

Modelio atminties skaičiavimas

Modelio atmintis yra tiesiogiai susijusi su parametrų skaičiumi. Kiekvienas parametras paprastai išsaugomas kaip 32 bitų slankiojo kablelio skaičius, nors kai kuriuose modeliuose naudojamas mišrus tikslumo mokymas su 16 bitų slankiuoju kableliu.

Modelio atmintis (baitai) = parametrų skaičius * baitai vienam parametrui

Mūsų pavyzdiniam modeliui su 123 milijonais parametrų:

  • Modelio atmintis (32 bitų) = 123,383,808 4 493,535,232 * 494 baitai = XNUMX XNUMX XNUMX baitai ≈ XNUMX MB
  • Modelio atmintis (16 bitų) = 123,383,808 2 246,767,616 * 247 baitai = XNUMX XNUMX XNUMX baitai ≈ XNUMX MB

Darbinės atminties įvertinimas

Darbinės atminties reikalavimai gali labai skirtis priklausomai nuo konkrečios užduoties, partijos dydžio ir sekos ilgio. Apytikslis darbinės atminties įvertinimas atliekant išvadas yra toks:

Darbinė atmintis ≈ 2 * Modelio atmintis

Tai apima ir modelio parametrų, ir tarpinių aktyvavimų saugojimą. Treniruotės metu atminties reikalavimai gali būti dar didesni, nes reikia saugoti gradientus ir optimizavimo būsenas:

Treniruočių atmintis ≈ 4 * Modelio atmintis

Mūsų modelio pavyzdys:

  • Išvados darbinė atmintis ≈ 2 * 494 MB = 988 MB ≈ 1 GB
  • Treniruočių atmintis ≈ 4 * 494 MB = 1,976 2 MB ≈ XNUMX GB

Pastovios būsenos atminties naudojimas ir didžiausias atminties naudojimas

Treniruojant didelius kalbos modelius, pagrįstus Transformer architektūra, norint efektyviai paskirstyti išteklius, labai svarbu suprasti atminties naudojimą. Suskirstykime atminties reikalavimus į dvi pagrindines kategorijas: pastovios būsenos atminties naudojimą ir didžiausią atminties naudojimą.

Pastovios būsenos atminties naudojimas

Pastovios būsenos atminties naudojimą sudaro šie komponentai:

  1. Modelio svoriai: FP32 modelio parametrų kopijos, reikalaujančios 4N baitų, kur N yra parametrų skaičius.
  2. Optimizavimo būsenos: Adam optimizatoriui tam reikia 8N baitų (2 būsenos vienam parametrui).
  3. Gradientai: FP32 gradientų kopijos, reikalaujančios 4N baitų.
  4. Įvesties duomenys: Darant prielaidą, kad int64 įvestis, tam reikia 8BD baitų, kur B yra partijos dydis, o D yra įvesties matmenys.

Bendras pastovios būsenos atminties naudojimas gali būti apytikslis:

  • M_steady = 16N + 8BD baitai

Didžiausias atminties naudojimas

Didžiausias atminties panaudojimas įvyksta grįžtant atgal, kai suaktyvinimai išsaugomi gradiento skaičiavimui. Pagrindiniai didžiausios atminties veiksniai yra šie:

  1. Sluoksnio normalizavimas: Reikia 4E baitų vienai sluoksnio normai, kur E = BSH (B: partijos dydis, S: sekos ilgis, H: paslėptas dydis).
  2. Dėmesio blokas:
    • QKV skaičiavimas: 2E baitai
    • Dėmesio matrica: 4BSS baitai (S: sekos ilgis)
    • Dėmesio išvestis: 2E baitai
  3. Tiekimo pirmyn blokas:
    • Pirmasis linijinis sluoksnis: 2E baitai
    • GELU aktyvinimas: 8E baitai
    • Antrasis linijinis sluoksnis: 2E baitai
  4. Kryžminės entropijos praradimas:
    • Logitai: 6BSV baitai (V: žodyno dydis)

Bendra aktyvinimo atmintis gali būti apskaičiuota taip:

  • M_act = L * (14E + 4BSS) + 6BSV baitai

Kur L yra transformatoriaus sluoksnių skaičius.

Visas didžiausias atminties naudojimas

Didžiausią atminties sunaudojimą treniruotės metu galima apytiksliai apskaičiuoti derinant pastovios būsenos atmintį ir aktyvinimo atmintį:

  • M_peak = M_steady + M_act + 4BSV baitai

Papildomas 4BSV terminas sudaro papildomą paskirstymą atgalinio leidimo pradžioje.

Suprasdami šiuos komponentus, galime optimizuoti atminties naudojimą mokymo ir išvadų metu, užtikrindami efektyvų išteklių paskirstymą ir geresnį didelių kalbų modelių veikimą.

Mastelio keitimo įstatymai ir efektyvumo svarstymai

 LLM mastelio keitimo įstatymai

Tyrimai parodė, kad LLM našumas linkęs laikytis tam tikrų mastelio dėsnių, kai didėja parametrų skaičius. Kaplan ir kt. (2020) pastebėjo, kad modelio našumas gerėja kaip parametrų skaičiaus, apskaičiuojamo biudžeto ir duomenų rinkinio dydžio galios dėsnis.

Ryšys tarp modelio veikimo ir parametrų skaičiaus gali būti apytikslis:

Spektaklis ∝ N^α

Kur N yra parametrų skaičius, o α yra mastelio keitimo eksponentas, paprastai apie 0.07 kalbos modeliavimo užduotims.

Tai reiškia, kad norint pasiekti 10 % našumo pagerėjimą, turime padidinti parametrų skaičių 10^(1/α) ≈ 3.7.

Efektyvumo metodai

Kadangi LLM ir toliau auga, mokslininkai ir praktikai sukūrė įvairius metodus, kad pagerintų efektyvumą:

a) Mišrus tikslumo mokymas: 16 bitų ar net 8 bitų slankiojo kablelio skaičių naudojimas tam tikroms operacijoms, siekiant sumažinti atminties naudojimą ir skaičiavimo reikalavimus.

b) Modelio lygiagretumas: modelio paskirstymas keliuose GPU arba TPU, kad būtų galima valdyti didesnius modelius, nei telpa viename įrenginyje.

c) Gradiento tikrinimas: Prekybos atmintis skaičiavimas iš naujo apskaičiuojant tam tikrus aktyvavimus perėjimo atgal metu, o ne juos išsaugant.

d) Genėjimas ir kvantavimas: pašalinkite mažiau svarbius svorius arba sumažinkite jų tikslumą po treniruotės, kad būtų sukurti mažesni, efektyvesni modeliai.

e) Distiliavimas: mažesnių modelių mokymas imituoti didesnių modelių elgesį, potencialiai išsaugant daugumą našumo naudojant mažiau parametrų.

Praktinis pavyzdys ir skaičiavimai

GPT-3, vienas didžiausių kalbos modelių, turi 175 milijardus parametrų. Jis naudoja transformatoriaus architektūros dekoderio dalį. Norėdami suprasti jo mastą, suskaidykime parametrų skaičių hipotetinėmis reikšmėmis:

  • d_model = 12288
  • d_ff = 4 * 12288 = 49152
  • Sluoksnių skaičius = 96

Vienam dekoderio sluoksniui:

Iš viso parametrų = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 mlrd.

Iš viso 96 sluoksniai:

1.1 milijardo * 96 = 105.6 milijardo

Likę parametrai gaunami iš įterpimo ir kitų komponentų.

Išvada

Norint efektyviai kurti, mokyti ir naudoti šiuos galingus įrankius, labai svarbu suprasti didelių kalbų modelių parametrus ir atminties reikalavimus. Išskaidę Transformatoriaus architektūros komponentus ir nagrinėdami praktinius pavyzdžius, tokius kaip GPT, įgyjame gilesnę įžvalgą apie šių modelių sudėtingumą ir mastą.

Norėdami geriau suprasti naujausius didelių kalbų modelių ir jų taikomųjų programų pasiekimus, peržiūrėkite šiuos išsamius vadovus:

Pastaruosius penkerius metus praleidau pasinerdamas į žavų mašininio mokymosi ir giluminio mokymosi pasaulį. Mano aistra ir patirtis paskatino mane prisidėti prie daugiau nei 50 įvairių programinės įrangos inžinerijos projektų, ypatingą dėmesį skiriant AI/ML. Mano nuolatinis smalsumas taip pat patraukė mane į natūralios kalbos apdorojimą – sritį, kurią noriu tyrinėti toliau.