Baidu Blog

Back

This article was translated from English by Gemini 2.5 Pro.

Para ser sincero, es posible que mucha gente no sepa que ICECHUI ofrece una API de modelos gratuita, que admite hasta 6 millones de tokens por día. Por supuesto, los desarrolladores deben solicitarla. Actualmente, hay varios modelos de Qwen disponibles, y me han parecido bastante buenos.

Pero esto no es un anuncio. Es un preludio al tema de la optimización de grandes modelos de lenguaje: ¿Qué es la cuantización?

En Pocas Palabras#

La cuantización es una técnica cuyo objetivo es reducir la precisión numérica de los parámetros de un modelo, disminuyendo así el número de bits necesarios para almacenar cada parámetro.

En un proceso típico de entrenamiento de un modelo de IA, los parámetros del modelo —es decir, los pesos (weights) y los sesgos (biases)— suelen almacenarse en formato de punto flotante de 32 bits (FP32). Este formato ofrece una precisión extremadamente alta, capaz de representar una gama muy amplia y detallada de valores numéricos, como 7.892345678.

Sin embargo, la cuantización puede aproximar un valor de tan alta precisión con un entero de baja precisión de 8 bits (INT8), como el entero 8. La esencia de este proceso es intercambiar una pérdida de precisión aceptable por un aumento significativo en la eficiencia del modelo.

Para entender este proceso de forma más gráfica, imagina simplificar un exhaustivo tomo académico en un libro infantil o un resumen.

El tomo académico contiene un vasto vocabulario avanzado y estructuras de frases complejas, lo que lo hace denso en información, pero también pesado y difícil de leer rápidamente.

En cambio, el libro infantil o el resumen transmite las ideas centrales utilizando un lenguaje más sencillo y menos páginas.

Aunque algunos detalles sutiles y matices podrían perderse en la simplificación, el contenido principal se conserva y se vuelve más fácil de almacenar, difundir y comprender.

La cuantización de modelos de IA es como este proceso de simplificación. Convierte el complejo lenguaje numérico interno del modelo (números de punto flotante de alta precisión) en un lenguaje más conciso y eficiente (enteros de baja precisión), haciendo que el modelo sea más ligero y rápido, aunque sea a costa de sacrificar un poco de precisión expresiva.

¿Por Qué Cuantizar?#

La razón es bastante sencilla. El beneficio más directo y significativo de la cuantización es la drástica reducción del tamaño de almacenamiento del modelo. El tamaño de un modelo está determinado principalmente por el número de sus parámetros y la precisión de almacenamiento de cada uno.

Cuando convertimos los parámetros del estándar de punto flotante de 32 bits (FP32, que ocupa 4 bytes) a enteros de 8 bits (INT8, que ocupa 1 byte), el requisito de almacenamiento para cada parámetro disminuye en un 75%. Para modelos grandes con miles de millones o incluso decenas de miles de millones de parámetros, esta reducción es innegable.

Además de reducir el tamaño, la cuantización también puede acelerar significativamente la inferencia del modelo, que es el proceso en el que el modelo utiliza su conocimiento aprendido para hacer predicciones o generar contenido.

Esta mejora de la velocidad proviene de dos fuentes principales:

  1. La aritmética de enteros es intrínsecamente más rápida que la aritmética de punto flotante. En las GPU o en hardware diseñado específicamente para la IA (como las TPU de Google o los Tensor Cores de NVIDIA), los circuitos para realizar operaciones matemáticas con enteros son más simples, tienen menor latencia y mayor rendimiento. Convertir la gran cantidad de operaciones de multiplicación y acumulación en un modelo de punto flotante a entero aprovecha directamente esta ventaja del hardware, reduciendo así el tiempo de cálculo.
  2. Alivia la presión sobre el ancho de banda de la memoria. El ancho de banda de la memoria, la velocidad de transferencia de datos entre el procesador y la memoria, suele ser un cuello de botella importante en la computación de IA. Dado que un modelo cuantizado es más pequeño, la cantidad de datos que deben cargarse desde la memoria a la caché del procesador para su cálculo se reduce. Menos transferencia de datos significa tiempos de espera más cortos, lo que permite que el procesador se dedique de manera más eficiente a los cálculos reales.

