Cómo usar llama-quantize para modelos GGUF

Una introducción breve a qué hace llama-quantize, sus comandos básicos, opciones comunes y los compromisos entre tamaño, velocidad y calidad.

llama-quantize es la herramienta de cuantización de llama.cpp. Se usa para convertir modelos GGUF de alta precisión en versiones cuantizadas más pequeñas.

Su uso más común es convertir formatos como F32, BF16 o FP16 en versiones como Q4_K_M, Q5_K_M o Q8_0, que son más fáciles de ejecutar localmente. Después de la cuantización, los modelos suelen ser mucho más pequeños y a menudo más rápidos en inferencia, aunque se espera cierta pérdida de calidad.

Flujo básico

Un flujo típico consiste en preparar el modelo original, convertirlo a GGUF y luego ejecutar la cuantización.

1
2
3
4
5
6
7
8
# install Python dependencies
python3 -m pip install -r requirements.txt

# convert the model to ggml FP16 format
python3 convert_hf_to_gguf.py ./models/mymodel/

# quantize the model to 4-bits (using Q4_K_M method)
./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M

Después, puedes ejecutar el modelo cuantizado con llama-cli:

1
2
# start inference on a gguf model
./llama-cli -m ./models/mymodel/ggml-model-Q4_K_M.gguf -cnv -p "You are a helpful assistant"

Opciones comunes

  • --allow-requantize: permite volver a cuantizar un modelo ya cuantizado, algo que normalmente no es ideal para la calidad
  • --leave-output-tensor: deja la capa de salida sin cuantizar; aumenta el tamaño, pero a veces ayuda a la calidad
  • --pure: desactiva la cuantización mixta y usa un tipo de cuantización más uniforme
  • --imatrix: usa una matriz de importancia para mejorar la calidad de cuantización
  • --keep-split: conserva el diseño original por fragmentos en lugar de producir un único archivo combinado

Si solo quieres un punto de partida práctico, esto suele bastar:

1
./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M

Cómo elegir una cuantización

Puedes pensar en los niveles de cuantización como un compromiso entre tamaño, velocidad y calidad:

  • Q8_0: más grande, pero normalmente más seguro para la calidad
  • Q6_K / Q5_K_M: opciones equilibradas habituales
  • Q4_K_M: valor predeterminado muy común, con buen equilibrio entre tamaño y calidad
  • Q3 / Q2: útiles cuando el hardware es muy limitado, pero la pérdida de calidad es más visible

El objetivo práctico normalmente no es elegir la cuantización más grande que quepa, sino la que se ejecute de forma fiable en tu hardware manteniendo una calidad aceptable.

Conclusión práctica

  • empieza con Q4_K_M o Q5_K_M
  • sube a Q6_K o Q8_0 si la calidad importa más
  • baja a Q3 o Q2 si la memoria está ajustada
  • compara versiones con el mismo conjunto de prompts

En resumen, llama-quantize es útil porque hace que los modelos GGUF sean más fáciles de ejecutar en hardware local, no solo porque reduce el tamaño de los archivos.

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy