Transformers documentation

Обзор

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
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