Tekoäly
Suurkielisten mallien parametrien ja muistivaatimusten ymmärtäminen: syvä sukellus
Julkaistu
6 päivää sittenon
Sisällysluettelo
Suuret kielimallit (LLMs) on nähnyt merkittäviä edistysaskeleita viime vuosina. Mallit, kuten GPT-4, Googlen Gemini ja Claude 3, asettavat uusia standardeja ominaisuuksille ja sovelluksille. Nämä mallit eivät ainoastaan paranna tekstin luomista ja kääntämistä, vaan ovat myös murtamassa uutta tietä multimodaalisessa käsittelyssä yhdistämällä tekstin, kuvan, äänen ja videon tulot kattavampien tekoälyratkaisujen tarjoamiseksi.
Esimerkiksi OpenAI:n GPT-4 on osoittanut merkittäviä parannuksia ihmisen kaltaisen tekstin ymmärtämisessä ja luomisessa, kun taas Googlen Gemini-mallit ovat erinomaisia erilaisten tietotyyppien, kuten tekstin, kuvien ja äänen, käsittelyssä, mikä mahdollistaa saumattomamman ja kontekstuaalisen vuorovaikutuksen. Vastaavasti Anthropicin Claude 3 -mallit ovat tunnettuja monikielisyydestään ja parannetusta suorituskyvystään tekoälytehtävissä.
Kun LLM:ien kehitys kiihtyy, näiden mallien monimutkaisuuden ymmärtäminen, erityisesti niiden parametrit ja muistivaatimukset, tulee ratkaisevan tärkeäksi. Tämän oppaan tarkoituksena on selvittää nämä näkökohdat ja tarjota yksityiskohtainen ja helposti ymmärrettävä selitys.
Suurten kielimallien perusteet
Mitä ovat suuret kielimallit?
Suuret kielimallit ovat hermoverkkoja, jotka on koulutettu massiivisten tietojoukkojen avulla ymmärtämään ja luomaan ihmisen kieltä. He luottavat arkkitehtuureihin, kuten Transformers, jotka käyttävät mekanismeja, kuten itsetarkkailua tekstin käsittelyyn ja tuottamiseen.
Parametrien merkitys LLM:issä
Parametrit ovat näiden mallien ydinkomponentteja. Ne sisältävät painot ja poikkeamat, joita malli säätää harjoituksen aikana minimoimaan virheitä ennusteissa. Parametrien määrä korreloi usein mallin kapasiteetin ja suorituskyvyn kanssa, mutta vaikuttaa myös sen laskenta- ja muistivaatimuksiin.
Transformer-arkkitehtuurin ymmärtäminen
Yleiskatsaus
Transformer-arkkitehtuuri, joka esiteltiin Vaswanin et al. "Attention Is All You Need" -paperissa. (2017), on tullut perusta monille LLM:ille. Se koostuu kooderista ja dekooderista, joista kukin koostuu useista identtisistä kerroksista.
Enkooderin ja dekooderin komponentit
- Encoder: Käsittelee syöttösekvenssin ja luo kontekstitietoisen esityksen.
- Decoder: Luo tulossekvenssin käyttämällä kooderin esitystä ja aiemmin luotuja tokeneita.
Keskeiset rakennuspalikat
- Monipään huomio: Mahdollistaa mallin keskittymisen syöttösekvenssin eri osiin samanaikaisesti.
- Eteenpäin syötettävät neuroverkot: Lisää malliin epälineaarisuutta ja monimutkaisuutta.
- Tason normalisointi: Vakauttaa ja nopeuttaa harjoittelua normalisoimalla välitulot.
Parametrien lukumäärän laskeminen
Parametrien laskeminen muuntajapohjaisissa LLM:issä
Tarkastellaan parametrien laskentaa muuntajapohjaisen LLM:n kullekin komponentille. Käytämme alkuperäisen paperin merkintää, missä d_model
edustaa mallin piilotilojen ulottuvuutta.
- Tason upottaminen:
- Parametrit =
vocab_size
*d_model
- Parametrit =
- Monipään huomio:
- varten
h
päät, joiden kanssad_k = d_v = d_model / h
: - Parametrit = 4 *
d_model
^2 (Q-, K-, V- ja lähtöprojektioille)
- varten
- Feed-Forward -verkko:
- Parametrit = 2 *
d_model
*d_ff
+d_model
+d_ff
- Missä
d_ff
on yleensä 4*d_model
- Parametrit = 2 *
- Tason normalisointi:
- Parametrit = 2 *
d_model
(skaalaa ja harhaa varten)
- Parametrit = 2 *
Yhden muuntajakerroksen kokonaisparametrit:
Parameters_layer
=Parameters_attention
+Parameters_ffn
+ 2 *Parameters_layernorm
Mallille, jossa N
kerrokset:
- Parametrit yhteensä =
N
*Parameters_layer
+Parameters_embedding
+Parameters_output
Esimerkki Laskenta
Tarkastellaan mallia, jolla on seuraavat tekniset tiedot:
d_model
= 768h
(huomiopäiden lukumäärä) = 12N
(kerrosten lukumäärä) = 12vocab_size
= 50,000
- Tason upottaminen:
- 50,000 * 768 = 38,400,000
- Monipään huomio:
- 4 * 768^ 2 = 2,359,296
- Feed-Forward -verkko:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616 XNUMX XNUMX
- Tason normalisointi:
- 2 * 768 = 1,536
Parametrit yhteensä tasoa kohti:
- 2,359,296 4,719,616 2 + 1,536 7,081,984 XNUMX + (XNUMX * XNUMX XNUMX) = XNUMX XNUMX XNUMX
Parametrit yhteensä 12 kerrokselle:
- 12 * 7,081,984 = 84,983,808
Mallin kokonaisparametrit:
- 84,983,808 + 38,400,000 = 123,383,808
Tällä mallilla olisi noin 123 miljoonaa parametria.
Muistin käytön tyypit
Kun työskentelemme LLM:ien kanssa, meidän on otettava huomioon kaksi muistinkäytön päätyyppiä:
- Muistimalli: Muisti, joka tarvitaan mallin parametrien tallentamiseen.
- Työmuisti: Muisti, joka tarvitaan päättelyn tai harjoituksen aikana väliaktivointien, gradienttien ja optimointitilojen tallentamiseen.
Lasketaan mallimuistia
Mallin muisti liittyy suoraan parametrien määrään. Kukin parametri tallennetaan tyypillisesti 32-bittisenä liukulukuna, vaikka joissakin malleissa käytetään sekatarkkuutta 16-bittisten liukulukujen kanssa.
Mallimuisti (tavuja) = Parametrien määrä * Tavua parametria kohden
Esimerkkimallimme, jossa on 123 miljoonaa parametria:
- Mallimuisti (32-bittinen) = 123,383,808 4 493,535,232 * 494 tavua = XNUMX XNUMX XNUMX tavua ≈ XNUMX Mt
- Mallimuisti (16-bittinen) = 123,383,808 2 246,767,616 * 247 tavua = XNUMX XNUMX XNUMX tavua ≈ XNUMX Mt
Työmuistin arviointi
Työmuistivaatimukset voivat vaihdella merkittävästi tietyn tehtävän, erän koon ja sekvenssin pituuden mukaan. Karkea arvio työmuistista päättelyn aikana on:
Työmuisti ≈ 2 * Mallimuisti
Tämä vastaa sekä malliparametrien että väliaktivointien tallentamisesta. Harjoittelun aikana muistivaatimukset voivat olla jopa korkeammat, koska gradientteja ja optimointitiloja on tallennettava:
Harjoitusmuisti ≈ 4 * Mallimuisti
Esimerkkimallimme:
- Päätelmä työmuisti ≈ 2 * 494 MB = 988 MB ≈ 1 Gt
- Harjoitusmuisti ≈ 4 * 494 Mt = 1,976 2 Mt ≈ XNUMX Gt
Vakaan tilan muistin käyttö ja huippumuistin käyttö
Kun opetetaan suuria Transformer-arkkitehtuuriin perustuvia kielimalleja, muistin käytön ymmärtäminen on ratkaisevan tärkeää tehokkaan resurssien allokoinnin kannalta. Jaetaan muistivaatimukset kahteen pääluokkaan: vakaan tilan muistin käyttö ja huippumuistin käyttö.
Vakaan tilan muistin käyttö
Vakaan tilan muistin käyttö koostuu seuraavista komponenteista:
- Mallin painot: FP32-kopiot malliparametreista, jotka vaativat 4N tavua, missä N on parametrien lukumäärä.
- Optimizer-tilat: Adam-optimoijalle tämä vaatii 8N tavua (2 tilaa per parametri).
- liukuvärit: FP32-kopiot gradienteista, jotka vaativat 4N tavua.
- Tulotiedot: Jos oletetaan int64-syötteitä, tämä vaatii 8BD tavua, missä B on erän koko ja D on syötteen mitta.
Vakaan tilan muistin kokonaiskäyttö voidaan arvioida seuraavasti:
- M_steady = 16N + 8BD tavua
Huippumuistin käyttö
Huippumuistin käyttö tapahtuu taaksepäin siirron aikana, kun aktivaatiot tallennetaan gradienttilaskentaa varten. Tärkeimmät huippumuistin tekijät ovat:
- Tason normalisointi: Vaatii 4E tavua tasonormia kohti, missä E = BSH (B: eräkoko, S: sekvenssin pituus, H: piilotettu koko).
- Huomiolohko:
- QKV-laskenta: 2E tavua
- Huomiomatriisi: 4BSS-tavua (S: sekvenssin pituus)
- Huomiolähtö: 2E tavua
- Eteensyötön esto:
- Ensimmäinen lineaarinen kerros: 2E tavua
- GELU-aktivointi: 8E tavua
- Toinen lineaarinen kerros: 2E tavua
- Cross-entropian menetys:
- Logiit: 6BSV-tavua (V: sanaston koko)
Aktivointimuistin kokonaismäärä voidaan arvioida seuraavasti:
- M_act = L * (14E + 4BSS) + 6BSV-tavua
Missä L on muuntajakerrosten lukumäärä.
Huippumuistin käyttö yhteensä
Huippumuistin käyttö harjoituksen aikana voidaan arvioida yhdistämällä vakaan tilan muisti ja aktivointimuisti:
- M_peak = M_steady + M_act + 4BSV-tavua
Ylimääräinen 4BSV-termi vastaa ylimääräistä varausta taaksepäin siirtymisen alussa.
Ymmärtämällä nämä komponentit voimme optimoida muistin käytön harjoittelun ja päättelyn aikana, mikä varmistaa tehokkaan resurssien allokoinnin ja suurten kielimallien paremman suorituskyvyn.
Skaalauslainsäädäntö ja tehokkuusnäkökohdat
Skaalauslainsäädäntö LLM:ille
Tutkimus on osoittanut, että LLM:ien suorituskyky noudattaa tiettyjä skaalauslakeja parametrien määrän kasvaessa. Kaplan et ai. (2020) havaitsivat, että mallin suorituskyky paranee parametrien lukumäärän, laskentabudjetin ja tietojoukon koon teholakina.
Mallin suorituskyvyn ja parametrien lukumäärän välinen suhde voidaan arvioida seuraavasti:
Suorituskyky ∝ N^α
Missä N on parametrien lukumäärä ja α on skaalauseksponentti tyypillisesti noin 0.07 kielimallinnustehtävissä.
Tämä tarkoittaa, että saavuttaaksemme 10 %:n suorituskyvyn parannuksen meidän on lisättävä parametrien määrää kertoimella 10^(1/α) ≈ 3.7.
Tehokkuustekniikat
Kun LLM:t kasvavat edelleen, tutkijat ja harjoittajat ovat kehittäneet erilaisia tekniikoita tehokkuuden parantamiseksi:
a) Mixed Precision Training: 16- tai jopa 8-bittisten liukulukujen käyttäminen tietyissä toiminnoissa muistin käytön ja laskentavaatimusten vähentämiseksi.
b) Mallin rinnakkaisuus: Mallin jakaminen useille GPU:ille tai TPU:ille, jotta voidaan käsitellä suurempia malleja kuin yhteen laitteeseen mahtuu.
c) Gradientin tarkistus: Vaihtelee muistilaskutoimituksia laskemalla uudelleen tietyt aktivaatiot taaksepäin siirron aikana niiden tallentamisen sijaan.
d) Leikkaaminen ja kvantisointi: Vähemmän tärkeiden painojen poistaminen tai niiden tarkkuuden vähentäminen harjoituksen jälkeen luodaksesi pienempiä ja tehokkaampia malleja.
e) Tislaus: Pienten mallien kouluttaminen matkimaan suurempien mallien käyttäytymistä, mikä saattaa säilyttää suuren osan suorituskyvystä vähemmillä parametreilla.
Käytännön esimerkki ja laskelmat
GPT-3, yksi suurimmista kielimalleista, sisältää 175 miljardia parametria. Se käyttää Transformer-arkkitehtuurin dekooderiosaa. Ymmärtääksemme sen mittakaavan, eritellään parametrien määrä hypoteettisilla arvoilla:
d_model = 12288
d_ff = 4 * 12288 = 49152
- Kerrosten lukumäärä = 96
Yhdelle dekooderikerrokselle:
Parametrit yhteensä = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 miljardia
Yhteensä 96 kerrosta:
1.1 miljardia * 96 = 105.6 miljardia
Loput parametrit tulevat upottamisesta ja muista komponenteista.
Yhteenveto
Suurten kielimallien parametrien ja muistivaatimusten ymmärtäminen on ratkaisevan tärkeää näiden tehokkaiden työkalujen tehokkaan suunnittelun, koulutuksen ja käyttöönoton kannalta. Purkamalla Transformer-arkkitehtuurin komponentit ja tarkastelemalla käytännön esimerkkejä, kuten GPT:tä, saamme syvemmän käsityksen näiden mallien monimutkaisuudesta ja laajuudesta.
Näistä kattavista oppaista ymmärtääksesi paremmin uusimmat edistykset suurissa kielimalleissa ja niiden sovelluksissa:
- Tutustu Gemma 2:n täydelliseen oppaaseen: Googlen uusi avoin suuri kielimalli saadaksesi tietoa sen parannetusta suorituskyvystä ja innovatiivisista ominaisuuksista.
- Opi rakentamaan LLM-agentteja RAG:lle Scratch and Beyondista: Kattava opas joka käsittelee noudon lisätyn sukupolven haasteita ja ratkaisuja.
- Tutustu sen monimutkaisuuteen LLM:ien koulutuksen, hienosäädön ja päättelyn määrittäminen NVIDIA GPU:lla ja CUDA:lla tekoälyjärjestelmien optimointiin.
Olen viettänyt viimeiset viisi vuotta uppoutuen koneoppimisen ja syväoppimisen kiehtovaan maailmaan. Intohimoni ja asiantuntemukseni ovat saaneet minut osallistumaan yli 50:een erilaiseen ohjelmistosuunnitteluprojektiin keskittyen erityisesti tekoälyyn/ML:ään. Jatkuva uteliaisuuteni on myös vetänyt minut kohti luonnollisen kielen käsittelyä, alaa, jota olen innokas tutkimaan lisää.
Saatat pitää
MARKLLM: avoimen lähdekoodin työkalupakki LLM-vesileimaukseen
Suurten kielimallien käyttöönotto Kubernetesissa: Kattava opas
Harvaiden automaattienkooderien, GPT-4:n ja Claude 3:n ymmärtäminen: perusteellinen tekninen tutkimus
Qwen2 – Alibaban uusin monikielinen kielimalli haastaa SOTAn kuten Llama 3
LLaVA-UHD: LMM, joka havaitsee minkä tahansa kuvasuhteen ja korkearesoluutioisia kuvia
Ladataan suurikielisiä malleja usean merkkien ennusteella
Uusimmat viestit
- Mullistaa laitekokemuksesi: Kuinka Applen tekoäly määrittelee teknologian uudelleen
- Avain onnistuneisiin tekoälyratkaisuihin? Käyttäytymistiedot
- GAN-verkkojen rooli kyberturvallisuuden parantamisessa
- 10 parasta tekoälysovellusta (heinäkuu 2024)
- Reading Your Mind: Kuinka tekoäly dekoodaa aivojen toimintaa rekonstruoidakseen näkemäsi ja kuulemasi