Además, la eficiencia computacional está directamente relacionada con el consumo de energía. Debido a que las operaciones con enteros son más simples que las operaciones de punto flotante, consumen menos energía. Por lo tanto, los modelos cuantizados son más eficientes energéticamente durante su ejecución.

Combinando estos tres puntos, las aplicaciones de IA tradicionales siguen mayoritariamente un modelo de IA en la nube, donde los dispositivos terminales (como los teléfonos inteligentes) envían datos a los servidores en la nube para su procesamiento y reciben los resultados de vuelta.

Este modelo depende de una conexión de red estable y rápida y conlleva el riesgo de fugas de privacidad de datos. La IA en el borde (Edge AI), por otro lado, tiene como objetivo dotar a los dispositivos terminales de capacidades computacionales directas, permitiendo que la IA se ejecute localmente.

El Arte de las Matemáticas#

Para lograr la conversión de números de punto flotante de alta precisión a enteros de baja precisión, necesitamos un marco matemático claro y fiable.

Este proceso puede verse como un arte de la traducción, cuyo desafío principal es cómo mapear con precisión un intervalo continuo con infinitos valores posibles (p. ej., todos los números de punto flotante entre -15.0 y +15.0) a un conjunto discreto de enteros con un número finito de valores (p. ej., los 256 valores representables por INT8, de -128 a 127).

En el corazón de este arte se encuentra un método de mapeo lineal conocido como el Esquema de Cuantización Afín (Affine Quantization Scheme).

¡Un Poco de Matemáticas, Pan Comido!#

La idea básica de la cuantización afín es muy simple. Establece una correspondencia entre los números de punto flotante y los enteros a través de una ecuación lineal. Esta relación se puede resumir con la siguiente fórmula:

valor_realescala×(valor_cuantizadopunto_cero)\text{valor\_real} \approx \text{escala} \times (\text{valor\_cuantizado} - \text{punto\_cero})

Aquí, valor_real\text{valor\_real} es el valor de punto flotante original, y valor_cuantizado\text{valor\_cuantizado} es su valor entero correspondiente. La escala y el punto_cero en la fórmula son dos parámetros clave de cuantización que definen conjuntamente las reglas específicas de esta traducción.

Esta fórmula es esencialmente una transformación lineal simple, similar a convertir la temperatura de Celsius a Fahrenheit, que se logra mediante un escalado y un desplazamiento.

A la inversa, cuando queremos convertir un número de punto flotante xx en un entero xqx_q, solo necesitamos reorganizar la fórmula anterior para obtener el paso de cálculo central de la cuantización:

xq=round(xS+Z)x_q = \text{round}(\frac{x}{S} + Z)

Aquí, SS representa la escala (factor de escala), y ZZ representa el punto_cero. Esta fórmula nos dice que cuantizar un número de punto flotante xx implica tres pasos. Primero, dividir xx por el factor de escala SS. Luego, sumar el punto cero ZZ. Finalmente, redondear el resultado al entero más cercano. Este entero xqx_q es la representación cuantizada del número de punto flotante original xx.

Los valores que caen fuera del rango de punto flotante preestablecido [a,b][a, b] son recortados (clipped) al valor entero más cercano representable por ese rango, asegurando que todas las entradas se mapeen en el espacio de enteros válido.

¿Factor de Escala? ¿Punto Cero?#

La escala es un número de punto flotante positivo que define la granularidad de la cuantización. Se puede entender como el rango numérico en el mundo de los puntos flotantes que representa un solo paso unitario en el mundo de los enteros.

Por ejemplo, si la escala es 0.1, la diferencia entre los valores enteros 5 y 6 representa un cambio de 0.1 en el valor de punto flotante.

Un valor de escala más pequeño significa una mayor precisión, ya que cada entero corresponde a un rango más estrecho de números de punto flotante. Por el contrario, un valor de escala más grande significa una granularidad más gruesa y una mayor pérdida de precisión.

El punto_cero es un entero cuyo propósito es asegurar que el valor especial de 0.0 en el mundo de los puntos flotantes pueda ser representado exactamente por un valor en el mundo de los enteros.

Esto es crucial porque el 0 es un valor muy común y significativo en las redes neuronales. Por ejemplo, en la función de activación ReLU, todas las entradas negativas se establecen en 0. En las operaciones de convolución, el 0 también se usa con frecuencia para el relleno (padding).

