Povežite se z nami

Umetna inteligenca

Razumevanje parametrov modela velikega jezika in pomnilniških zahtev: poglobljeno raziskovanje

mm

objavljeno

 on

Izračun parametrov v LLM na osnovi transformatorjev

Veliki jezikovni modeli (LLM) je v zadnjih letih dosegel izjemen napredek. Modeli, kot so GPT-4, Googlov Gemini in Claude 3, postavljajo nove standarde v zmogljivostih in aplikacijah. Ti modeli ne izboljšujejo le ustvarjanja in prevajanja besedila, ampak tudi orjejo ledino v multimodalni obdelavi, saj združujejo besedilne, slikovne, avdio in video vhode za zagotavljanje celovitejših rešitev AI.

Na primer, GPT-4 OpenAI je pokazal pomembne izboljšave pri razumevanju in ustvarjanju besedila, podobnega človeku, medtem ko se Googlovi modeli Gemini odlikujejo pri ravnanju z različnimi tipi podatkov, vključno z besedilom, slikami in zvokom, kar omogoča bolj brezhibno in kontekstualno relevantno interakcijo. Podobno so Anthropicovi modeli Claude 3 znani po svojih večjezičnih zmogljivostih in izboljšani zmogljivosti pri nalogah AI.

Ker se razvoj LLM še naprej pospešuje, postane razumevanje zapletenosti teh modelov, zlasti njihovih parametrov in pomnilniških zahtev, ključnega pomena. Namen tega priročnika je demistificirati te vidike ter ponuditi podrobno in lahko razumljivo razlago.

Osnove velikih jezikovnih modelov

Kaj so veliki jezikovni modeli?

Veliki jezikovni modeli so nevronske mreže, usposobljene na ogromnih zbirkah podatkov za razumevanje in ustvarjanje človeškega jezika. Zanašajo se na arhitekture, kot je Transformers, ki za obdelavo in ustvarjanje besedila uporabljajo mehanizme, kot je samopozornost.

Pomen parametrov v LLM

Parametri so ključne komponente teh modelov. Vključujejo uteži in pristranskosti, ki jih model prilagaja med usposabljanjem, da zmanjša napake v napovedih. Število parametrov je pogosto v korelaciji z zmogljivostjo in zmogljivostjo modela, vpliva pa tudi na njegove računske in pomnilniške zahteve.

Razumevanje arhitekture transformatorja

Transformatorji-arhitektura

Transformerjeva arhitektura

Pregled

Arhitektura transformatorja, predstavljena v dokumentu »Attention Is All You Need« Vaswanija et al. (2017), je postal temelj za mnoge LLM. Sestavljen je iz kodirnika in dekoderja, ki sta sestavljena iz več enakih plasti.

Komponente kodirnika in dekoderja

  • kodirnik: Obdela vhodno zaporedje in ustvari predstavitev, ki se zaveda konteksta.
  • Dekoder: Generira izhodno zaporedje z uporabo predstavitve kodirnika in predhodno ustvarjenih žetonov.

Ključni gradniki

  1. Večglavna pozornost: Omogoča, da se model osredotoči na različne dele vhodnega zaporedja hkrati.
  2. Naprej nevronske mreže: modelu doda nelinearnost in kompleksnost.
  3. Normalizacija plasti: Stabilizira in pospeši vadbo z normalizacijo vmesnih rezultatov.

Izračun števila parametrov

Usposabljanje za transformatorje

Vnaprej pripravljeni modeli za učinkovito vadbo transformatorjev

Izračun parametrov v LLM na osnovi transformatorjev

Razčlenimo izračun parametrov za vsako komponento LLM, ki temelji na transformatorju. Uporabili bomo zapis iz izvirnega prispevka, kjer d_model predstavlja dimenzijo skritih stanj modela.

  1. Vdelana plast:
    • Parametri = vocab_size * d_model
  2. Večglavna pozornost:
    • za h glave, z d_k = d_v = d_model / h:
    • Parametri = 4 * d_model^2 (za Q, K, V in izhodne projekcije)
  3. Napajalno omrežje:
    • Parametri = 2 * d_model * d_ff + d_model + d_ff
    • Kje d_ff je običajno 4 * d_model
  4. Normalizacija plasti:
    • Parametri = 2 * d_model (za lestvico in pristranskost)

Skupni parametri za eno plast transformatorja:

  • Parameters_layer = Parameters_attention + Parameters_ffn + 2 * Parameters_layernorm

Za model z N plasti:

  • Skupni parametri = N * Parameters_layer + Parameters_embedding + Parameters_output

