My IBM Accedi Iscriviti

Cos'è la quantizzazione?

29 luglio 2024

Autori

Bryan Clark

Senior Technology Advocate

La quantizzazione è il processo di riduzione della precisione di un segnale digitale, in genere da un formato di maggiore precisione a uno di minore precisione. Questa tecnica è ampiamente utilizzata in vari campi, tra cui l'elaborazione dei segnali, la compressione dei dati e il machine learning.

La quantizzazione è una tecnica utilizzata all'interno dei modelli linguistici di grandi dimensioni (LLM) per convertire pesi e valori di attivazione di dati ad alta precisione, solitamente in virgola mobile a 32 bit (FP32) o 16 bit (FP16), in dati a precisione inferiore, come un intero a 8 bit (INT8). I dati ad alta precisione (riferiti a FP32 e FP16) prendono questo nome perché i modelli che utilizzano questi tipi di dati hanno in genere una precisione maggiore. Questo perché quando i dati vengono compressi in un formato come INT8, vengono ridotti a dimensioni più piccole. Ne risulta una minore precisione, nota anche come errore di quantizzazione. Un valore di attivazione è un numero (compreso tra zero e uno) assegnato al neurone artificiale della rete neurale. Questo numero assegnato è indicato come valore di attivazione. La quantizzazione a 8 bit è generalmente l'obiettivo, ma i dati quantizzati con numeri interi a 4 bit (INT4) e inferiori sono stati raggiunti con successo. Essenzialmente, il processo di quantizzazione utilizza tecniche di compressione su una rete neurale per convertire un numero di bit elevato in uno più ridotto. 1

I requisiti computazionali per l'utilizzo di un LLM utilizzando FP32 possono essere immensi. Insieme all'aumento dei requisiti computazionali, anche l'inferenza (il processo di un LLM che genera una risposta alla query di un utente) può essere rallentata. La quantizzazione può essere un ottimo strumento di ottimizzazione sia per ridurre il carico computazionale che per aumentare la velocità di inferenza di un LLM. Il processo di quantizzazione ruota intorno alla premessa di convertire i pesi in un tipo di dati di precisione inferiore, lasciando quasi invariate le prestazioni del modello. La conversione dei pesi in un tipo di dati di precisione inferiore comporterà una riduzione dei costi di calcolo perché il numero di bit che deve essere elaborato ogni volta che il modello viene eseguito è inferiore. Un minor numero di bit elaborati porterà anche a un'elaborazione più rapida di ogni query all'LLM.

Design 3D di palline che rotolano su una pista

Le ultime notizie e insight sull'AI 


Scopri notizie e insight selezionati da esperti in materia di AI, cloud e molto altro nella newsletter settimanale Think. 

Perché implementare la quantizzazione?

Inferenza più veloce

Utilizzando la quantizzazione per convertire i tipi di dati in virgola mobile in numeri interi, i calcoli possono essere completati più rapidamente. Questa operazione riduce la latenza complessiva del modello e porta a un miglioramento della velocità di inferenza rispetto all'accuratezza. Questo compromesso è fondamentale per tutte le applicazioni in tempo reale, soprattutto quando vengono eseguite su CPU mobili. 2

Efficienza

La quantizzazione è fondamentale quando si tenta di eseguire modelli di machine learning su dispositivi in grado di gestire requisiti computazionali più elevati. Quando la quantizzazione converte la rappresentazione in virgola mobile in numeri interi, riduce le esigenze computazionali del modello di machine learning. Ciò rende possibile l'utilizzo di questi modelli quantizzati all'interno di applicazioni del mondo reale su laptop, tablet e smartphone. 2

Minore consumo energetico

In genere, i modelli quantizzati richiedono requisiti computazionali inferiori. Pertanto, la quantizzazione si traduce in una maggiore efficienza energetica, fondamentale per far funzionare questi modelli su laptop, tablet e telefoni cellulari. 3

Compatibilità

L'utilizzo della quantizzazione consente l'esecuzione degli attuali modelli di machine learning utilizzando operazioni intere. Ciò rende i modelli quantizzati compatibili con le piattaforme precedenti che non supportano le operazioni in virgola mobile. Inoltre, li rende molto più accessibili, consentendo di eseguirli su GPU di livello consumer. 4

Come funziona la quantizzazione

