Mi IBM Iniciar sesión Suscríbase

¿Qué es la cuantificación?

29 de julio de 2024

Autores

Bryan Clark

Senior Technology Advocate

¿Qué es la cuantificación?

La cuantificación (o cuantización) es el proceso de reducir la precisión de una señal digital, generalmente de un formato de mayor precisión a un formato de menor precisión. 

Esta técnica se emplea ampliamente en varios campos, incluido el procesamiento de señales, la compresión de datos y el machine learning.

La cuantificación (cuantización) es una técnica empleada dentro de los modelos de lenguaje grandes (LLM) para convertir pesos y valores de activación de datos de alta precisión, generalmente de coma flotante (o punto flotante) de 32 bits (FP32) o coma flotante de 16 bits (FP16), a datos de menor precisión, como enteros de 8 bits (INT8).

Los datos de alta precisión (refiriéndose a FP32 y FP16) reciben su nombre porque los modelos que emplean 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 comprimen 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 denomina valor de activación.

La cuantificación de 8 bits es generalmente el objetivo, pero los datos cuantificados de enteros de 4 bits (INT4) e inferiores se lograron con éxito. Esencialmente, el proceso de cuantificación emplea técnicas de compresión en una red neuronal para convertir una gran cantidad de bits en una pequeña cantidad de bits1.

Los requisitos computacionales de operar un LLM con FP32 pueden ser muchos. Junto con el aumento de los requisitos computacionales, la inferencia (el proceso de un LLM que genera una respuesta a la consulta de un usuario) también puede ralentizarse. 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 el rendimiento del modelo sigue siendo casi idéntico. La conversión de pesos a un tipo de datos de menor precisión dará como resultado menos costos computacionales porque hay menos bits que deben procesarse cada vez que se ejecuta el modelo. El procesamiento de una menor cantidad de bits también derivará en que cada consulta al LLM se procese más rápido.

Diseño 3D de pelotas rodando en una pista

Las últimas novedades e insights sobre IA 


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

¿Por qué implementar la cuantificación?

Inferencia más rápida

Al utilizar la cuantificación para convertir los tipos de datos de coma flotante en números enteros, los cálculos se pueden completar más rápidamente. Esto disminuye la latencia general del modelo y conduce a una mayor 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óviles2.

Eficiencia

La cuantificación es crucial cuando se pretende ejecutar modelos de machine learning en dispositivos que no pueden manejar requisitos computacionales más altos.

Cuando la cuantificación convierte la representación de punto flotante en entero, reduce las demandas computacionales del modelo de machine learning. Esto hace posible emplear estos modelos cuantificados dentro de aplicaciones del mundo real en computadoras portátiles, tabletas y teléfonos inteligentes2.

Menor consumo de energía

Por lo general, los modelos cuantificados tienen requisitos computacionales más bajos. Por lo tanto, la cuantificación da como resultado una mayor eficiencia energética, lo cual es clave para ejecutar estos modelos en computadoras portátiles, tabletas y teléfonos móviles3.

Compatibilidad

La utilización de la cuantificación permite que los modelos actuales de machine learning se ejecuten utilizando operaciones con números 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 las GPU de consumo4.

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, vemos solamente 256 valores dentro del conjunto de valores posibles que van de -128 a 128.

Dado que este último es un conjunto de valores significativamente menor, la multiplicación de matrices puede ocurrir mucho más rápido. Debido al inmenso costo computacional de los modelos basados en aprendizaje profundo, los algoritmos precisos y eficientes son esenciales.

El proceso de cuantificación se produce determinando primero la ruta óptima de proyección de los valores de coma flotante de 32 bits en el campo INT8. Para hacerlo, existen múltiples algoritmos para cuantificar un modelo. Echaremos un vistazo a dos métodos: cuantificación máxima absoluta y cuantificación afín.

Cuantificación máxima absoluta

Para calcular la asignación entre el número de punto flotante y su número INT8 correspondiente en la cuantificación máxima absoluta, primero debe dividir entre 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 es 6.2 en este caso. INT8 tiene un rango de [-127, 127], así que dividimos 127 entre 6.2 y obtenemos  20.5 para el factor de escala. Por lo tanto, al multiplicar el vector original por este se obtiene 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ón5.

Cuantificación afín

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

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

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

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

- Z es el punto cero. Este será el valor INT8 que corresponde a cero en el campo de punto flotante de 32 bits.

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

Para establecer a continuación el [mínimo, máximo] de nuestros valores de punto flotante de 32 bits, debemos tener en cuenta cualquier valor atípico. Pasar por alto estos valores atípicos puede llevar a que se asignen como mínimo o máximo y potencialmente sesgar 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. Luego, estos grupos se cuantifican para tener en cuenta los valores atípicos y minimizar el riesgo de menor precisión6.

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 que pueden desbloquear nuevos ingresos, reducir costos y aumentar la productividad, luego use nuestra guía para investigar a profundidad.

Tipos de cuantificación

Cuantificación posterior al entrenamiento (PTQ)

La cuantificación posterior al entrenamiento ocurre cuando la cuantificación se aplica 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 cuantificación y es mucho más rápido. Sin embargo, debido a que un modelo ya existente se está convirtiendo esencialmente en uno más pequeño, la cuantificación posterior al entrenamiento puede degradar el rendimiento.

Un ejemplo de cuándo emplear PTQ sería cuando ya tiene un modelo en funcionamiento y desea aumentar la velocidad y la eficiencia. Esto se debe a que el PTQ tiene lugar 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 cuantificación incorpora la conversión de peso durante el entrenamiento previo 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 cuantificación normalmente producirá un modelo con mayor rendimiento, pero es más costoso y exigirá mucha más potencia informática. Un ejemplo de cuándo usar QAT sería cuando posee una cantidad adecuada de datos de entrenamiento y un mayor presupuesto. También es bueno recordar que este proceso tiene lugar durante la etapa de entrenamiento del modelo, por lo que no tiene sentido usar este método con un modelo que ya está entrenado7.

Técnicas de 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 calibración, como se suele denominar.

Durante esta cuantificación dinámica, el rango de recorte se calcula dinámicamente para cada activación. Normalmente, este tipo de técnica de cuantificación dará como resultado una mayor precisión. Como su nombre indica, la cuantificación estática emplea un rango de recorte fijo para todas las entradas. Esta forma de cuantificación se emplea más a menudo como cuantificación dinámica y puede ser muy costosa.

Riesgos y limitaciones

Menor precisión

Cuando los pesos se convierten durante la cuantificación, a veces hay una pérdida de precisión dentro de los valores cuantificados con modelos de machine learning cuantificados. Se debe tener en cuenta el tamaño del modelo, ya que cuando se cuantifican LLM excepcionalmente grandes con numerosos parámetros y capas, existe el riesgo de una acumulación significativa de errores de cuantificación8.

Costo

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 la QAT suele producir un modelo más preciso9.

Dé el siguiente paso

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

Explore watsonx.ai Explore las soluciones de IA
Notas de 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.