Si el 0.0 de punto flotante no puede ser representado con precisión después de la cuantización, introducirá un sesgo sistemático que afectará continuamente los resultados computacionales del modelo. El punto_cero es el valor entero que corresponde exactamente a 0.0.

¿Entonces?#

Dependiendo de las características de distribución de los valores de punto flotante, podemos adoptar dos estrategias de mapeo diferentes para determinar la escala y el punto_cero: cuantización asimétrica y cuantización simétrica.

  • Cuantización Asimétrica (Asymmetric Quantization) es el esquema de cuantización afín más general. Es adecuado para cualquier rango de números de punto flotante, por ejemplo, un tensor después de ser procesado por una función de activación ReLU, cuyo rango numérico podría ser [0,)[0, \infty). En este caso, el 0 de punto flotante no está en el centro del rango. La cuantización asimétrica utiliza un ZZ no nulo para desplazar todo el intervalo de mapeo de enteros y alinearlo perfectamente con este rango de punto flotante asimétrico.
  • Cuantización Simétrica (Symmetric Quantization) es un caso especial simplificado, adecuado para tensores cuyo rango numérico está aproximadamente centrado en 0, como los pesos en el rango de [10,10][-10, 10]. En la cuantización simétrica, forzamos que ZZ sea 0. La ventaja de esto es que la fórmula de cuantización se simplifica a xq=round(xS)x_q = \text{round}(\frac{x}{S}), lo que puede ahorrar una operación de suma durante el cálculo, llevando potencialmente a un ligero aumento de velocidad. Sin embargo, si la distribución real de los datos no es estrictamente simétrica, forzar el uso de la cuantización simétrica puede sacrificar algo de precisión en la representación.

En la práctica, el arte de las matemáticas no reside solo en aplicar estas fórmulas, sino más bien en determinar el rango de cuantización óptimo [min_val,max_val][min\_val, max\_val] para los pesos y activaciones de cada capa y, a partir de ahí, calcular la escala y el punto_cero más apropiados. Este proceso de determinación de parámetros se denomina calibración.

Para los pesos del modelo, su rango numérico es conocido y estático en el momento de la cuantización. Pero para las activaciones, sus valores cambian dinámicamente con cada dato de entrada diferente. Cómo elegir un rango fijo para acomodar todas las entradas posibles se convierte en un desafío central en la cuantización.

El proceso de calibración generalmente implica pasar un pequeño conjunto representativo de datos de muestra al modelo para observar y analizar estadísticamente el rango de distribución típico de las activaciones.

Elegir un rango demasiado estrecho hará que muchos valores atípicos fuera del rango sean recortados, lo que resultará en grandes errores de recorte. Por otro lado, elegir un rango demasiado amplio hará que la representación de los valores más comunes sea más gruesa, lo que llevará a mayores errores de redondeo.

Encontrar el equilibrio óptimo en este compromiso es el problema central que las diferentes metodologías de cuantización (como la cuantización estática, la cuantización dinámica y el entrenamiento consciente de la cuantización) intentan resolver.

PTQ: Cuantización Post-Entrenamiento#

Como su nombre indica, la cuantización post-entrenamiento es una operación que se realiza sobre un modelo que ya ha sido completamente entrenado con alta precisión (como FP32).

Es más un paso de conversión o post-procesamiento del modelo que parte del proceso de entrenamiento. El flujo de trabajo típicamente implica tomar un modelo pre-entrenado y aplicar un algoritmo de cuantización para convertir sus parámetros a un formato de baja precisión.

La mayor ventaja de PTQ es su conveniencia y eficiencia. Dado que no requiere reentrenar el modelo, todo el proceso es muy rápido, y suele tardar solo de unos minutos a unas pocas horas.

Además, requiere muchos menos datos; a veces, no se necesita ningún dato. Esto hace que PTQ sea una opción extremadamente atractiva, especialmente cuando se tiene un modelo pre-entrenado listo para usar pero se carece del conjunto de datos de entrenamiento original o de suficientes recursos computacionales.