Ci sono circa 4 miliardi di valori possibili nell'insieme dei valori FP32 che vanno da -3,4 1038 a 3,4 1038. Mentre con INT8, vediamo solo 256 valori all'interno dei possibili valori compresi tra -128 e 128. Poiché quest'ultimo è un insieme di valori significativamente più piccolo, la moltiplicazione di matrici può avvenire molto più velocemente. A causa dell'immenso costo computazionale dei modelli basati sul deep learning, algoritmi accurati ed efficienti sono essenziali.

Il processo di quantizzazione avviene determinando prima il percorso ottimale di proiezione dei valori in virgola mobile a 32 bit nel campo INT8. Per fare ciò, esistono diversi algoritmi per quantizzare un modello. Daremo un'occhiata a due metodi di quantizzazione, Absolute Max e Affine Quantization.

Quantizzazione massima assoluta

Per calcolare la mappatura tra il numero a virgola mobile e il corrispondente numero INT8 nella quantizzazione massima assoluta, è necessario prima dividere per il valore massimo assoluto del tensore e quindi moltiplicare per l'intervallo totale del tipo di dati.

Ad esempio, applicheremo l'algoritmo di quantizzazione massima assoluta al seguente vettore [1,6, -0,7, -3,4,1,7, -2,9, 0,5, 2,3, 6,2]. Se ne estrae il massimo assoluto, che in questo caso è 6,2. INT8 ha un intervallo di [-127, 127], quindi dividiamo 127 per 6,2 e otteniamo 20,5 per il fattore di scala. Pertanto, moltiplicando il vettore originale per esso si ottiene il vettore di dati quantizzato [33, -14, -70, 35, -59, 10, 47, 127]. A causa dell'arrotondamento di questi numeri, ci sarà una certa perdita di precisione. 5

Quantizzazione affine

Per implementare l'algoritmo di quantizzazione affine, definiremo il nostro intervallo di valori in virgola mobile a 32 bit come [a, b]. L'algoritmo di quantizzazione affine è il seguente:

𝑥𝑞 = arrotondato ((1/𝑆)𝑥+𝑍)

- 𝑥𝑞 è il valore INT8 quantizzato che corrisponde al valore in virgola mobile a 32 bit x.

- S è un fattore di scala FP32 ed è un numero in virgola mobile positivo a 32 bit.

- Z è il punto zero. Questo sarà il valore INT8 che corrisponde a zero nel campo in virgola mobile a 32 bit.

- arrotondato si riferisce all'arrotondamento del valore risultante al numero intero più vicino.

Per stabilire poi il [min, max] dei nostri valori in virgola mobile a 32 bit, dobbiamo prendere in considerazione eventuali outlier. Trascurare questi outlier può far sì che vengano mappati come minimi o massimi e potenzialmente alterare l'accuratezza del modello quantizzato. Per ovviare a ciò, il modello può essere quantizzato in blocchi. I pesi possono essere suddivisi in gruppi di 64 o 128. Poi questi gruppi vengono quantizzati per tenere conto degli outlier e minimizzare il rischio di una precisione ridotta. 6

AI Academy

Ecco perché i foundation model rappresentano un cambio di paradigma per l'AI

Scopri una nuova classe di modelli AI flessibili e riutilizzabili che possono sbloccare nuove entrate, ridurre i costi e aumentare la produttività, consulta quindi la nostra guida per approfondire.

Tipi di quantizzazione

Quantizzazione post-addestramento (PTQ)

La quantizzazione post-addestramento si verifica quando la quantizzazione viene applicata a un modello esistente. Questa converte il modello da una rappresentazione in virgola mobile a un numero intero a virgola fissa con precisione inferiore senza la necessità di alcuna riqualificazione. Questo metodo non richiede tanti dati quanto l'addestramento basato sulla quantizzazione ed è molto più veloce. Tuttavia, poiché un modello già esistente viene essenzialmente convertito in un modello di dimensioni inferiori, la quantizzazione post-addestramento può portare a un peggioramento delle prestazioni. Un esempio di quando utilizzare la PTQ potrebbe essere quando si dispone già di un modello funzionante e si desidera aumentare la velocità e l'efficienza. Questo perché la PTQ avviene dopo l'addestramento di un modello (ovvero un modello già esistente), quindi per questo processo non è necessaria una grande quantità di dati di addestramento. 7

Addestramento basato sulla quantizzazione (QAT)

