Transformers documentation

GGUF

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GGUF

GGUF es un formato de archivo único utilizado para almacenar modelos para inferencia con GGML, que contiene los metadatos del modelo y los tensores. Admite muchos tipos de datos cuantizados (consulte la tabla de tipos de cuantización), lo que ahorra una cantidad significativa de memoria.

Cargar modelos GGUF

Instala kernels; de lo contrario, la ruta empaquetada recurrirá a la dequantization completa al cargar.

pip install kernels

Los pesos permanecen empaquetados cuando está disponible el kernel del Hub ggml-org/ggml-quantization. El cargador usa MPS de forma predeterminada cuando ese kernel está presente y ejecuta las multiplicaciones de matrices directamente sobre los bloques empaquetados. Si el kernel no está disponible, el modelo se descuantiza en el momento de la carga.

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "unsloth/Qwen3.5-4B-GGUF"
filename = "Qwen3.5-4B-Q4_K_M.gguf"

model = AutoModelForCausalLM.from_pretrained(model_id, gguf_file=filename)
tokenizer = AutoTokenizer.from_pretrained(model_id, gguf_file=filename)

La misma carga funciona para Qwen3.5 MoE.

moe_model_id = "unsloth/Qwen3.5-35B-A3B-GGUF"
moe_filename = "Qwen3.5-35B-A3B-Q4_K_M.gguf"

moe_model = AutoModelForCausalLM.from_pretrained(moe_model_id, gguf_file=moe_filename)
moe_tokenizer = AutoTokenizer.from_pretrained(moe_model_id, gguf_file=moe_filename)

La ruta empaquetada admite actualmente Qwen3.5 y Qwen3.5 MoE. Las cargas empaquetadas usan float32 automáticamente porque es más rápido en MPS. Si se establece otro dtype, el cargador devuelve una advertencia. Las demás arquitecturas pasan por el cargador heredado.

Atención

En MPS, con los kernels instalados, ggml-attn es la atención predeterminada al cargar un archivo GGUF: el mismo kernel de flash-attention que llama.cpp utiliza para decode y prefill. Si no se puede obtener el kernel, el modelo conserva su implementación de atención. Pasar attn_implementation (por ejemplo, "sdpa") siempre tiene prioridad.

También puede pasarlo explícitamente:

model = AutoModelForCausalLM.from_pretrained(
    model_id, gguf_file=filename, attn_implementation="ggml-org/ggml-attn"
)

Descomprimir

Dequantizar descomprime cada peso en el momento de la carga y devuelve un modelo denso estándar. Es la opción de respaldo cuando la ruta rápida y comprimida no es aplicable. También se puede solicitar explícitamente mediante GgufConfig.

import torch

from transformers import AutoModelForCausalLM, GgufConfig

quantization_config = GgufConfig(dequantize=True)
model = AutoModelForCausalLM.from_pretrained(
    model_id, gguf_file=filename, quantization_config=quantization_config, dtype=torch.bfloat16
)

Obtienes un modelo denso regular en el dtype que pasaste.

Las arquitecturas distintas de Qwen3.5 y Qwen3.5 MoE pasan por el cargador heredado, que siempre realiza la descuantización.

El cargador heredado es compatible con Llama, Mistral, Qwen2, Qwen2Moe, Phi3, Bloom, Falcon, StableLM, GPT2, Starcoder2 y más.

Servir

transformers serve lista cada archivo .gguf de un repositorio como un modelo independiente. Un modelo GGUF se denomina <repo>:<file>.gguf, ya que un repositorio contiene varias cuantizaciones y el identificador debe indicar cuál se debe cargar. Las solicitudes lo nombran de la misma manera.

transformers serve unsloth/Qwen3.5-4B-GGUF:Qwen3.5-4B-Q4_K_M.gguf
Update on GitHub