PTQ se puede subdividir en varias técnicas diferentes, siendo las dos más comunes:

  • Cuantización Estática (Static Quantization): Este método cuantiza tanto los pesos como las activaciones del modelo. La cuantización de los pesos es relativamente directa ya que son fijos. Sin embargo, para las activaciones, que cambian con la entrada, la cuantización estática requiere un paso adicional de calibración. En este paso, los desarrolladores introducen un pequeño conjunto de datos de muestra representativos en el modelo y registran el rango dinámico de las activaciones para cada capa. Basándose en estas estadísticas, el algoritmo calcula un conjunto fijo y óptimo de parámetros de cuantización para las activaciones de cada capa. Durante la inferencia real, el modelo utiliza estos parámetros precalculados para cuantizar las activaciones. Dado que todos los parámetros se determinan antes de la inferencia, la cuantización estática no tiene sobrecarga computacional adicional en tiempo de ejecución, lo que resulta en la velocidad de inferencia más rápida.
  • Cuantización Dinámica (Dynamic Quantization): A diferencia de la cuantización estática, la cuantización dinámica generalmente solo cuantiza previamente los pesos del modelo, mientras que las activaciones se cuantizan sobre la marcha (on-the-fly) durante el proceso de inferencia. Específicamente, cada vez que llegan nuevos datos de entrada, el sistema calcula en tiempo real el rango actual (valores máximo y mínimo) de las activaciones y genera dinámicamente los parámetros de cuantización basándose en esto. La ventaja de este método es que los parámetros de cuantización se adaptan perfectamente a cada entrada específica, lo que a menudo resulta en una mayor precisión que la cuantización estática. El inconveniente, sin embargo, es la sobrecarga adicional de calcular estos parámetros durante cada inferencia, lo que puede llevar a una velocidad de inferencia general más lenta en comparación con la cuantización estática.

QAT: Entrenamiento Consciente de la Cuantización#

El Entrenamiento Consciente de la Cuantización adopta un enfoque completamente diferente al de PTQ. En lugar de introducir la cuantización una vez finalizado el entrenamiento, integra el proceso de cuantización directamente en la fase de entrenamiento o ajuste fino (fine-tuning) del modelo.

Su objetivo principal es hacer que el modelo sea “consciente” durante el entrenamiento de que será cuantizado en el futuro, y que aprenda proactivamente a adaptarse y compensar la pérdida de precisión introducida por la cuantización.

QAT se implementa a través de un mecanismo ingenioso, a menudo llamado pseudocuantización o cuantización simulada. En cada iteración del entrenamiento, el proceso específico es el siguiente:

  1. Pasada hacia Adelante (Forward Pass): Al calcular la salida de la red, el modelo simula la operación de cuantización. Primero pseudocuantiza los pesos y activaciones de precisión completa (es decir, calcula sus valores enteros correspondientes según la regla de cuantización, y luego los convierte de nuevo a números de punto flotante utilizando la fórmula de descuantización; estos números de punto flotante ahora llevan el error de cuantización). Luego, utiliza estos valores con errores simulados para completar los cálculos de la red.
  2. Pasada hacia Atrás (Backward Pass): Al calcular los gradientes y actualizar los pesos, el modelo ignora la operación de cuantización de la pasada hacia adelante. Los gradientes se calculan basándose en los pesos originales de precisión completa, y las actualizaciones también se aplican a los pesos de precisión completa. Este diseño (a menudo implementado mediante una técnica llamada Estimador Directo o Straight-Through Estimator) asegura la estabilidad del proceso de entrenamiento y la propagación efectiva de los gradientes.

De esta manera, el modelo experimenta continuamente los efectos de la cuantización a lo largo del proceso de entrenamiento y ajusta sus pesos para encontrar una solución que siga siendo óptima incluso después de la cuantización.

Esto es como un tirador que considera el efecto de la velocidad del viento durante el entrenamiento y ajusta proactivamente su puntería, en lugar de experimentar el viento por primera vez el día de la competición.

Por lo tanto, la mayor ventaja de QAT es su capacidad para preservar la precisión del modelo en la mayor medida posible.

Dado que el modelo ha aprendido a coexistir con el error de cuantización, su versión cuantizada final casi siempre puede alcanzar una mayor precisión que con PTQ, a veces incluso acercándose al nivel del modelo FP32 original. Por lo tanto, cuando una aplicación tiene requisitos de precisión extremadamente estrictos, QAT es la solución preferida.

