Connecteu-vos amb nosaltres

Intel·ligència Artificial

Comprendre els paràmetres del model de llenguatge gran i els requisits de memòria: una immersió profunda

mm

publicat

 on

Càlcul de paràmetres en LLM basats en transformadors

Grans models lingüístics (LLM) ha vist avenços notables en els últims anys. Models com el GPT-4, el Gemini de Google i el Claude 3 estan establint nous estàndards en capacitats i aplicacions. Aquests models no només milloren la generació i la traducció de text, sinó que també estan avançant en el processament multimodal, combinant entrades de text, imatge, àudio i vídeo per oferir solucions d'IA més completes.

Per exemple, el GPT-4 d'OpenAI ha mostrat millores significatives en la comprensió i la generació de text semblant a l'ésser humà, mentre que els models Gemini de Google excel·lent en el maneig de diversos tipus de dades, com ara text, imatges i àudio, permetent interaccions més fluides i rellevants per al context. De la mateixa manera, els models Claude 3 d'Anthropic destaquen per les seves capacitats multilingües i un rendiment millorat en tasques d'IA.

A mesura que el desenvolupament de LLM continua accelerant-se, entendre les complexitats d'aquests models, especialment els seus paràmetres i requisits de memòria, esdevé crucial. Aquesta guia pretén desmitificar aquests aspectes, oferint una explicació detallada i fàcil d'entendre.

Fonaments dels grans models lingüístics

Què són els grans models lingüístics?

Els grans models de llenguatge són xarxes neuronals entrenades en conjunts de dades massius per entendre i generar llenguatge humà. Es basen en arquitectures com Transformers, que utilitzen mecanismes com l'autoatenció per processar i produir text.

Importància dels paràmetres en els LLM

Els paràmetres són els components bàsics d'aquests models. Inclouen pesos i biaixos, que el model ajusta durant l'entrenament per minimitzar els errors en les prediccions. El nombre de paràmetres sovint es correlaciona amb la capacitat i el rendiment del model, però també influeix en els seus requisits computacionals i de memòria.

Entendre l'arquitectura del transformador

Transformadors-arquitectura

Arquitectura de transformadors

Descripció

L'arquitectura Transformer, presentada al document "Attention Is All You Need" de Vaswani et al. (2017), s'ha convertit en la base de molts LLM. Consta d'un codificador i un descodificador, cadascun format per diverses capes idèntiques.

Components codificador i descodificador

  • codificador: processa la seqüència d'entrada i crea una representació conscient del context.
  • descodificador: genera la seqüència de sortida utilitzant la representació del codificador i les fitxes generades prèviament.

Blocs de construcció clau

  1. Atenció de múltiples caps: Permet que el model es concentri en diferents parts de la seqüència d'entrada simultàniament.
  2. Xarxes Neurals Feed-Forward: Afegeix no linealitat i complexitat al model.
  3. Normalització de capes: Estabilitza i accelera l'entrenament normalitzant els resultats intermedis.

Càlcul del nombre de paràmetres

Formació de transformadors

Models preparats per a una formació eficient en transformadors

Càlcul de paràmetres en LLM basats en transformadors

Anem a desglossar el càlcul de paràmetres per a cada component d'un LLM basat en transformadors. Utilitzarem la notació del document original, on d_model representa la dimensió dels estats ocults del model.

  1. Capa d'inserció:
    • Paràmetres = vocab_size * d_model
  2. Atenció de múltiples caps:
    • per h caps, amb d_k = d_v = d_model / h:
    • Paràmetres = 4 * d_model^2 (per a Q, K, V i projeccions de sortida)
  3. Xarxa de feed-forward:
    • Paràmetres = 2 * d_model * d_ff + d_model + d_ff
    • On? d_ff normalment és de 4 * d_model
  4. Normalització de capes:
    • Paràmetres = 2 * d_model (per a escala i biaix)

Paràmetres totals per a una capa de transformador:

  • Parameters_layer = Parameters_attention + Parameters_ffn + 2 * Parameters_layernorm

Per un model amb N capes:

  • Paràmetres totals = N * Parameters_layer + Parameters_embedding + Parameters_output

Exemple de càlcul

