Liity verkostomme!

Tekoäly

Suurkielisten mallien parametrien ja muistivaatimusten ymmärtäminen: syvä sukellus

mm

Julkaistu

 on

Parametrien laskeminen muuntajapohjaisissa LLM:issä

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

Transformers-arkkitehtuuri

Transformers-arkkitehtuuri

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

  1. Monipään huomio: Mahdollistaa mallin keskittymisen syöttösekvenssin eri osiin samanaikaisesti.
  2. Eteenpäin syötettävät neuroverkot: Lisää malliin epälineaarisuutta ja monimutkaisuutta.
  3. Tason normalisointi: Vakauttaa ja nopeuttaa harjoittelua normalisoimalla välitulot.

Parametrien lukumäärän laskeminen

Transformer koulutus

Valmiiksi koulutetut mallit tehokkaaseen muuntajakoulutukseen

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.

  1. Tason upottaminen:
    • Parametrit = vocab_size * d_model
  2. Monipään huomio:
    • varten h päät, joiden kanssa d_k = d_v = d_model / h:
    • Parametrit = 4 * d_model^2 (Q-, K-, V- ja lähtöprojektioille)
  3. Feed-Forward -verkko:
    • Parametrit = 2 * d_model * d_ff + d_model + d_ff
    • Missä d_ff on yleensä 4* d_model
  4. Tason normalisointi:
    • Parametrit = 2 * d_model (skaalaa ja harhaa varten)

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 = 768
  • h (huomiopäiden lukumäärä) = 12
  • N (kerrosten lukumäärä) = 12
  • vocab_size = 50,000
  1. Tason upottaminen:
    • 50,000 * 768 = 38,400,000
  2. Monipään huomio:
    • 4 * 768^ 2 = 2,359,296
  3. Feed-Forward -verkko:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616 XNUMX XNUMX
  4. 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ä:

  1. Muistimalli: Muisti, joka tarvitaan mallin parametrien tallentamiseen.
  2. 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:

  1. Mallin painot: FP32-kopiot malliparametreista, jotka vaativat 4N tavua, missä N on parametrien lukumäärä.
  2. Optimizer-tilat: Adam-optimoijalle tämä vaatii 8N tavua (2 tilaa per parametri).
  3. liukuvärit: FP32-kopiot gradienteista, jotka vaativat 4N tavua.
  4. 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:

  1. Tason normalisointi: Vaatii 4E tavua tasonormia kohti, missä E = BSH (B: eräkoko, S: sekvenssin pituus, H: piilotettu koko).
  2. Huomiolohko:
    • QKV-laskenta: 2E tavua
    • Huomiomatriisi: 4BSS-tavua (S: sekvenssin pituus)
    • Huomiolähtö: 2E tavua
  3. Eteensyötön esto:
    • Ensimmäinen lineaarinen kerros: 2E tavua
    • GELU-aktivointi: 8E tavua
    • Toinen lineaarinen kerros: 2E tavua
  4. 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:

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ää.