¿Qué es la cuantificación?

Cañón del Antílope, Arizona (EE. UU.)

Autores

Bryan Clark

Senior Technology Advocate

La cuantificación es el proceso de reducir la precisión de una señal digital, normalmente de un formato de mayor precisión a un formato de menor precisión. Esta técnica se utiliza mucho en varios ámbitos, como el procesamiento de señales, la compresión de datos y el machine learning.

La cuantización es una técnica utilizada en modelos de lenguaje de gran tamaño (LLM) para convertir pesos y valores de activación de datos de alta precisión, normalmente coma flotante de 32 bits (FP32) o coma flotante de 16 bits (FP16), a un dato de menor precisión, como un entero de 8 bits (INT8). Los datos de alta precisión (en referencia a FP32 y FP16) reciben su nombre porque los modelos que utilizan estos tipos de datos suelen tener una mayor precisión. Esto se debe a que cuando los datos se comprimen en algo como INT8, se reducen a un tamaño más pequeño. Esto da como resultado una menor precisión, también conocida como error de cuantificación. Un valor de activación es un número (entre cero y uno) asignado a la neurona artificial de la red neuronal. Este número asignado se conoce como su valor de activación. La cuantificación de 8 bits suele ser el objetivo, pero se han logrado con éxito datos cuantificados de enteros de 4 bits (INT4) e inferiores. Básicamente, el proceso de cuantización utiliza técnicas de compresión en una red neuronal para convertir un gran número de bits en un pequeño número de bits 1.

Los requisitos computacionales para operar un LLM utilizando FP32 pueden ser inmensos.Junto con el aumento de los requisitos computacionales, la inferencia (el proceso mediante el cual un LLM genera una respuesta a la consulta de un usuario) también puede verse ralentizada. La cuantificación puede ser una gran herramienta de optimización tanto para reducir la carga computacional como para aumentar la velocidad de inferencia de un LLM. El proceso de cuantificación gira en torno a la premisa de convertir los pesos a un tipo de datos de menor precisión mientras que el rendimiento del modelo sigue siendo casi idéntico. La conversión de los pesos a un tipo de datos de menor precisión supondrá menos costes computacionales porque hay menos número de bits que necesitan procesarse cada vez que se ejecuta el modelo. Al procesar menos bits, cada consulta al LLM se procesará más rápido.

Diseño 3D de bolas rodando por un circuito

Las últimas noticias + conocimientos de IA 


Descubra ideas y noticias de expertos sobre IA, nube y mucho más en el boletín semanal Think. 

¿Por qué implementar la cuantificación?

Inferencia más rápida

Mediante el uso de la cuantización para convertir los tipos de datos de coma flotante en enteros, los cálculos pueden completarse con mayor rapidez. Esto disminuye la latencia general del modelo y conduce a una mejora en la velocidad de inferencia frente a la precisión. Esta compensación es crucial para cualquier aplicación en tiempo real, especialmente cuando se ejecuta en CPU móviles 2.

Eficiencia

La cuantización es crucial cuando se intenta ejecutar modelos de machine learning en dispositivos que no pueden soportar mayores requisitos computacionales. Cuando la cuantización convierte el punto flotante en una representación entera, reduce las exigencias computacionales del modelo de machine learning. Esto permite utilizar estos modelos cuantificados en aplicaciones del mundo real en ordenadores portátiles, tablets y teléfonos inteligentes 2.

Menor consumo de energía

Normalmente, los modelos cuantificados tienen menores requisitos computacionales. Por lo tanto, la cuantificación se traduce en una mayor eficiencia energética, que es clave para ejecutar estos modelos en ordenadores portátiles, tablets y teléfonos móviles3

Compatibilidad

El uso de la cuantificación permite que los modelos actuales de machine learning se ejecuten mediante operaciones con enteros. Esto hace que los modelos cuantificados sean compatibles con plataformas más antiguas que no admiten operaciones de punto flotante. Esto también hace que estos modelos sean mucho más accesibles, lo que permite ejecutarlos en GPU de consumo 4.

Cómo funciona la cuantificación

Hay alrededor de 4000 millones de valores dentro del conjunto de valores posibles de FP32 que van de -3,4 1038 a 3,4 1038. Mientras que con INT8, sólo vemos 256 valores dentro del conjunto de valores posibles que van de -128 a 128. Como este último es un conjunto de valores significativamente más pequeño, la multiplicación de matrices puede producirse mucho más rápido. Debido al inmenso coste computacional de los modelos basados en deep learning, es esencial disponer de algoritmos precisos y eficientes.

El proceso de cuantización se produce al determinar primero la ruta óptima de proyección de los valores de coma flotante de 32 bits en el campo INT8. Para ello, existen múltiples algoritmos para cuantizar un modelo. Examinaremos dos métodos de cuantización, el máximo absoluto y la cuantización afín.

Cuantificación del máximo absoluto

Para calcular la correlación entre el número de coma flotante y su número INT8 correspondiente en la cuantificación máxima absoluta, primero debe dividir por el valor máximo absoluto del tensor y luego multiplicar por el rango total del tipo de datos.

