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 — это формат одного файла, используемый для хранения моделей для инференса с помощью GGML, содержащий метаданные модели и тензоры. Он поддерживает множество квантованных типов данных (см. таблицу типов квантования), что позволяет существенно экономить память.

Загрузка моделей GGUF

Установите kernels, иначе при загрузке сжатый путь откатится к полной деквантизации.

pip install kernels

Веса остаются упакованными, если доступно ядро Hub ggml-org/ggml-quantization. Загрузчик по умолчанию использует MPS, когда это ядро присутствует, и выполняет матричные умножения непосредственно на упакованных блоках. Если ядро недоступно, модель деквантуется при загрузке.

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)

Такая же загрузка работает и для 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)

Сжатый путь загрузки в настоящее время поддерживает Qwen3.5 и Qwen3.5 MoE. Загрузка в сжатом формате автоматически использует float32, так как это быстрее на MPS. Если вы зададите другой dtype, загрузчик вернёт предупреждение. Другие архитектуры обрабатываются через устаревший загрузчик.

Внимание

На MPS при установленных ядрах ggml-attn является реализацией внимания по умолчанию при загрузке файла GGUF: это то же самое ядро flash-attention, которое llama.cpp использует для decode и prefill. Если ядро не удалось получить, модель сохраняет свою исходную реализацию внимания. Передача параметра attn_implementation (например, "sdpa") всегда имеет приоритет.

Вы также можете передать его явно:

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

Декуантизация

Dequantizing распаковывает каждый вес при загрузке и возвращает обычную плотную модель. Это запасной вариант, когда быстрый сжатый путь неприменим. Вы также можете явно запросить его с помощью 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
)

Вы получаете обычную плотную модель в dtype, который вы передали.

Архитектуры, отличные от Qwen3.5 и Qwen3.5 MoE, обрабатываются устаревшим загрузчиком, который всегда выполняет деквантование.

Устаревший загрузчик поддерживает Llama, Mistral, Qwen2, Qwen2Moe, Phi3, Bloom, Falcon, StableLM, GPT2, Starcoder2 и другие.

Развертывание

transformers serve отображает каждый файл .gguf в репозитории как отдельную модель. Имя модели GGUF имеет вид <repo>:<file>.gguf, поскольку в репозитории хранится несколько квантованных версий, и идентификатор должен указывать, какую именно загрузить. Запросы используют то же самое имя.

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