Cuantización
También: cuantización de modelos, 4 bits, 8 bits
Actualizado el
Definición
La cuantización consiste en guardar los números de un modelo con menos bits cada uno, por ejemplo 4 u 8 bits donde el original usaba 16 o 32. Hace el modelo más pequeño y más ligero en memoria, normalmente a cambio de una pequeña pérdida de precisión.
Un modelo es sobre todo una lista muy larga de números, llamados pesos. Tal como se entrena, cada peso suele ser un valor en coma flotante de 32 o 16 bits. La cuantización los reescribe de una forma más gruesa. La documentación de Apple la define como reducir el número de bits que representan un número.
Por eso el mismo modelo puede aparecer como varias descargas de distintos tamaños, con etiquetas como 4bit, 8bit o Q4. Son un mismo modelo con distintos niveles de compresión.
Cuánto más pequeño
El tamaño sigue a los bits casi directamente. Si reduces a la mitad los bits por peso, el archivo ocupa más o menos la mitad.
Un ejemplo publicado lo concreta. Para un modelo de lenguaje de 8.000 millones de parámetros, el archivo de 16 bits ocupa unos 15 GiB, el de 8 bits unos 8 GiB y una versión habitual de 4 bits unos 4,6 GiB. La versión de 4 bits sale a unos 4,9 bits por peso, no exactamente 4, porque algunas partes se mantienen con más precisión.
A qué renuncias
A un poco de precisión. Unos números más gruesos hacen que los cálculos del modelo se desvíen ligeramente en todas partes, y los errores se acumulan. Cuánto se nota depende del modelo y de hasta dónde llegues.
Según las indicaciones de Apple, comprimir a 8 bits, y en algunos modelos a 6 o 4, puede funcionar con solo una ligera pérdida de precisión.
Qué ganas además de tamaño
Apple enumera como posibles ventajas de comprimir un modelo un menor uso de memoria, menos latencia y menos consumo de energía, por separado o a la vez. En un portátil, la memoria suele ser lo que importa: un modelo que cabe con holgura deja sitio para todo lo demás que tengas abierto.
Cómo leer las etiquetas
La etiqueta te dice la precisión de los pesos.
- fp32 o float32: precisión completa, como se entrenan la mayoría de los modelos.
- fp16, bf16 o float16: media precisión. A menudo es la forma en que se publica un modelo.
- 8bit o int8: una cuarta parte de la precisión completa.
- 4bit o int4: una octava parte de la precisión completa. La opción habitual para ejecutar modelos grandes en un portátil.
- Q4, Q5, Q8 con letras detrás: la misma idea en un formato de archivo habitual, donde las letras indican el método usado.
Cuantización y paletización
Las herramientas de Apple ofrecen dos formas de guardar los pesos con menos bits. La cuantización lineal proyecta el rango de los valores originales sobre un rango pequeño de enteros. La paletización, también llamada agrupación de pesos, agrupa los pesos en clústeres y guarda cada peso como un índice en una tabla de consulta corta.
Según las indicaciones de Apple, la paletización suele funcionar mejor en el Neural Engine, y la cuantización de 4 bits puede funcionar bien en modelos que se ejecutan en el chip gráfico de un Mac.
Preguntas que hace la gente.
¿Qué significa 4 bits en un modelo?
Que sus pesos se guardan con unos 4 bits cada uno, donde el original usaba 16 o 32. El archivo es mucho más pequeño, y el modelo, algo menos preciso.
¿La cuantización empeora un modelo?
Un poco. Cambia algo de precisión por un tamaño menor y menos uso de memoria. Según las indicaciones de Apple, 8 bits, y en algunos modelos 6 o 4, suponen solo una ligera pérdida de precisión.
¿Es mejor un modelo de 4 bits o uno de 8 bits?
El modelo de 8 bits se parece más al original, y el de 4 bits ocupa más o menos la mitad. Elige 8 bits si tienes memoria y 4 bits si no.
¿La cuantización hace más rápido un modelo?
Puede. Apple incluye la menor latencia entre las posibles ventajas, junto con un menor uso de memoria y menos consumo de energía.
¿Se puede cuantizar cualquier modelo?
La mayoría sí, con herramientas que convierten los pesos publicados. Lo bien que aguante varía de un modelo a otro.
¿Es lo mismo cuantización que compresión?
Es un tipo de compresión de modelos. Otros son la poda, que elimina pesos, y la paletización, que guarda los pesos como entradas de una tabla de consulta.