Savienoties ar mums

Mākslīgais intelekts

Izpratne par lielu valodu modeļu parametriem un atmiņas prasībām: dziļa niršana

mm

Izdots

 on

Parametru aprēķināšana uz transformatoriem balstītos LLM

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

Transformatori-arhitektūra

Transformatoru arhitektūra

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

  1. Vairāku galvu uzmanība: ļauj modelim vienlaikus koncentrēties uz dažādām ievades secības daļām.
  2. Uz priekšu vērstie neironu tīkli: pievieno modelim nelinearitāti un sarežģītību.
  3. Slāņu normalizācija: Stabilizē un paātrina treniņu, normalizējot starpproduktus.

Parametru skaita aprēķināšana

Transformatoru apmācība

Iepriekš apmācīti modeļi efektīvai transformatoru apmācībai

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.

  1. Slāņa iegulšana:
    • Parametri = vocab_size * d_model
  2. Vairāku galvu uzmanība:
    • Par h galvas, ar d_k = d_v = d_model / h:
    • Parametri = 4* d_model^2 (Q, K, V un izvades projekcijām)
  3. Pārvades tīkls:
    • Parametri = 2* d_model * d_ff + d_model + d_ff
    • Reģions d_ff parasti ir 4* d_model
  4. Slāņu normalizācija:
    • Parametri = 2* d_model (mērogam un novirzēm)

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 = 768
  • h (uzmanības galviņu skaits) = 12
  • N (slāņu skaits) = 12
  • vocab_size = 50,000
  1. Slāņa iegulšana:
    • 50,000*768=38,400,000
  2. Vairāku galvu uzmanība:
    • 4 * 768^2 = 2,359,296 XNUMX XNUMX
  3. Pārvades tīkls:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616 XNUMX XNUMX
  4. 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:

  1. Atmiņas modelis: atmiņa, kas nepieciešama modeļa parametru saglabāšanai.
  2. 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:

  1. Modeļa svari: modeļa parametru FP32 kopijas, kurām nepieciešami 4N baiti, kur N ir parametru skaits.
  2. Optimizētāja valstis: Adam optimizētājam tam nepieciešami 8N baiti (2 stāvokļi katram parametram).
  3. Slīpumi: FP32 gradientu kopijas, kurām nepieciešami 4N baiti.
  4. 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:

  1. 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).
  2. Uzmanības bloks:
    • QKV aprēķins: 2E baiti
    • Uzmanības matrica: 4BSS baiti (S: secības garums)
    • Uzmanības izvade: 2E baiti
  3. Padeves uz priekšu bloks:
    • Pirmais lineārais slānis: 2E baiti
    • GELU aktivizēšana: 8E baiti
    • Otrais lineārais slānis: 2E baiti
  4. Šķē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:

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.