Mākslīgais intelekts
Izpratne par lielu valodu modeļu parametriem un atmiņas prasībām: dziļa niršana
Izdots
6 dienas atpakaļon
By
Ājušs MitālsSatura rādītājs
Lieli valodu modeļi (LLM) pēdējos gados ir piedzīvojuši ievērojamus sasniegumus. Tādi modeļi kā GPT-4, Google Gemini un Claude 3 nosaka jaunus spēju un lietojumprogrammu standartus. Šie modeļi ne tikai uzlabo teksta ģenerēšanu un tulkošanu, bet arī lauž jaunus ceļus multimodālā apstrādē, apvienojot teksta, attēlu, audio un video ievadi, lai nodrošinātu visaptverošākus AI risinājumus.
Piemēram, OpenAI GPT-4 ir uzrādījis ievērojamus uzlabojumus cilvēkiem līdzīga teksta izpratnē un ģenerēšanā, savukārt Google Gemini modeļi ir izcili dažādu datu, tostarp teksta, attēlu un audio, apstrādē, nodrošinot viengabalaināku un kontekstuāli atbilstošāku mijiedarbību. Tāpat Anthropic's Claude 3 modeļi ir pazīstami ar savām daudzvalodu iespējām un uzlabotu veiktspēju AI uzdevumos.
Tā kā LLM attīstība turpina paātrināties, ļoti svarīga kļūst šo modeļu sarežģītības izpratne, jo īpaši to parametri un atmiņas prasības. Šīs rokasgrāmatas mērķis ir demistificēt šos aspektus, piedāvājot detalizētu un viegli saprotamu skaidrojumu.
Lielo valodu modeļu pamati
Kas ir lielo valodu modeļi?
Lielie valodu modeļi ir neironu tīkli, kas apmācīti uz masveida datu kopām, lai saprastu un ģenerētu cilvēku valodu. Viņi paļaujas uz tādām arhitektūrām kā Transformatori, kas teksta apstrādei un radīšanai izmanto tādus mehānismus kā pašapziņa.
Parametru nozīme LLM
Parametri ir šo modeļu galvenās sastāvdaļas. Tie ietver svarus un novirzes, ko modelis pielāgo apmācības laikā, lai samazinātu kļūdas prognozēs. Parametru skaits bieži korelē ar modeļa jaudu un veiktspēju, bet arī ietekmē tā skaitļošanas un atmiņas prasības.
Izpratne par transformatoru arhitektūru
Pārskats
Transformatora arhitektūra, ko ieviesa Vaswani et al. rakstā “Uzmanība ir viss, kas jums nepieciešams”. (2017), ir kļuvis par pamatu daudziem LLM. Tas sastāv no kodētāja un dekodētāja, katrs sastāv no vairākiem identiskiem slāņiem.
Kodētāja un dekodētāja sastāvdaļas
- kodētājs: apstrādā ievades secību un izveido kontekstam atbilstošu attēlojumu.
- dekodētājs: ģenerē izvades secību, izmantojot kodētāja attēlojumu un iepriekš ģenerētos marķierus.
Atslēgas celtniecības bloki
- Vairāku galvu uzmanība: ļauj modelim vienlaikus koncentrēties uz dažādām ievades secības daļām.
- Uz priekšu vērstie neironu tīkli: pievieno modelim nelinearitāti un sarežģītību.
- Slāņu normalizācija: Stabilizē un paātrina treniņu, normalizējot starpproduktus.
Parametru skaita aprēķināšana
Parametru aprēķināšana uz transformatoriem balstītos LLM
Sadalīsim parametru aprēķinu katram transformatora bāzes LLM komponentam. Mēs izmantosim oriģinālā papīra apzīmējumu, kur d_model
apzīmē modeļa slēpto stāvokļu dimensiju.
- Slāņa iegulšana:
- Parametri =
vocab_size
*d_model
- Parametri =
- Vairāku galvu uzmanība:
- Par
h
galvas, ard_k = d_v = d_model / h
: - Parametri = 4*
d_model
^2 (Q, K, V un izvades projekcijām)
- Par
- Pārvades tīkls:
- Parametri = 2*
d_model
*d_ff
+d_model
+d_ff
- Reģions
d_ff
parasti ir 4*d_model
- Parametri = 2*
- Slāņu normalizācija:
- Parametri = 2*
d_model
(mērogam un novirzēm)
- Parametri = 2*
Kopējie parametri vienam transformatora slānim:
Parameters_layer
=Parameters_attention
+Parameters_ffn
+ 2*Parameters_layernorm
Modelim ar N
slāņi:
- Kopējie parametri =
N
*Parameters_layer
+Parameters_embedding
+Parameters_output
Aprēķina piemērs
Apskatīsim modeli ar šādām specifikācijām:
d_model
= 768h
(uzmanības galviņu skaits) = 12N
(slāņu skaits) = 12vocab_size
= 50,000
- Slāņa iegulšana:
- 50,000*768=38,400,000
- Vairāku galvu uzmanība:
- 4 * 768^2 = 2,359,296 XNUMX XNUMX
- Pārvades tīkls:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616 XNUMX XNUMX
- Slāņu normalizācija:
- 2*768=1,536
Kopējie parametri vienā slānī:
- 2,359,296 4,719,616 2 + 1,536 7,081,984 XNUMX + (XNUMX * XNUMX XNUMX) = XNUMX XNUMX XNUMX
Kopējie parametri 12 slāņiem:
- 12*7,081,984=84,983,808
Kopējie modeļa parametri:
- 84,983,808 + 38,400,000 = 123,383,808
Šim modelim būtu aptuveni 123 miljoni parametru.
Atmiņas izmantošanas veidi
Strādājot ar LLM, mums ir jāņem vērā divi galvenie atmiņas izmantošanas veidi:
- Atmiņas modelis: atmiņa, kas nepieciešama modeļa parametru saglabāšanai.
- Darba atmiņu: atmiņa, kas nepieciešama secinājumu veikšanas vai apmācības laikā, lai saglabātu starpposma aktivizācijas, gradientus un optimizētāja stāvokļus.
Modeļa atmiņas aprēķināšana
Modeļa atmiņa ir tieši saistīta ar parametru skaitu. Katrs parametrs parasti tiek saglabāts kā 32 bitu peldošā komata skaitlis, lai gan daži modeļi izmanto jauktas precizitātes apmācību ar 16 bitu pludiņiem.
Modeļa atmiņa (baiti) = parametru skaits * baiti katram parametram
Mūsu modeļa modelim ar 123 miljoniem parametru:
- Modeļa atmiņa (32 biti) = 123,383,808 4 493,535,232 * 494 baiti = XNUMX XNUMX XNUMX baiti ≈ XNUMX MB
- Modeļa atmiņa (16 biti) = 123,383,808 2 246,767,616 * 247 baiti = XNUMX XNUMX XNUMX baiti ≈ XNUMX MB
Darba atmiņas novērtēšana
Darba atmiņas prasības var ievērojami atšķirties atkarībā no konkrētā uzdevuma, partijas lieluma un secības garuma. Aptuvenais darba atmiņas novērtējums secinājumu veikšanas laikā ir šāds:
Darba atmiņa ≈ 2 * Modeļa atmiņa
Tas nodrošina gan modeļa parametru, gan starpposma aktivizācijas saglabāšanu. Apmācības laikā atmiņas prasības var būt vēl lielākas, jo ir jāsaglabā gradienti un optimizētāja stāvokļi:
Treniņu atmiņa ≈ 4 * Modeļa atmiņa
Mūsu modeļa modelim:
- Secinājumu darba atmiņa ≈ 2 * 494 MB = 988 MB ≈ 1 GB
- Apmācības atmiņa ≈ 4 * 494 MB = 1,976 2 MB ≈ XNUMX GB
Līdzsvara stāvokļa atmiņas lietojums un maksimālais atmiņas lietojums
Apmācot lielus valodu modeļus, kuru pamatā ir transformatora arhitektūra, efektīvai resursu piešķiršanai ir ļoti svarīgi saprast atmiņas lietojumu. Sadalīsim atmiņas prasības divās galvenajās kategorijās: līdzsvara stāvokļa atmiņas lietojums un maksimālais atmiņas lietojums.
Līdzsvara stāvokļa atmiņas lietojums
Stabilā stāvokļa atmiņas lietojums ietver šādus komponentus:
- Modeļa svari: modeļa parametru FP32 kopijas, kurām nepieciešami 4N baiti, kur N ir parametru skaits.
- Optimizētāja valstis: Adam optimizētājam tam nepieciešami 8N baiti (2 stāvokļi katram parametram).
- Slīpumi: FP32 gradientu kopijas, kurām nepieciešami 4N baiti.
- Ievaddati: Pieņemot int64 ievadi, tam nepieciešami 8BD baiti, kur B ir partijas lielums un D ir ievades izmērs.
Kopējo līdzsvara stāvokļa atmiņas lietojumu var aptuveni aprēķināt šādi:
- M_steady = 16N + 8BD baiti
Maksimālās atmiņas izmantošana
Maksimālais atmiņas lietojums notiek atpakaļgaitas laikā, kad aktivizācijas tiek saglabātas gradienta aprēķināšanai. Galvenie maksimālās atmiņas veicinātāji ir:
- Slāņu normalizācija: nepieciešami 4E baiti katrai slāņa normai, kur E = BSH (B: partijas lielums, S: secības garums, H: slēptais izmērs).
- Uzmanības bloks:
- QKV aprēķins: 2E baiti
- Uzmanības matrica: 4BSS baiti (S: secības garums)
- Uzmanības izvade: 2E baiti
- Padeves uz priekšu bloks:
- Pirmais lineārais slānis: 2E baiti
- GELU aktivizēšana: 8E baiti
- Otrais lineārais slānis: 2E baiti
- Šķērsentropijas zudums:
- Logits: 6BSV baiti (V: vārdu krājuma lielums)
Kopējo aktivizācijas atmiņu var aprēķināt šādi:
- M_act = L * (14E + 4BSS) + 6BSV baiti
Kur L ir transformatora slāņu skaits.
Kopējais maksimālās atmiņas lietojums
Maksimālo atmiņas lietojumu treniņa laikā var aptuveni aprēķināt, apvienojot līdzsvara stāvokļa atmiņu un aktivizācijas atmiņu:
- M_peak = M_steady + M_act + 4BSV baiti
Papildu 4BSV termiņš veido papildu piešķīrumu atpakaļgaitas pārejas sākumā.
Izprotot šos komponentus, mēs varam optimizēt atmiņas izmantošanu apmācības un secinājumu veikšanas laikā, nodrošinot efektīvu resursu piešķiršanu un uzlabotu lielu valodu modeļu veiktspēju.
Mērogošanas likumi un efektivitātes apsvērumi
Mērogošanas likumi LLM
Pētījumi liecina, ka LLM veiktspējai ir tendence ievērot noteiktus mērogošanas likumus, palielinoties parametru skaitam. Kaplan et al. (2020) novēroja, ka modeļa veiktspēja uzlabojas kā parametru skaita, aprēķina budžeta un datu kopas lieluma jaudas likums.
Sakarību starp modeļa veiktspēju un parametru skaitu var tuvināt, izmantojot:
Veiktspēja ∝ N^α
Kur N ir parametru skaits un α ir mērogošanas eksponents, kas valodas modelēšanas uzdevumiem parasti ir aptuveni 0.07.
Tas nozīmē, ka, lai sasniegtu veiktspējas uzlabojumus par 10%, mums ir jāpalielina parametru skaits par koeficientu 10^(1/α) ≈ 3.7.
Efektivitātes paņēmieni
Tā kā LLM turpina augt, pētnieki un praktiķi ir izstrādājuši dažādas metodes, lai uzlabotu efektivitāti:
a) Jauktā precizitātes apmācība: 16 bitu vai pat 8 bitu peldošā komata skaitļu izmantošana noteiktām darbībām, lai samazinātu atmiņas izmantošanu un skaitļošanas prasības.
b) Modeļa paralēlisms: modeļa sadale vairākos GPU vai TPU, lai apstrādātu lielākus modeļus, nekā var ievietot vienā ierīcē.
c) Gradienta kontrolpunkts: tirdzniecības aprēķins atmiņai, pārrēķinot noteiktas aktivizācijas atpakaļgaitas laikā, nevis saglabājot tās.
d) Atzarošana un kvantifikācija: mazāk svarīgu svaru noņemšana vai to precizitātes samazināšana pēc treniņa, lai izveidotu mazākus, efektīvākus modeļus.
e) Destilācija: mazāku modeļu apmācība, lai atdarinātu lielāku modeļu darbību, iespējams, saglabājot lielu daļu veiktspējas ar mazākiem parametriem.
Praktiskais piemērs un aprēķini
GPT-3, vienam no lielākajiem valodu modeļiem, ir 175 miljardi parametru. Tas izmanto transformatora arhitektūras dekodētāja daļu. Lai saprastu tā mērogu, sadalīsim parametru skaitu ar hipotētiskām vērtībām:
d_model = 12288
d_ff = 4 * 12288 = 49152
- Slāņu skaits = 96
Vienam dekodera slānim:
Kopējie parametri = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 miljards
Kopā 96 slāņiem:
1.1 miljards * 96 = 105.6 miljardi
Pārējie parametri nāk no iegulšanas un citiem komponentiem.
Secinājumi
Lielo valodu modeļu parametru un atmiņas prasību izpratne ir ļoti svarīga šo jaudīgo rīku efektīvai izstrādei, apmācībai un izvietošanai. Sadalot transformatora arhitektūras komponentus un izpētot tādus praktiskus piemērus kā GPT, mēs gūstam dziļāku ieskatu šo modeļu sarežģītībā un mērogā.
Lai labāk izprastu jaunākos sasniegumus lielo valodu modeļos un to lietojumprogrammās, skatiet šīs visaptverošās rokasgrāmatas:
- Izpētiet pilno Gemma 2 rokasgrāmatu: Google jaunais atvērto lielo valodu modelis lai gūtu ieskatu tā uzlabotajā veiktspējā un novatoriskajās funkcijās.
- Uzziniet par Building LLM aģentiem RAG no Scratch and Beyond: Visaptveroša rokasgrāmata kurā tiek apspriesti izaicinājumi un risinājumi izguves paplašinātajā paaudzē.
- Atklājiet sarežģījumus LLM apmācības, precizēšanas un secinājumu noteikšana ar NVIDIA GPU un CUDA AI sistēmu optimizēšanai.
Pēdējos piecus gadus esmu pavadījis, iegremdējot sevi aizraujošajā mašīnmācīšanās un dziļās mācīšanās pasaulē. Mana aizraušanās un pieredze lika man piedalīties vairāk nekā 50 dažādos programmatūras inženierijas projektos, īpašu uzmanību pievēršot AI/ML. Mana pastāvīgā ziņkārība mani ir piesaistījusi arī dabiskās valodas apstrādei, jomai, kuru vēlos izpētīt tālāk.
Jums varētu patikt
MARKLLM: atvērtā pirmkoda rīkkopa LLM ūdenszīmēm
Lielu valodu modeļu izvietošana vietnē Kubernetes: visaptveroša rokasgrāmata
Izpratne par retajiem automātiskajiem kodētājiem, GPT-4 un Claude 3: padziļināta tehniskā izpēte
Qwen2 — Alibaba jaunākais daudzvalodu valodas modelis izaicina SOTA, piemēram, Llama 3
LLaVA-UHD: LMM, kas uztver jebkuru malu attiecību un augstas izšķirtspējas attēlus
Lielo valodu modeļu uzlādēšana ar vairāku marķieru prognozēšanu