Considerem un model amb les següents especificacions:

  • d_model = 768
  • h (nombre de caps d'atenció) = 12
  • N (nombre de capes) = 12
  • vocab_size = 50,000
  1. Capa d'inserció:
    • 50,000 * 768 = 38,400,000
  2. Atenció de múltiples caps:
    • 4 * 768^2 = 2,359,296
  3. Xarxa de feed-forward:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
  4. Normalització de capes:
    • 2 * 768 = 1,536

Paràmetres totals per capa:

  • 2,359,296 + 4,719,616 + (2 * 1,536) = 7,081,984

Paràmetres totals per a 12 capes:

  • 12 * 7,081,984 = 84,983,808

Paràmetres totals del model:

  • 84,983,808 + 38,400,000 = 123,383,808

Aquest model tindria aproximadament 123 milions de paràmetres.

Tipus d'ús de la memòria

Quan treballem amb LLM, hem de tenir en compte dos tipus principals d'ús de memòria:

  1. Model de memòria: La memòria necessària per emmagatzemar els paràmetres del model.
  2. La memòria de treball: la memòria necessària durant la inferència o l'entrenament per emmagatzemar activacions intermèdies, gradients i estats d'optimització.

Càlcul de la memòria del model

La memòria del model està directament relacionada amb el nombre de paràmetres. Cada paràmetre s'emmagatzema normalment com un nombre de coma flotant de 32 bits, tot i que alguns models utilitzen un entrenament de precisió mixta amb flotants de 16 bits.

Model Memory (bytes) = Nombre de paràmetres * Bytes per paràmetre

Per al nostre model d'exemple amb 123 milions de paràmetres:

  • Memòria del model (32 bits) = 123,383,808 * 4 bytes = 493,535,232 bytes ≈ 494 MB
  • Memòria del model (16 bits) = 123,383,808 * 2 bytes = 246,767,616 bytes ≈ 247 MB

Estimació de la memòria de treball

Els requisits de memòria de treball poden variar significativament en funció de la tasca específica, la mida del lot i la longitud de la seqüència. Una estimació aproximada de la memòria de treball durant la inferència és:

Memòria de treball ≈ 2 * Memòria de model

Això té en compte l'emmagatzematge tant dels paràmetres del model com de les activacions intermèdies. Durant l'entrenament, els requisits de memòria poden ser encara més elevats a causa de la necessitat d'emmagatzemar gradients i estats d'optimització:

Memòria d'entrenament ≈ 4 * Memòria de model

Per al nostre model d'exemple:

  • Memòria de treball d'inferència ≈ 2 * 494 MB = 988 MB ≈ 1 GB
  • Memòria d'entrenament ≈ 4 * 494 MB = 1,976 MB ≈ 2 GB

Ús de memòria en estat estacionari i ús màxim de memòria

Quan s'entrenen grans models de llenguatge basats en l'arquitectura Transformer, entendre l'ús de la memòria és crucial per a una assignació eficient de recursos. Desglossem els requisits de memòria en dues categories principals: ús de memòria en estat estacionari i ús màxim de memòria.

Ús de memòria en estat estacionari

L'ús de memòria en estat estacionari inclou els components següents:

  1. Peses del model: còpies FP32 dels paràmetres del model, que requereixen 4N bytes, on N és el nombre de paràmetres.
  2. Estats optimitzadors: Per a l'optimitzador Adam, això requereix 8N bytes (2 estats per paràmetre).
  3. Degradats: còpies FP32 dels gradients, que requereixen 4N bytes.
  4. Dades d'entrada: Suposant entrades int64, això requereix 8 BD bytes, on B és la mida del lot i D és la dimensió d'entrada.

L'ús total de memòria en estat estacionari es pot aproximar mitjançant:

  • M_steady = 16N + 8BD bytes

Ús màxim de memòria

L'ús màxim de memòria es produeix durant el pas cap enrere quan les activacions s'emmagatzemen per al càlcul del gradient. Els principals contribuents a la memòria màxima són:

  1. Normalització de capes: requereix 4E bytes per norma de capa, on E = BSH (B: mida del lot, S: longitud de la seqüència, H: mida oculta).
  2. Bloc d'Atenció:
    • Càlcul QKV: 2E bytes
    • Matriu d'atenció: 4BSS bytes (S: longitud de la seqüència)
    • Sortida d'atenció: 2E bytes
  3. Bloc de Feed-Forward:
    • Primera capa lineal: 2E bytes
    • Activació GELU: 8E bytes
    • Segona capa lineal: 2E bytes
  4. Pèrdua d'entropia creuada:
    • Logits: 6BSV bytes (V: mida del vocabulari)

La memòria d'activació total es pot estimar com:

  • M_act = L * (14E + 4BSS) + 6BSV bytes

On L és el nombre de capes del transformador.

Ús màxim de memòria total

L'ús màxim de memòria durant l'entrenament es pot aproximar combinant la memòria en estat estacionari i la memòria d'activació:

  • M_peak = M_steady + M_act + 4BSV bytes

El termini addicional de 4BSV suposa una assignació addicional a l'inici de la passada endarrerida.

Mitjançant la comprensió d'aquests components, podem optimitzar l'ús de la memòria durant l'entrenament i la inferència, garantint una assignació eficient de recursos i un millor rendiment dels grans models de llenguatge.

Lleis d'escala i consideracions d'eficiència

 Lleis d'escala per a LLM

La investigació ha demostrat que el rendiment dels LLM tendeix a seguir determinades lleis d'escala a mesura que augmenta el nombre de paràmetres. Kaplan et al. (2020) van observar que el rendiment del model millora com a llei de potència del nombre de paràmetres, pressupost de càlcul i mida del conjunt de dades.

La relació entre el rendiment del model i el nombre de paràmetres es pot aproximar mitjançant:

Rendiment ∝ N^α

On N és el nombre de paràmetres i α és un exponent d'escala generalment al voltant de 0.07 per a tasques de modelatge de llenguatge.

Això implica que per aconseguir una millora del 10% en el rendiment, hem d'augmentar el nombre de paràmetres en un factor de 10^(1/α) ≈ 3.7.

Tècniques d'eficiència

A mesura que els LLM continuen creixent, els investigadors i els professionals han desenvolupat diverses tècniques per millorar l'eficiència:

a) Entrenament de precisió mixta: Ús de números de coma flotant de 16 bits o fins i tot de 8 bits per a determinades operacions per reduir l'ús de memòria i els requisits computacionals.

