Transformers documentation
Resumen
Resumen
La cuantización almacena los pesos de un modelo, y a veces sus activaciones, en menos bits para que el modelo requiera menos memoria. Los modelos suelen cargarse en bf16, lo que ocupa 2 bytes por parámetro. Un modelo de 8B necesita aproximadamente 16GB para sus pesos en bf16, unos 8GB a 8 bits y unos 4–5GB a 4 bits. Usar menos bits implica cierta pérdida de precisión, y cada método de cuantización realiza un compromiso diferente entre memoria, velocidad y precisión.
Transformers integra más de 20 métodos de cuantización a través de from_pretrained(), por lo que se utiliza el mismo código de carga sin importar el método que elijas.
Dos formas de usar un modelo cuantizado
La forma en que se utiliza la cuantización depende de si el punto de control ya está cuantizado.
| Tienes | Lo que haces | Métodos |
|---|---|---|
| Un punto de control de precisión completa | Pase una configuración de cuantización a from_pretrained y los pesos se cuantizarán a medida que se cargan. | Cuantizar un modelo al cargarlo |
| Un punto de control que ya está cuantizado | Llama a from_pretrained sin una configuración de cuantización. Transformers lee el método desde el config.json del checkpoint o desde el archivo GGUF que especifiques. | Cargar un punto de control pre-cuantizado |
Algunos métodos, como AWQ, AutoRound, AQLM, compressed-tensors y GGUF, solo se pueden cargar desde un checkpoint. Primero cuantizas el modelo con la propia biblioteca del método y luego cargas el resultado en Transformers.
Cuantizar un modelo durante la carga
Crea la clase de configuración del método y pásala a quantization_config. El ejemplo siguiente carga un modelo de 8B en 4 bits con bitsandbytes.
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B-Instruct",
quantization_config=quantization_config,
device_map="auto",
)Cada método de este grupo tiene su propia clase de configuración, como TorchAoConfig o BitsAndBytesConfig. La mayoría no requiere un conjunto de datos de calibración. GPTQ es la excepción, ya que realiza la calibración sobre un conjunto de datos mientras se carga el modelo.
Cargar un punto de control pre-cuantizado
Un punto de control pre-cuantizado almacena un quantization_config en su config.json. Cuando from_pretrained lo encuentra, se selecciona automáticamente el cuantizador correspondiente.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"TheBloke/zephyr-7B-alpha-AWQ",
device_map="auto",
)
print(model.config.quantization_config.quant_method)Instale la biblioteca en la que depende el método antes de cargar el checkpoint. Cada página de método enumera qué instalar. Para cambiar las opciones de carga, como el backend de kernel que se ejecuta, pase una config del mismo tipo. Sus opciones se fusionan con las almacenadas en el checkpoint.
Puntos de control GGUF
Un checkpoint GGUF es un único archivo que contiene los pesos, la configuración y el tokenizador, y no tiene un config.json para que from_pretrained lo lea. Nombra el archivo con gguf_file.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"unsloth/Qwen3.5-4B-GGUF",
gguf_file="Qwen3.5-4B-Q4_K_M.gguf",
)La mayoría de los modelos GGUF se descuantizan a precisión completa al cargarlos, por lo que utilizan la misma cantidad de memoria que un modelo no cuantizado. Los pesos permanecen empaquetados solo en MPS con el paquete kernels instalado, para Qwen3.5 y Qwen3.5 MoE. Consulte GGUF para obtener más detalles.
Guardar un modelo cuantizado
Llama a save_pretrained() o push_to_hub() para guardar los pesos cuantizados y su quantization_config. No todos los métodos pueden guardar sus pesos cuantizados.
Elija un método
Elegir un método recomienda un punto de partida para objetivos comunes y compara cada método según el hardware, la anchura de bits, el ahorro, el ajuste fino y la compatibilidad con torch.compile. Utiliza el selector de cuantización para verificar si un modelo cabe en la memoria de tu hardware en cada precisión.
Otras herramientas
Estas herramientas cuantizan modelos fuera de Transformers.
- Optimum cuantiza modelos para hardware y runtimes específicos, como CPUs de Intel y ONNX Runtime.
- Los espacios de Hub permiten cuantizar un modelo y publicar el resultado en tu cuenta: bitsandbytes, GGUF y MLX.
Recursos
Próximos pasos
- Lee Conceptos de cuantización para saber cómo funcionan los esquemas de cuantización, la granularidad y las técnicas.
- Cuantiza la caché KV para ahorrar memoria durante generaciones largas con la quantized cache.
- Cuantiza un modelo al exportarlo con Exportaciones cuantizadas.
- Contribuya un nuevo método con Contribuir un método de cuantización.