Umetna inteligenca
Razumevanje parametrov modela velikega jezika in pomnilniških zahtev: poglobljeno raziskovanje
objavljeno
6 dnevion
Kazalo vsebine
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
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
- Večglavna pozornost: Omogoča, da se model osredotoči na različne dele vhodnega zaporedja hkrati.
- Naprej nevronske mreže: modelu doda nelinearnost in kompleksnost.
- Normalizacija plasti: Stabilizira in pospeši vadbo z normalizacijo vmesnih rezultatov.
Izračun števila parametrov
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.
- Vdelana plast:
- Parametri =
vocab_size
*d_model
- Parametri =
- Večglavna pozornost:
- za
h
glave, zd_k = d_v = d_model / h
: - Parametri = 4 *
d_model
^2 (za Q, K, V in izhodne projekcije)
- za
- Napajalno omrežje:
- Parametri = 2 *
d_model
*d_ff
+d_model
+d_ff
- Kje
d_ff
je običajno 4 *d_model
- Parametri = 2 *
- Normalizacija plasti:
- Parametri = 2 *
d_model
(za lestvico in pristranskost)
- Parametri = 2 *
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
= 768h
(število glav pozornosti) = 12N
(število plasti) = 12vocab_size
= 50,000
- Vdelana plast:
- 50,000 * 768 = 38,400,000
- Večglavna pozornost:
- 4 * 768^2 = 2,359,296
- Napajalno omrežje:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
- 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:
- Pomnilnik modela: pomnilnik, potreben za shranjevanje parametrov modela.
- 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:
- Uteži modelov: FP32 kopije parametrov modela, ki zahtevajo 4N bajtov, kjer je N število parametrov.
- Stanja optimizatorja: Za optimizator Adam to zahteva 8N bajtov (2 stanji na parameter).
- Gradienti: FP32 kopije gradientov, ki zahtevajo 4N bajtov.
- 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:
- Normalizacija plasti: zahteva 4E bajtov na normo plasti, kjer je E = BSH (B: velikost paketa, S: dolžina zaporedja, H: skrita velikost).
- Blok pozornosti:
- Izračun QKV: 2E bajtov
- Matrika pozornosti: 4 BSS bajtov (S: dolžina zaporedja)
- Izhod pozornosti: 2E bajtov
- Blok podajanja naprej:
- Prva linearna plast: 2E bajtov
- Aktivacija GELU: 8E bajtov
- Druga linearna plast: 2E bajtov
- 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:
- Raziščite celoten vodnik o Gemmi 2: Googlov novi odprti model velikih jezikov za vpogled v njegovo izboljšano zmogljivost in inovativne funkcije.
- Izvedite več o gradnji LLM agentov za RAG od začetka in naprej: Izčrpen vodnik ki razpravlja o izzivih in rešitvah pri generiranju z razširjenim iskanjem.
- Odkrijte zapletenost Nastavitev usposabljanja, natančnega prilagajanja in sklepanja LLM-jev z grafičnimi procesorji NVIDIA in CUDA za optimizacijo sistemov AI.
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.
Morda vam bo všeč
MARKLLM: Odprtokodni komplet orodij za vodni žig LLM
Uvajanje velikih jezikovnih modelov v Kubernetes: obsežen vodnik
Razumevanje redkih samodejnih kodirnikov, GPT-4 in Claude 3: poglobljena tehnična raziskava
Qwen2 – Alibabin najnovejši večjezični jezikovni model izziva SOTA kot Llama 3
LLaVA-UHD: LMM, ki zaznava poljubno razmerje stranic in slike visoke ločljivosti
Polnjenje velikih jezikovnih modelov s predvidevanjem z več žetoni
Zadnje objave
- Llama 3.1: Metin najnaprednejši odprtokodni model umetne inteligence – vse, kar morate vedeti
- Revolucioniranje vaše izkušnje z napravo: kako Applov AI na novo definira tehnologijo
- Ključ do uspešnih rešitev AI? Vedenjski podatki
- Vloga GAN pri izboljšanju kibernetske varnosti
- 10 najboljših aplikacij za pričeske z umetno inteligenco (julij 2024)