Riquantizzare un modello GGUF
Semplificando, si può dire che il formato GGUF sta agli LLM un po' come il formato MP3 sta ai file audio o il JPG alle immagini. È Un formato compresso, quantizzato si dice nel gergo dell'IA, alla ricerca del miglior equilibrio tra precisione e qualità del modello da un lato e consumo di risorse hardware dall'altro.
Di norma i modelli in formato GGUF sono già distribuiti in più quantizzazioni, che possono andare dal livello non compresso in virgola mobile (F16) a livelli di compressione molto alta (Q2); laddove il livello Q4, offrendo un buon compromesso tra qualità e richiesta di risorse, è diventato il riferimento per i computer domestici.
Ma come si riquantizza un modello?
Immagine generata con Craiyon.
Il formato GGUF si è ormai affermato come lo standard de facto per gli LLM da utilizzare in locale, in quanto permette di avere tutte le componenti di un modello compattate in un singolo file facilmente gestibile attraverso strumenti come llama.cpp, Jan, gpt4all, LM Studio e molti altri della serie.
Tanto per capirci, i modelli linguistici in formato GGUF sono quelli open source reperibili gratuitamente su Hugging Face.
Il livello di compressione è convenzionalmente indicato da Q seguito da un numero; minore è il numero, maggiore è la compressione e, di conseguenza, minore la precisione del modello.
Di norma, ma non sistematicamente; per cui può capitare di imbattersi in un modello appetibile per qualità, quantizzato a 8 bit (Q8), ma non gestibile da un computer senza acceleratore grafico (GPU). Ecco che riquantizzare il modello a 4 bit (Q4), di fatto dimezzandone il peso sacrificando un po' di precisione, può essere la risposta. Meno bit infatti significano file più piccoli, e file più piccoli significano meno carico per la macchina; il che si traduce in un'interazione con il modello molto più fluida.
Lo strumento più semplice è llama-quantize, componente di llama.cpp.
Una volta scaricato il modello GGUF ad alta precisione, è sufficiente eseguire da terminale il comando di quantizzazione, indicando il livello di compressione voluto. Ad esempio:
./llama-quantize modello-Q8.gguf modello-Q4.gguf Q4_K_M
As simple as that.