b) Paral·lelisme model: distribuïu el model entre diverses GPU o TPU per gestionar models més grans dels que poden cabre en un únic dispositiu.

c) Punt de control de gradient: Intercanvi de càlcul per memòria tornant a calcular determinades activacions durant el pas cap enrere en lloc d'emmagatzemar-les.

d) Poda i quantificació: Eliminació de pesos menys importants o reducció de la seva precisió després de l'entrenament per crear models més petits i eficients.

e) Destil·lació: Entrenar models més petits per imitar el comportament dels més grans, preservant potencialment gran part del rendiment amb menys paràmetres.

Exemple pràctic i càlculs

GPT-3, un dels models lingüístics més grans, té 175 milions de paràmetres. Utilitza la part del descodificador de l'arquitectura Transformer. Per entendre la seva escala, desglossem el recompte de paràmetres amb valors hipotètics:

  • d_model = 12288
  • d_ff = 4 * 12288 = 49152
  • Nombre de capes = 96

Per a una capa de descodificador:

Paràmetres totals = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 milions

Total per a 96 capes:

1.1 milions * 96 = 105.6 milions

La resta de paràmetres provenen de la incrustació i altres components.

Conclusió

Comprendre els paràmetres i els requisits de memòria dels grans models de llenguatge és crucial per dissenyar, entrenar i desplegar aquestes potents eines de manera eficaç. En desglossar els components de l'arquitectura de Transformer i examinar exemples pràctics com GPT, obtenim una visió més profunda de la complexitat i l'escala d'aquests models.

Per entendre millor els darrers avenços en grans models de llenguatge i les seves aplicacions, consulteu aquestes guies completes:

He passat els últims cinc anys submergint-me en el fascinant món de l'aprenentatge automàtic i l'aprenentatge profund. La meva passió i experiència m'han portat a contribuir a més de 50 projectes diversos d'enginyeria de programari, amb un enfocament particular en IA/ML. La meva curiositat contínua també m'ha atret cap al processament del llenguatge natural, un camp que tinc ganes d'explorar més.