Primer izračuna

Oglejmo si model z naslednjimi specifikacijami:

  • d_model = 768
  • h (število glav pozornosti) = 12
  • N (število plasti) = 12
  • vocab_size = 50,000
  1. Vdelana plast:
    • 50,000 * 768 = 38,400,000
  2. Večglavna pozornost:
    • 4 * 768^2 = 2,359,296
  3. Napajalno omrežje:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
  4. Normalizacija plasti:
    • 2 * 768 = 1,536

Skupni parametri na sloj:

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

Skupni parametri za 12 plasti:

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

Skupni parametri modela:

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

Ta model bi imel približno 123 milijonov parametrov.

Vrste uporabe pomnilnika

Pri delu z LLM-ji moramo upoštevati dve glavni vrsti uporabe pomnilnika:

  1. Pomnilnik modela: pomnilnik, potreben za shranjevanje parametrov modela.
  2. Delovni pomnilnik: Pomnilnik, potreben med sklepanjem ali usposabljanjem za shranjevanje vmesnih aktivacij, gradientov in stanj optimizatorja.

Izračun pomnilnika modela

Pomnilnik modela je neposredno povezan s številom parametrov. Vsak parameter je običajno shranjen kot 32-bitno število s plavajočo vejico, čeprav nekateri modeli uporabljajo učenje mešane natančnosti s 16-bitnimi plovci.

Pomnilnik modela (bajti) = število parametrov * bajtov na parameter

Za naš primer modela s 123 milijoni parametrov:

  • Pomnilnik modela (32-bitni) = 123,383,808 * 4 bajti = 493,535,232 bajtov ≈ 494 MB
  • Pomnilnik modela (16-bitni) = 123,383,808 * 2 bajti = 246,767,616 bajtov ≈ 247 MB

Ocenjevanje delovnega pomnilnika

Zahteve glede delovnega pomnilnika se lahko znatno razlikujejo glede na specifično nalogo, velikost serije in dolžino zaporedja. Groba ocena delovnega spomina med sklepanjem je:

Delovni pomnilnik ≈ 2 * pomnilnik modela

To upošteva tako shranjevanje parametrov modela kot vmesnih aktivacij. Med usposabljanjem so lahko zahteve po pomnilniku še višje zaradi potrebe po shranjevanju gradientov in stanj optimizatorja:

Usposabljanje pomnilnika ≈ 4 * pomnilnik modela

Za naš primer modela:

  • Sklep Delovni pomnilnik ≈ 2 * 494 MB = 988 MB ≈ 1 GB
  • Pomnilnik za usposabljanje ≈ 4 * 494 MB = 1,976 MB ≈ 2 GB

Uporaba pomnilnika v stabilnem stanju in največja poraba pomnilnika

Pri usposabljanju velikih jezikovnih modelov, ki temeljijo na arhitekturi Transformer, je razumevanje uporabe pomnilnika ključnega pomena za učinkovito dodeljevanje virov. Razčlenimo pomnilniške zahteve v dve glavni kategoriji: uporaba pomnilnika v stabilnem stanju in uporaba največjega pomnilnika.

Poraba pomnilnika v stabilnem stanju

Poraba pomnilnika v stabilnem stanju je sestavljena iz naslednjih komponent:

  1. Uteži modelov: FP32 kopije parametrov modela, ki zahtevajo 4N bajtov, kjer je N število parametrov.
  2. Stanja optimizatorja: Za optimizator Adam to zahteva 8N bajtov (2 stanji na parameter).
  3. Gradienti: FP32 kopije gradientov, ki zahtevajo 4N bajtov.
  4. Vhodni podatki: Ob predpostavki vnosov int64 to zahteva 8BD bajtov, kjer je B velikost serije in D vhodna dimenzija.

Skupno uporabo pomnilnika v stanju dinamičnega ravnovesja je mogoče približno oceniti z:

  • M_steady = 16N + 8BD bajtov

Največja uporaba spomina

Največja poraba pomnilnika se pojavi med prehodom nazaj, ko so aktivacije shranjene za izračun gradienta. K največjemu pomnilniku največ prispevajo:

  1. Normalizacija plasti: zahteva 4E bajtov na normo plasti, kjer je E = BSH (B: velikost paketa, S: dolžina zaporedja, H: skrita velikost).
  2. Blok pozornosti:
    • Izračun QKV: 2E bajtov
    • Matrika pozornosti: 4 BSS bajtov (S: dolžina zaporedja)
    • Izhod pozornosti: 2E bajtov
  3. Blok podajanja naprej:
    • Prva linearna plast: 2E bajtov
    • Aktivacija GELU: 8E bajtov
    • Druga linearna plast: 2E bajtov
  4. Izguba navzkrižne entropije:
    • Logiti: 6BSV bajtov (V: velikost besedišča)