L'addestramento basato sulla quantizzazione incorpora la conversione del peso durante il pre-addestramento o la messa a punto di un LLM. Ciò consente prestazioni migliorate, ma richiede una grande potenza di calcolo e richiede dati di addestramento rappresentativi. Nel complesso, l'addestramento basato sulla quantizzazione di solito produce un modello con prestazioni più elevate, ma è più costoso e richiede molta più potenza di calcolo. Un esempio di quando usare il QAT è quando si possiede una quantità adeguata di dati di addestramento e un budget maggiore. È bene ricordare anche che questo processo avviene durante la fase di addestramento del modello, quindi non ha senso utilizzare questo metodo con un modello già addestrato. 7

Quantizzazione dinamica e tecniche di quantizzazione statica

Lo scopo di queste due tecniche è il modo in cui verrà selezionato l'intervallo di clipping, o calibrazione come viene spesso definito. Durante questa quantizzazione dinamica, l'intervallo di clipping viene calcolato dinamicamente per ogni attivazione. In genere, questo tipo di tecnica di quantizzazione si traduce in una maggiore precisione. Come dice il nome, la quantizzazione statica utilizza un intervallo di clipping fisso per tutti gli ingressi. Questa forma di quantizzazione viene utilizzata più spesso come quantizzazione dinamica e può essere molto costosa.

Rischi e limitazioni

Minore precisione

Quando i pesi vengono convertiti durante la quantizzazione, a volte c'è una perdita di precisione all'interno dei valori quantizzati con modelli di machine learning quantizzati. Le dimensioni del modello devono essere prese in considerazione, perché quando si quantizzano LLM eccezionalmente grandi con numerosi parametri e livelli, c'è il rischio di un significativo accumulo di errori di quantizzazione. 8

Costo

L'addestramento su scala di modelli di machine learning può essere estremamente costoso, soprattutto con l'addestramento basato sulla quantizzazione (QAT). Questo rende la quantizzazione post-addestramento (PTQ) la scelta migliore dal punto di vista dei costi. Tuttavia, ciò limita il modello sotto alcuni aspetti, poiché la QAT solitamente produce un modello più accurato. 9

Fai il passo successivo

Esplora la libreria IBM dei foundation model nel portafoglio di IBM watsonx per scalare in sicurezza l'AI generativa per la tua azienda.

Esplora watsonx.ai Esplora le soluzioni AI
Note a piè di pagina

¹ Dong Liu, Meng Jiang, Kaiser Pister, "LLMEasyQuant - An Easy to Use Toolkit for LLM Quantization", https://arxiv.org/pdf/2406.19657v2.

² Benoit Jacob, Skirmantas Kligys, Bo Chen, Menglong Zhu, Matthew Tang, Andrew Howard, Hartwig Adam, Dmitry Kalenichenko, "Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference", https://arxiv.org/pdf/1712.05877v1.

³ Ravi Kishore Kodali, Yatendra Prasad Upreti, Lakshmi Boppana, "A Quantization Approach for the Reduced Size of Large Language Models", https://ieeexplore.ieee.org/document/10499664.

⁴ Xiao Sun, Naigang Wang, Chia-yu Chen, Jia-min Ni, Ankur Agrawal, Xiaodong Cui, Swagath Venkataramani, Kaoutar El Maghraoui, Vijayalakshmi Srinivasan, "Ultra-Low Precision 4-bit Training of Deep Neural Networks", https://research.ibm.com/publications/ultra-low-precision-4-bit-training-of-deep-neural-networks

⁵ Tim Dettmers, Mike Lewis, Younes Belkada, Luke Zettlemoyer, "LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale", https://arxiv.org/pdf/2208.07339

⁶ Amir Gholami, Sehoon Kim, Zhen Dong, Zhewei Yao, Michael W. Mahoney, Kurt Keutzer, "A Survey of Quantization Methods for Efficient Neural Network Inference", https://arxiv.org/pdf/2103.13630

⁷ Hao Wu, Patrick Judd, Xiaojie Zhang, Mikhail Isaev, Paulius Micikevicius, "A Survey of Quantization Methods for Efficient Neural Network Inference", https://arxiv.org/pdf/2004.09602

⁸ Zhuocheng Gong, Jiahao Liu, Jingang Wang, Xunliang Cai, Dongyan Zhao, Rui Yan, "What Makes Quantization for Large Language Models Hard? An Empirical Study from the Lens of Perturbation", https://arxiv.org/pdf/2403.06408v1.

⁹ Sehoon Kim, Coleman Hooper, Amir Gholami, Zhen Dong, Xiuyu Li, Sheng Shen, Michael W. Mahoney, Kurt Keutzer, "SqueezeLLM: Dense-and-Sparse Quantization", https://arxiv.org/pdf/2306.07629v4.