Intel·ligència Artificial
Comprendre els paràmetres del model de llenguatge gran i els requisits de memòria: una immersió profunda
publicat
Fa dies 6on
Taula de continguts
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
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
- Atenció de múltiples caps: Permet que el model es concentri en diferents parts de la seqüència d'entrada simultàniament.
- Xarxes Neurals Feed-Forward: Afegeix no linealitat i complexitat al model.
- Normalització de capes: Estabilitza i accelera l'entrenament normalitzant els resultats intermedis.
Càlcul del nombre de paràmetres
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.
- Capa d'inserció:
- Paràmetres =
vocab_size
*d_model
- Paràmetres =
- Atenció de múltiples caps:
- per
h
caps, ambd_k = d_v = d_model / h
: - Paràmetres = 4 *
d_model
^2 (per a Q, K, V i projeccions de sortida)
- per
- Xarxa de feed-forward:
- Paràmetres = 2 *
d_model
*d_ff
+d_model
+d_ff
- On?
d_ff
normalment és de 4 *d_model
- Paràmetres = 2 *
- Normalització de capes:
- Paràmetres = 2 *
d_model
(per a escala i biaix)
- Paràmetres = 2 *
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
= 768h
(nombre de caps d'atenció) = 12N
(nombre de capes) = 12vocab_size
= 50,000
- Capa d'inserció:
- 50,000 * 768 = 38,400,000
- Atenció de múltiples caps:
- 4 * 768^2 = 2,359,296
- Xarxa de feed-forward:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
- 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:
- Model de memòria: La memòria necessària per emmagatzemar els paràmetres del model.
- 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:
- Peses del model: còpies FP32 dels paràmetres del model, que requereixen 4N bytes, on N és el nombre de paràmetres.
- Estats optimitzadors: Per a l'optimitzador Adam, això requereix 8N bytes (2 estats per paràmetre).
- Degradats: còpies FP32 dels gradients, que requereixen 4N bytes.
- 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:
- 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).
- Bloc d'Atenció:
- Càlcul QKV: 2E bytes
- Matriu d'atenció: 4BSS bytes (S: longitud de la seqüència)
- Sortida d'atenció: 2E bytes
- Bloc de Feed-Forward:
- Primera capa lineal: 2E bytes
- Activació GELU: 8E bytes
- Segona capa lineal: 2E bytes
- 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:
- Exploreu la guia completa de Gemma 2: el nou model de llenguatge obert de Google per obtenir informació sobre el seu rendiment millorat i les seves característiques innovadores.
- Obteniu informació sobre la creació d'agents de LLM per a RAG des de zero i més enllà: Una guia completa que discuteix els reptes i solucions en la generació augmentada per la recuperació.
- Descobreix les complexitats de Configuració d'una formació, afinació i inferència de LLM amb GPU NVIDIA i CUDA per optimitzar els sistemes d'IA.
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.
Potser t'agradi
MARKLLM: un conjunt d'eines de codi obert per a la marca d'aigua LLM
Implementació de grans models de llenguatge a Kubernetes: una guia completa
Comprensió dels codificadors automàtics dispersos, GPT-4 i Claude 3: una exploració tècnica en profunditat
Qwen2: l'últim model lingüístic multilingüe d'Alibaba desafia SOTA com Llama 3
LLaVA-UHD: un LMM que percep qualsevol relació d'aspecte i imatges d'alta resolució
Sobrealimentant grans models d'idiomes amb predicció multitoken
Missatges recents
- Les 10 millors aplicacions de pentinat d'IA (juliol de 2024)
- Llegint la teva ment: com la IA descodifica l'activitat cerebral per reconstruir el que veus i escoltes
- Optimització del desplegament de LLM: vLLM PagedAttention i el futur del servei eficient d'IA
- Charity Majors, CTO i cofundador de Honeycomb - Sèrie d'entrevistes
- Què significa l'èxode de treballadors imminent per a la seguretat de la xarxa i com les organitzacions poden respondre