Skupni aktivacijski pomnilnik je mogoče oceniti kot:

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

Kjer je L število transformatorskih plasti.

Skupna največja poraba pomnilnika

Najvišjo porabo pomnilnika med vadbo je mogoče približno oceniti s kombinacijo pomnilnika v stanju dinamičnega ravnovesja in aktivacijskega pomnilnika:

  • M_peak = M_steady + M_act + 4BSV bajtov

Dodatni izraz 4BSV predstavlja dodatno dodelitev na začetku prehoda nazaj.

Z razumevanjem teh komponent lahko optimiziramo uporabo pomnilnika med usposabljanjem in sklepanjem, s čimer zagotovimo učinkovito dodeljevanje virov in izboljšano delovanje velikih jezikovnih modelov.

Zakoni skaliranja in vidiki učinkovitosti

 Zakoni stopnjevanja za LLM

Raziskave so pokazale, da učinkovitost LLM sledi določenim zakonom skaliranja, ko se število parametrov poveča. Kaplan et al. (2020) je opazil, da se učinkovitost modela izboljšuje kot potenčni zakon števila parametrov, računskega proračuna in velikosti nabora podatkov.

Razmerje med zmogljivostjo modela in številom parametrov je mogoče približati z:

Zmogljivost ∝ N^α

Kjer je N število parametrov in α je skalirni eksponent, ki je običajno okoli 0.07 za naloge jezikovnega modeliranja.

To pomeni, da moramo za 10-odstotno izboljšanje zmogljivosti povečati število parametrov za faktor 10^(1/α) ≈ 3.7.

Tehnike učinkovitosti

Ker LLM še naprej rastejo, so raziskovalci in praktiki razvili različne tehnike za izboljšanje učinkovitosti:

a) Usposabljanje mešane natančnosti: Uporaba 16-bitnih ali celo 8-bitnih števil s plavajočo vejico za določene operacije za zmanjšanje porabe pomnilnika in računalniških zahtev.

b) Paralelizem modela: Porazdelitev modela med več grafičnih procesorjev ali procesorjev TPE za obdelavo večjih modelov, kot jih je mogoče namestiti v eno napravo.

c) Gradient Checkpointing: Zamenjava izračuna za pomnilnik s ponovnim izračunavanjem določenih aktivacij med prehodom nazaj, namesto da bi jih shranili.

d) Obrezovanje in kvantizacija: Odstranjevanje manj pomembnih uteži ali zmanjšanje njihove natančnosti po treningu za ustvarjanje manjših, učinkovitejših modelov.

e) Destilacija: Usposabljanje manjših modelov za posnemanje vedenja večjih, s čimer se potencialno ohrani velik del zmogljivosti z manj parametri.

Praktični primer in izračuni

GPT-3, eden največjih jezikovnih modelov, ima 175 milijard parametrov. Uporablja dekodirni del arhitekture Transformer. Da bi razumeli njegovo lestvico, razčlenimo število parametrov s hipotetičnimi vrednostmi:

  • d_model = 12288
  • d_ff = 4 * 12288 = 49152
  • Število plasti = 96

Za en sloj dekodirnika:

Skupni parametri = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 milijarde

Skupaj za 96 slojev:

1.1 milijarde * 96 = 105.6 milijarde

Preostali parametri izvirajo iz vdelave in drugih komponent.

zaključek

Razumevanje parametrov in pomnilniških zahtev velikih jezikovnih modelov je ključnega pomena za učinkovito načrtovanje, usposabljanje in uvajanje teh zmogljivih orodij. Z razčlenitvijo komponent arhitekture Transformer in preučevanjem praktičnih primerov, kot je GPT, pridobimo globlji vpogled v kompleksnost in obseg teh modelov.

Za nadaljnje razumevanje najnovejših napredkov v velikih jezikovnih modelih in njihovih aplikacijah si oglejte te izčrpne vodnike:

Zadnjih pet let sem se potopil v fascinanten svet strojnega in globokega učenja. Moja strast in strokovno znanje sta me pripeljala do tega, da sem prispeval k več kot 50 raznolikim projektom programskega inženiringa, s posebnim poudarkom na AI/ML. Moja nenehna radovednost me je pripeljala tudi do obdelave naravnega jezika, področja, ki ga želim nadalje raziskati.