Por ejemplo, aplicaremos el algoritmo de cuantificación máxima absoluta al siguiente vector [1,6, -0,7, -3,4, 1,7, -2,9, 0,5, 2,3, 6,2]. Se extrae el máximo absoluto, que en este caso es 6,2. INT8 tiene un rango de [-127, 127], por lo que dividimos 127 por 6,2 y obtenemos 20,5 para el factor de escala. Por lo tanto, multiplicar el vector original por él da el vector de datos cuantificados [33, -14, -70, 35, -59, 10, 47, 127]. Debido a que estos números se redondean, habrá cierta pérdida de precisión 5.

Cuantización afín

Para implementar el algoritmo de cuantización afín, definiremos nuestro rango de valores de coma flotante de 32 bits como [a, b]. El algoritmo de cuantización afín es el siguiente:

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

- 𝑥𝑞 es el valor INT8 cuantificado que corresponde al valor de coma flotante de 32 bits x.

- S es un factor de escalado FP32 y es un punto flotante positivo de 32 bits.

- Z es el punto cero. Será el valor INT8 que se corresponde con cero en el campo de coma flotante de 32 bits.

- round se refiere al redondeo del valor resultante al entero más cercano.

Para establecer el [mín, máx] de nuestros valores de coma flotante de 32 bits, necesitamos tener en cuenta cualquier valor atípico. Ignorar estos valores atípicos puede hacer que se asignen como mínimos o máximos y sesgar potencialmente la precisión del modelo cuantificado. Para contrarrestar esto, el modelo se puede cuantificar en bloques. Los pesos se pueden dividir en grupos de 64 o 128. A continuación, estos grupos se cuantifican para tener en cuenta los valores atípicos y minimizar el riesgo de una menor precisión 6.

AI Academy

Por qué los modelos fundacionales son un cambio de paradigma para la IA

Conozca una nueva clase de modelos de IA flexibles y reutilizables capaces de desbloquear nuevos ingresos, reducir costes y aumentar la productividad, y utilice nuestra guía para profundizar más en el tema.

Tipos de cuantificación

Cuantificación posterior al entrenamiento (PTQ)

La cuantización posterior al entrenamiento ocurre cuando se aplica la cuantización a un modelo existente. Esto convierte el modelo de una representación de punto flotante a un entero de punto fijo de menor precisión sin necesidad de volver a entrenarlo. Este método no requiere tantos datos como el entrenamiento consciente de la cuantización y es mucho más rápido. Sin embargo, dado que un modelo ya existente se está convirtiendo esencialmente a un tamaño más pequeño, la cuantización posterior al entrenamiento puede provocar una degradación del rendimiento. Un ejemplo de cuándo utilizar PTQ sería cuando ya tienes un modelo en funcionamiento y deseas aumentar la velocidad y la eficiencia. Esto se debe a que PTQ se lleva a cabo después de que se entrena un modelo (es decir, un modelo ya existente), por lo que no se requiere una gran cantidad de datos de entrenamiento para este proceso 7.

Entrenamiento consciente de la cuantificación (QAT)

El entrenamiento consciente de la cuantización incorpora la conversión del peso durante el preentrenamiento o el ajuste fino de un LLM. Esto permite mejorar el rendimiento, pero exige una gran cantidad de potencia computacional y requiere datos de entrenamiento representativos. En general, el entrenamiento consciente de la cuantización suele producir un modelo con un mayor rendimiento, pero es más caro y exigirá mucha más potencia de cálculo. Un ejemplo de cuándo utilizar QAT sería cuando se posee una cantidad adecuada de datos de entrenamiento y un presupuesto mayor. También es bueno recordar que este proceso tiene lugar durante la etapa de entrenamiento del modelo, por lo que no tiene sentido utilizar este método con un modelo que ya está entrenado 7.

Cuantificación dinámica frente a técnicas de cuantificación estática

El objetivo de estas dos técnicas es cómo se seleccionará el rango de recorte o, como se suele decir, la calibración. Durante esta cuantización dinámica, el rango de recorte se calcula dinámicamente para cada activación. Normalmente, este tipo de técnica de cuantización dará como resultado una mayor precisión. Como su nombre indica, la cuantización estática utiliza un rango de recorte fijo para todas las entradas. Esta forma de cuantización se utiliza más a menudo que la cuantización dinámica y puede ser muy costosa.

Riesgos y limitaciones

Menor precisión

Cuando las ponderaciones se convierten durante la cuantificación, a veces hay una pérdida de precisión en los valores cuantificados con los modelos cuantificados de machine learning. Hay que tener en cuenta el tamaño del modelo, ya que al cuantificar LLM excepcionalmente grandes con numerosos parámetros y capas, existe el riesgo de que se acumulen errores de cuantificación importantes8.

Coste

El entrenamiento a escala de modelos de machine learning puede ser extremadamente costoso, especialmente con el entrenamiento consciente de la cuantificación (QAT). Esto hace que la cuantificación posterior al entrenamiento (PTQ) sea la mejor opción desde el punto de vista de la rentabilidad. Sin embargo, esto limita el modelo en algunos aspectos, ya que el QAT producirá normalmente un modelo más preciso 9.

Dé el siguiente paso

Explore la biblioteca de modelos fundacionales de IBM en la cartera de IBM watsonx para escalar la IA generativa para su negocio con confianza.

Explore watsonx.ai Explore las soluciones de IA
Notas a pie de página

¹ 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.