LLM a 1 bit: cosa sono?
Il mondo dell’intelligenza artificiale generativa sta correndo a velocità massima e il nuovo arrivato in questo campo è il primo LLM a 1 bit. Potresti non crederci, ma questo potrebbe essere un punto di svolta non banale per aiutare a eliminare alcune delle maggiori sfide associate all’uso dei LLM, in particolare alle loro dimensioni.
Come funziona un modello
In uno scenario generico (non sempre), i pesi di qualsiasi modello, sia esso LLM o semplificemente di regressione logistica, vengono archiviati come virgola mobile a 32 bit o virgola mobile a 16 bit.
Supponiamo quindi di avere un LLM “MioCustomGPT” che ha 7 miliardi di parametri (come avviene in maniera simile in Mistral o Llama-7B) utilizzando una precisione a 32 bit (4 byte).
Questo modello occuperà:
Memoria totale = Dimensione di un peso * Numero di pesi
Memoria totale = 4 byte * 7.000.000.000
Memoria totale = 28.000.000.000 di byte
Convertendolo in gigabyte, otteniamo:
Memoria totale = 28.000.000.000 byte / 1024³ byte per GB
Memoria totale ≈ 26,09 GB
La dimensione è più che notevole: questo è il motivo principale per cui non siamo in grado di utilizzare modelli come GPT o altri modelli più grandi in locale, poiché hanno grandi dimensioni a causa dell’elevata precisione del valore dei pesi.
LLM a 1 bit
Nei LLM a 1 bit, solo 1 bit (che quindi permette di memorizzare o 0 o 1) viene utilizzato per memorizzare i parametri di peso rispetto ai 32/16 bit degli LLM tradizionali.
Ciò riduce le dimensioni complessive di una grande percentuale consentendo quindi anche ai dispositivi più “smart” o con risorse ridotte di utilizzare LLM.
Assumiamo quindi di avere una variante LLM a 1 bit di “MioCustomlGPT”. Questa volta la memoria occupata sarà di:
Memoria totale = Dimensione di un peso * Numero di pesi
Memoria totale = 0,125 byte * 7.000.000.000
Memoria totale = 875.000.000 di byte
Convertendolo in gigabyte, otteniamo:
Memoria totale = 875.000.000 byte / 1024³ byte per GB
Memoria totale ≈ 0,815 GB
Un risparmio davvero notevole, in termini di dimensioni.
LLM 1 bit vs Quantizzazione
C’è chi parla di quantizzazione, anche se in realtà siamo abbastanza distanti da questa idea: nel caso della quantizzazione, si riduce la precisione dei pesi e delle informazioni, mentre in un LLM a 1 bit gni peso verrà rappresentato dall’operatore binario (0,1) e nient’altro, quindi un modello ancora più ridotto.
Infatti, la quantizzazione è una tecnica che consente di ridurre i requisiti di memoria e di calcolo di questi modelli, aprendo la strada alla loro esecuzione su tutti i tipi di dispositivi, dai telefoni ai computer più piccoli, ma con un meccanismo di compressione notevole, dal momento che andiamo a perdere di precisione.
Ad esempio, un parametro i cui valori con precisione completa a 32 bit erano 3,456776867 verrà salvato con precisione inferiore sull’intero 3 (8 bit INT). Ciò riduce significativamente le dimensioni del modello, consentendogli di funzionare più velocemente su dispositivi con memoria limitata, come CPU o persino smartphone.
BitNet b1.58
Questo primo LLM a 1 bit è unico nel suo genere, in quanto utilizza 1.58 bit per peso, permettendo di avere 3 valori possibili, ossia -1, 0 e 1. Questo vuol dire anche che fornisce velocità di elaborazione più elevate e utilizza meno memoria GPU rispetto ai modelli tradizionali.
Include una funzione di quantizzazione per l’ottimizzazione a livello di sistema e integra componenti come RMSNorm e SwiGLU simili a LLaMA.
Ad oggi, il modello non è ancora stato reso pubblico e quindi non è stato testato in ambiente fuori da quelli di ricerca, ma è chiaro che il futuro dei chatbot, e di strumenti come ChatGPT o simili, potrebbe essere a 1 bit.