Transformers documentation

Обзор

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Обзор

Квантование хранит веса модели, а иногда и её активации, в меньшем числе бит, что снижает требования к памяти. Обычно модели загружаются в формате bf16, где на каждый параметр приходится 2 байта. Модели с 8 млрд параметров требует около 16 ГБ для хранения весов в bf16, около 8 ГБ при 8 битах и около 4–5 ГБ при 4 битах. Уменьшение разрядности приводит к потере точности, и каждый метод квантования предлагает свой баланс между потреблением памяти, скоростью и точностью.

Transformers поддерживает более 20 методов квантования через from_pretrained(), поэтому код загрузки остаётся одинаковым независимо от выбранного метода.

Два способа использования квантованной модели

Способ использования квантования зависит от того, является ли ваша контрольная точка уже квантованной.

У вас естьЧто вы делаетеМетоды
Чекпоинт с полной точностьюПередайте конфигурацию квантования в from_pretrained, и веса будут квантованы в процессе загрузки.Квантование модели при загрузке
Чекпоинт, который уже был квантованВызовите from_pretrained без конфигурации квантования. Transformers считывает метод из файла config.json в контрольной точке или из указанного вами файла GGUF.Загрузка предварительно квантованной контрольной точки

Некоторые методы, такие как AWQ, AutoRound, AQLM, compressed-tensors и GGUF, можно загрузить только из контрольной точки. Сначала вы квантуете модель с помощью собственной библиотеки метода, а затем загружаете результат в Transformers.

Квантование модели при загрузке

Создайте класс конфигурации метода и передайте его в quantization_config. В примере ниже модель 8B загружается в 4 бита с помощью 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",
)

Каждый метод в этой группе имеет собственный класс конфигурации, например TorchAoConfig или BitsAndBytesConfig. Большинству из них не требуется набор данных для калибровки. Исключение составляет GPTQ, так как он выполняет калибровку на наборе данных в процессе загрузки модели.

Загрузка предварительно квантованной контрольной точки

Предварительно квантованный чекпоинт содержит quantization_config в своём файле config.json. Когда from_pretrained находит его, соответствующий квантизатор выбирается автоматически.

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/zephyr-7B-alpha-AWQ",
    device_map="auto",
)
print(model.config.quantization_config.quant_method)

Установите библиотеку, от которой зависит метод, до загрузки контрольной точки. На каждой странице метода указано, что необходимо установить. Чтобы изменить параметры загрузки, например, какой ядро-бэкенд будет использоваться, передайте конфигурацию того же типа. Её параметры будут объединены с теми, что сохранены в контрольной точке.

GGUF-чекпоинты

GGUF-чекпоинт — это единый файл, содержащий веса, конфигурацию и токенизатор, и в нём нет файла config.json, который мог бы прочитать from_pretrained. Укажите имя файла в параметре gguf_file.

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "unsloth/Qwen3.5-4B-GGUF",
    gguf_file="Qwen3.5-4B-Q4_K_M.gguf",
)

Большинство моделей в формате GGUF при загрузке деквантуются до полной точности, поэтому занимают столько же памяти, сколько и неквантованная модель. Веса остаются упакованными только на MPS при установленном пакете kernels, и только для Qwen3.5 и Qwen3.5 MoE. Подробности — в разделе GGUF.

Сохранение квантованной модели

Вызовите save_pretrained() или push_to_hub(), чтобы сохранить квантованные веса и их quantization_config. Не каждый метод позволяет сохранить квантованные веса.

Выберите метод

Выбор метода предлагает отправную точку для типичных задач и сравнивает все методы по требованиям к оборудованию, разрядности, экономии памяти, возможности дообучения и поддержке torch.compile. Используйте подборщик квантования, чтобы проверить, помещается ли модель в память вашего оборудования при каждой точности.

Другие инструменты

Эти инструменты выполняют квантование моделей вне Transformers.

  • Optimum выполняет квантование моделей для конкретного оборудования и сред выполнения, таких как процессоры Intel и ONNX Runtime.
  • Hub Spaces квантуют модель и выгружают результат в ваш аккаунт: bitsandbytes, GGUF и MLX.

Ресурсы

Дальнейшие шаги

Update on GitHub