Por supuesto, esta alta precisión tiene un costo. QAT requiere un ciclo de entrenamiento completo, lo que significa que necesita acceso a un gran conjunto de datos de entrenamiento y una cantidad significativa de recursos computacionales para el reentrenamiento o ajuste fino del modelo.

El Avance ha Terminado, Ahora un Vistazo al Futuro#

Aunque PTQ y QAT forman el marco central de la tecnología de cuantización, el campo está en constante evolución, con muchas herramientas especializadas y técnicas más avanzadas que surgen para escenarios y necesidades específicas.

GPTQ#

GPTQ, que significa Cuantización Post-Entrenamiento Generalizada (Generalized Post-Training Quantization), es un método avanzado de cuantización post-entrenamiento diseñado específicamente para modelos basados en la arquitectura GPT.

Su característica destacada es su capacidad para cuantizar modelos a anchos de bit muy bajos, como INT4 o incluso INT3, manteniendo una pérdida de rendimiento extremadamente baja. GPTQ logra una mejor relación precisión-compresión que los métodos PTQ tradicionales a través de un enfoque de cuantización capa por capa combinado con un análisis preciso del error de cuantización.

En aplicaciones prácticas, los modelos cuantizados con GPTQ a menudo exhiben velocidades de inferencia extremadamente altas en GPU, lo que lo convierte en una de las principales opciones para los usuarios de GPU que ejecutan modelos grandes.

GGML#

GGML es una biblioteca de tensores diseñada para el aprendizaje automático, que incluye un conjunto de formatos binarios personalizados para almacenar modelos cuantizados. A diferencia de GPTQ, que está orientado principalmente a GPU, los modelos en formato GGML muestran un rendimiento excelente cuando se ejecutan en CPU.

Esto permite a los usuarios sin tarjetas gráficas de alta gama experimentar grandes modelos de lenguaje en sus propios portátiles o ordenadores de sobremesa. GGML admite múltiples niveles de cuantización (p. ej., los comúnmente vistos q4_0, q5_1, etc., en los nombres de archivo), proporcionando a los usuarios opciones flexibles para equilibrar el tamaño del modelo y el rendimiento.

Cuantización Extrema#

  • Binarización (Binarization) es una de las formas más extremas de cuantización. En las Redes Neuronales Binarizadas (BNN), los pesos del modelo se restringen a solo dos valores posibles, típicamente 1,+1{-1, +1} o una versión escalada α,+α{-α, +α}.
  • Ternarización (Ternarization) relaja ligeramente esta restricción, permitiendo que los pesos tomen tres valores, generalmente 1,0,+1{-1, 0, +1} o α,0,+α{-α, 0, +α}.

Conclusión#

La cuantización, en esencia, es una técnica de optimización diseñada para hacer que los modelos de IA masivos y complejos sean más pequeños, más rápidos y más eficientes energéticamente.

Esto permite que modelos grandes como los LLM salgan de los centros de datos en la nube con abundantes recursos y se implementen en los diversos dispositivos con recursos limitados que usamos en nuestra vida diaria.

Ya sea reduciendo drásticamente el tamaño del modelo para que quepa en un teléfono inteligente, acelerando la inferencia para respaldar decisiones en tiempo real en la conducción autónoma, o disminuyendo el consumo de energía para extender la duración de la batería de los dispositivos vestibles, la cuantización juega un papel indispensable.

Se ha convertido en uno de los pilares fundamentales de la ingeniería que impulsan la popularización, la aplicación práctica y la democratización de la tecnología de IA.

Notas al Pie#

Hugging Face. (s.f.). Quantization. En documentación de Optimum. Hugging Face. Recuperado el 20 de agosto de 2025, de https://huggingface.co/docs/optimum/concept_guides/quantization Li, J. (2024, 27 de mayo). Mechanistic Interpretability of Binary and Ternary Transformers (arXiv:2405.17703) [Prepublicación]. arXiv. https://doi.org/10.48550/arXiv.2405.17703

[Avance] ¿Qué es la Cuantización?
https://baidu.blog.icechui.com/es/blog/p/aiq1
Author baidu0com
Published at August 20, 2025