La quantizzazione in un LLM (Large Language Model) è una tecnica di ottimizzazione che riduce la precisione dei numeri utilizzati per rappresentare i parametri del modello (pesi e attivazioni), allo scopo di diminuire la dimensione del modello e migliorare l’efficienza computazionale senza sacrificare eccessivamente le prestazioni.
A cosa serve?
- Riduzione della memoria:
- I modelli LLM moderni hanno miliardi di parametri (spesso in formato
float32
, 4 byte per parametro). - Quantizzando a
float16
(2 byte) oint8
(1 byte), si riduce drasticamente la memoria richiesta.
- I modelli LLM moderni hanno miliardi di parametri (spesso in formato
- Inferenza più veloce:
- Operazioni matematiche con numeri a bassa precisione sono più veloci su hardware moderno (GPU/TPU).
- Efficienza energetica:
- Minore precisione significa meno operazioni in virgola mobile, riducendo il consumo energetico.
Tipi di quantizzazione
- Quantizzazione statica:
- I pesi sono convertiti a precisione inferiore prima dell’inferenza (es. da
float32
aint8
). - Spesso richiede un “calibrazione” su un dataset per adattare i range.
- I pesi sono convertiti a precisione inferiore prima dell’inferenza (es. da
- Quantizzazione dinamica:
- La conversione avviene al volo durante l’inferenza, adattandosi ai dati di input.
- Quantizzazione post-training (PTQ):
- Applicata dopo l’addestramento, senza ulteriore fine-tuning.
- Quantizzazione-aware training (QAT):
- Il modello viene addestrato tenendo conto della quantizzazione futura, migliorando la robustezza.
Esempio pratico
- Un modello come LLaMA-2 (70B parametri) in
float32
occupa ~280GB. - Quantizzato a
int4
(4 bit), può scendere a ~35GB, rendendolo eseguibile su una singola GPU consumer.
Svantaggi
- Perdita di precisione: Potenziale degradazione delle prestazioni, soprattutto in task complessi.
- Overhead di conversione: Alcune tecniche richiedono calibrazione o fine-tuning.
Librerie per la quantizzazione
- GGML (per esecuzione su CPU, usata in strumenti come
llama.cpp
) - TensorRT (NVIDIA)
- Hugging Face Optimum (integrazione con Transformers)
- Bitsandbytes (quantizzazione 8/4-bit per GPU)
Conclusioni
La quantizzazione è essenziale per democratizzare l’uso degli LLM, permettendo l’esecuzione su hardware limitato (laptop, smartphone) senza costi eccessivi in termini di prestazioni.