Transformers documentation
Обзор
Обзор
Квантование хранит веса модели, а иногда и её активации, в меньшем числе бит, что снижает требования к памяти. Обычно модели загружаются в формате 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.
Ресурсы
Дальнейшие шаги
- Ознакомьтесь с разделом Концепции квантования, чтобы узнать, как работают схемы квантования, гранулярность и методы.
- Квантуйте KV-кэш с помощью квантованного кэша, чтобы сэкономить память при длительной генерации.
- Квантуйте модель при её экспорте с помощью Квантование экспорта.
- Добавьте новый метод с помощью Contribute a quantization method.