Transformers documentation
Квантование
Квантование
Методы квантования снижают затраты на память и вычисления, представляя веса и активации с помощью типов данных с пониженной точностью, например 8-битных целых чисел (int8). Это позволяет загружать более крупные модели, которые в обычных условиях не помещаются в память, а также ускорять инференс. Transformers поддерживает алгоритмы квантования AWQ и GPTQ, а также 8-битное и 4-битное квантование с помощью bitsandbytes.
Техники квантования, не поддерживаемые в Transformers, можно добавить с помощью класса HfQuantizer.
Узнайте, как квантовать модели, в руководстве Квантование.
QuantoConfig
класс transformers.QuantoConfig
< source >( weights = 'int8'activations = Nonemodules_to_not_convert: list | None = None**kwargs )
Параметры
- weights (
str, необязательный, по умолчанию"int8") — Целевой тип данных для весов после квантования. Поддерживаемые значения: (“float8”,“int8”,“int4”,“int2”) - activations (
str, необязательный) — Целевой dtype для активаций после квантования. Поддерживаемые значения: (None, “int8”, “float8”) - modules_to_not_convert (
list, необязательный, по умолчаниюNone) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, в которых некоторые модули необходимо оставить в исходной точности (например, энкодер Whisper, энкодер Llava, слои gate в Mixtral).
Это обёртка, содержащая все возможные атрибуты и возможности, с которыми можно работать с моделью, загруженной с помощью quanto.
Проверка безопасности: аргументы корректны
AqlmConfig
класс transformers.AqlmConfig
< source >( in_group_size: int = 8out_group_size: int = 1num_codebooks: int = 1nbits_per_codebook: int = 16linear_weights_not_to_quantize: list[str] | None = None**kwargs )
Параметры
- in_group_size (
int, необязательный, по умолчанию 8) — Размер группы вдоль входного измерения. - out_group_size (
int, необязательный, по умолчанию 1) — Размер группы вдоль выходного измерения. Рекомендуется всегда использовать значение 1. - num_codebooks (
int, необязательный, по умолчанию 1) — Количество кодовых книг для процедуры аддитивного квантования. - nbits_per_codebook (
int, необязательный, по умолчанию 16) — Число бит, кодирующих один вектор кодовой книги. Размер кодовой книги равен 2**nbits_per_codebook. - linear_weights_not_to_quantize (
Optional[list[str]], необязательный) — Список полных путей параметров весовnn.Linear, которые не должны квантоваться. - kwargs (
dict[str, Any], необязательный) — Дополнительные параметры для инициализации объекта конфигурации.
Это обёртка для параметров aqlm.
Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.
VptqConfig
класс transformers.VptqConfig
< source >( enable_proxy_error: bool = Falseconfig_for_layers: dict = {}shared_layer_config: dict = {}modules_to_not_convert: list | None = None**kwargs )
Параметры
- enable_proxy_error (
bool, необязательный, по умолчаниюFalse) — вычисляет ошибку прокси для каждого слоя - config_for_layers (
Dict, необязательный, по умолчанию{}) — параметры квантования для каждого слоя - shared_layer_config (
Dict, необязательный, по умолчанию{}) — общие параметры квантования для слоёв - modules_to_not_convert (
list, необязательный, по умолчаниюNone) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, в которых некоторые модули необходимо оставить в исходной точности (например, энкодер Whisper, энкодер Llava, слои gate в Mixtral). - kwargs (
dict[str, Any], необязательный) — Дополнительные параметры для инициализации объекта конфигурации.
Это обёртка для параметров vptq.
Проверка безопасности: аргументы корректны
AwqConfig
класс transformers.AwqConfig
< source >( bits: int = 4group_size: int = 128zero_point: bool = Truebackend: AwqBackend = <AwqBackend.AUTO: 'auto'>modules_to_not_convert: list | None = None**kwargs )
Параметры
- bits (
int, необязательный, по умолчанию 4) — Количество бит, до которого выполняется квантование. - group_size (
int, необязательный, по умолчанию 128) — Размер группы, используемый для квантования. Рекомендуемое значение — 128, а значение -1 означает квантование по столбцам. - zero_point (
bool, необязательный, по умолчаниюTrue) — Использовать ли квантование с нулевой точкой. - backend (
AwqBackend, optional, по умолчаниюAwqBackend.AUTO) — Бэкенд квантования. - modules_to_not_convert (
list, необязательный, по умолчаниюNone) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, которым явно требуется сохранить некоторые модули в исходной точности (например, энкодер Whisper, энкодер Llava, слои gate в Mixtral). Обратите внимание, что квантовать напрямую с помощью transformers нельзя; для квантования моделей HF обратитесь к документацииAutoAWQ.
Это обёртка, содержащая все возможные атрибуты и функции, с которыми можно работать с моделью, загруженной с использованием квантования awq библиотеки auto-awq на основе бэкенда auto_awq.
EetqConfig
класс transformers.EetqConfig
< source >( weights: str = 'int8'modules_to_not_convert: list | None = None**kwargs )
Параметры
- weights (
str, необязательный, по умолчанию"int8") — Целевой тип данных для весов. Поддерживается только значение «int8» - modules_to_not_convert (
list, необязательный, по умолчаниюNone) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, которые явно требуют, чтобы некоторые модули оставались в исходной точности.
Это обёртка, содержащая все возможные атрибуты и возможности, с которыми можно работать с моделью, загруженной с помощью eetq.
Проверка безопасности: аргументы корректны
GPTQConfig
класс transformers.GPTQConfig
< source >( bits: inttokenizer: Any = Nonedataset: list[str] | str | None = Nonegroup_size: int = 128damp_percent: float = 0.1desc_act: bool = Falseact_group_aware: bool = Truesym: bool = Truetrue_sequential: bool = Trueformat: str = 'gptq'meta: dict[str, typing.Any] | None = Nonebackend: str | None = Nonemodel_seqlen: int | None = Noneblock_name_to_quantize: str | None = Nonemodule_name_preceding_first_block: list[str] | None = Nonebatch_size: int = 1pad_token_id: int | None = Nonemax_input_length: int | None = Nonecache_block_outputs: bool = Truemodules_in_block_to_quantize: list[list[str]] | None = None**kwargs )
Параметры
- bits (
int) — Количество бит для квантования; поддерживаются значения (2, 3, 4, 8). - tokenizer (
strилиPreTrainedTokenizerBase, необязательный) — Токенизатор, используемый для обработки набора данных. Можно передать: объект пользовательского токенизатора; строку — идентификатор модели предопределённого токенизатора, размещённого в репозитории моделей на huggingface.co; путь к каталогу, содержащему файлы словаря, необходимые для токенизатора, например, сохранённые с помощью метода save_pretrained(), например ./my_model_directory/.- Объект пользовательского токенизатора.
- Строка, model id предопределенного токенизатора, размещенного в репозитории модели на huggingface.co.
- Путь к каталогу, содержащему файлы словаря, необходимые для токенизатора, например, сохранённые с помощью метода save_pretrained(), например
./my_model_directory/.
- dataset (
Union[list[str]], необязательный) — Набор данных, используемый для квантования. Вы можете указать собственный набор данных в виде списка строк или использовать исходные наборы данных, применявшиеся в статье GPTQ [‘wikitext2’,‘c4’,‘c4-new’] - group_size (
int, необязательный, по умолчанию 128) — Размер группы, используемый для квантования. Рекомендуемое значение — 128, а значение -1 означает квантование по столбцам. - damp_percent (
float, необязательный, по умолчанию 0.1) — Доля среднего значения диагонали гессиана, используемая для демпфирования. Рекомендуемое значение — 0.1. - desc_act (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли квантовать столбцы в порядке убывания размера активации. Установка значения False может значительно ускорить инференс, однако perplexity может немного ухудшиться. Также известно как act-order. - act_group_aware (
bool, необязательный, по умолчаниюTrue) — Использовать GAR (group aware activation order) при квантовании. Оказывает измеримое положительное влияние на качество квантования. Применимо только приdesc_act = False. Принудительно устанавливается вFalse, еслиdesc_act = True. - sym (
bool, необязательный, по умолчаниюTrue) — Использовать ли симметричную квантизацию. - true_sequential (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли выполнять последовательную квантизацию даже внутри одного блока Transformer. Вместо квантизации всего блока целиком выполняется послойная квантизация. В результате каждый слой квантуется с использованием входных данных, прошедших через ранее квантованные слои. - format (
str, необязательный, по умолчанию"gptq") — Формат весов GPTQ.gptq(v1) поддерживается gptqmodel.gptq_v2поддерживается только gptqmodel. - meta (
dict[str, any], необязательный) — Свойства, такие как tooling:version, которые не влияют непосредственно на квантование или квантованный инференс, хранятся в meta. Например,meta.quantizer: [“optimum:version”, “gptqmodel:version”] - backend (
str, необязательный) — Определяет, какое ядро использовать. Допустимые значения для gptqmodel:auto,auto_trainableи другие. См. backends gptqmodel: https://github.com/ModelCloud/GPTQModel/blob/main/gptqmodel/utils/backend.py - model_seqlen (
int, необязательный) — Максимальная длина последовательности, которую может обрабатывать модель. - block_name_to_quantize (
str, необязательный) — Имя блока transformers, подлежащего квантованию. Если значение равно None, имя блока будет определено автоматически на основе распространённых шаблонов (например, model.layers). - module_name_preceding_first_block (
list[str], необязательный) — Слои, расположенные перед первым блоком Transformer. - batch_size (
int, необязательный, по умолчанию 1) — Размер батча, используемый при обработке набора данных - pad_token_id (
int, необязательный) — Идентификатор токена отбивки. Требуется для подготовки набора данных, когдаbatch_size> 1. - max_input_length (
int, необязательный) — Максимальная длина входных данных. Это значение требуется для инициализации буфера, размер которого зависит от ожидаемой максимальной длины входа. Параметр специфичен для бэкенда exllama с act-order. - cache_block_outputs (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли кэшировать выходные данные блока для повторного использования в качестве входных данных для следующего блока. - modules_in_block_to_quantize (
list[list[str]], необязательный) — Список списков с именами модулей, которые необходимо квантовать в указанном блоке. Этот аргумент полезен для исключения определенных линейных модулей из квантования. Блок для квантования можно указать, задавblock_name_to_quantize. Мы будем квантовать каждый список последовательно. Если аргумент не задан, будут квантованы все линейные слои. Пример:modules_in_block_to_quantize =[["self_attn.k_proj", "self_attn.v_proj", "self_attn.q_proj"], ["self_attn.o_proj"]]. В этом примере сначала будут квантованы слои q, k и v одновременно, так как они независимы. Затем будет квантован слойself_attn.o_projпри уже квантованных слоях q, k и v. Таким образом, мы получим более точные результаты, поскольку это отражает реальный вход, который получитself_attn.o_projпосле квантования модели.
Это обёртка, содержащая все возможные атрибуты и возможности, с которыми можно работать с моделью, загруженной с помощью API optimum для квантования GPTQ на основе бэкенда gptqmodel.
Получить совместимый класс с конфигурационным словарем optimum gptq
Проверка безопасности: аргументы корректны
Получить совместимый dict для конфигурации optimum gptq
BitsAndBytesConfig
класс transformers.BitsAndBytesConfig
< source >( load_in_8bit = Falseload_in_4bit = Falsellm_int8_threshold = 6.0llm_int8_skip_modules = Nonellm_int8_enable_fp32_cpu_offload = Falsellm_int8_has_fp16_weight = Falsebnb_4bit_compute_dtype = Nonebnb_4bit_quant_type = 'fp4'bnb_4bit_use_double_quant = Falsebnb_4bit_quant_storage = None**kwargs )
Параметры
- load_in_8bit (
bool, необязательный, по умолчаниюFalse) — Этот флаг используется для включения 8-битного квантования с помощью LLM.int8(). - load_in_4bit (
bool, необязательный, по умолчаниюFalse) — Этот флаг используется для включения 4-битного квантования путём замены слоёв Linear на слои FP4/NF4 изbitsandbytes. - llm_int8_threshold (
float, необязательный, по умолчанию 6.0) — Этот параметр соответствует порогу для обнаружения выбросов, описанному в статьеLLM.int8() : 8-bit Matrix Multiplication for Transformers at Scale: https://huggingface.co/papers/2208.07339 Любое значение скрытых состояний, превышающее этот порог, считается выбросом, и операции с такими значениями выполняются в fp16. Как правило, значения распределены нормально, то есть большинство из них находится в диапазоне [-3.5, 3.5], но в больших моделях встречаются некоторые систематические выбросы, распределение которых сильно отличается. Эти выбросы часто находятся в интервале [-60, -6] или [6, 60]. Int8-квантование хорошо работает для значений порядка ~5, но за пределами этого диапазона возникает значительное снижение производительности. Хорошим порогом по умолчанию является 6, однако для более нестабильных моделей (маленькие модели, дообучение) может потребоваться более низкий порог. - llm_int8_skip_modules (
list[str], необязательный) — Явный список модулей, которые не следует конвертировать в 8 бит. Это полезно для моделей, таких как Jukebox, у которых несколько головок расположены в разных местах и не обязательно на последней позиции. Например, для моделейCausalLMпоследняяlm_headсохраняется в исходномdtype. - llm_int8_enable_fp32_cpu_offload (
bool, необязательный, по умолчаниюFalse) — Этот флаг предназначен для продвинутых сценариев использования и пользователей, знакомых с данной функцией. Если вы хотите разделить модель на разные части и выполнять вычисления для одних частей в формате int8 на GPU, а для других — в формате fp32 на CPU, вы можете использовать этот флаг. Это полезно для выгрузки (offloading) больших моделей, таких какgoogle/flan-t5-xxl. Обратите внимание, что операции int8 не будут выполняться на CPU. - llm_int8_has_fp16_weight (
bool, необязательный, по умолчаниюFalse) — Этот флаг запускает LLM.int8() с основными весами 16-битного формата. Это полезно для дообучения, так как веса не нужно конвертировать туда и обратно для обратного прохода. - bnb_4bit_compute_dtype (
torch.dtypeили str, необязательный, по умолчаниюtorch.float32) — Определяет вычислительный тип, который может отличаться от типа входных данных. Например, входные данные могут быть в формате fp32, но для ускорения вычислений можно использовать bf16. - bnb_4bit_quant_type (
str, необязательный, по умолчанию"fp4") — Определяет тип данных квантования в слоях bnb.nn.Linear4Bit. Доступны типы данных FP4 и NF4, которые указываются значениямиfp4илиnf4. - bnb_4bit_use_double_quant (
bool, необязательный, по умолчаниюFalse) — Этот флаг используется для вложенной квантизации, при которой константы квантизации из первого этапа квантизации квантуются повторно. - bnb_4bit_quant_storage (
torch.dtypeили str, необязательный, по умолчаниюtorch.uint8) — Определяет тип хранилища для упаковки квантованных 4-битных параметров. - kwargs (
dict[str, Any], необязательный) — Дополнительные параметры для инициализации объекта конфигурации.
Это обёртка, содержащая все возможные атрибуты и возможности, доступные для работы с моделью, загруженной с помощью bitsandbytes.
В настоящее время поддерживаются только квантование LLM.int8(), FP4 и NF4. Если в bitsandbytes будут добавлены новые методы,
то в этот класс будут добавлены соответствующие аргументы.
Возвращает True, если модель можно квантовать, иначе False.
Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.
Этот метод возвращает метод квантования, использованный для модели. Если модель не поддерживает квантование, возвращается None.
to_diff_dict
< source >( ) → dict[str, Any]
Возвращает
dict[str, Any]
Словарь всех атрибутов, из которых состоит этот экземпляр конфигурации,
Удаляет все атрибуты из config, соответствующие атрибутам конфигурации по умолчанию, для лучшей читаемости и сериализует результат в словарь Python.
HfQuantizer
класс transformers.quantizers.HfQuantizer
< source >( quantization_config: QuantizationConfigMixin**kwargs )
Абстрактный класс квантизатора HuggingFace. На данный момент поддерживает квантизацию моделей HF transformers для вывода и/или квантизации. Этот класс используется только в transformers.PreTrainedModel.from_pretrained и пока не может быть легко использован вне контекста этого метода.
Атрибуты
quantization_config (transformers.utils.quantization_config.QuantizationConfigMixin):
Конфигурация квантования, определяющая параметры квантования модели, которую вы хотите квантовать.
requires_calibration (bool):
Требуется ли методу квантования калибровка модели перед её использованием.
при необходимости дополнительного объема памяти для квантования отрегулируйте аргумент max_memory для infer_auto_device_map()
Возможно, потребуется деквантовать модель, чтобы получить исходную модель, с некоторой потерей точности / производительности. Обратите внимание, что не все схемы квантования поддерживают эту операцию.
Классы Op, загружающие сериализованные тензоры, например {"deserialize": Mxfp4Deserialize, "dequantize": Mxfp4Dequantize}.
Десериализация формирует параметры одного модуля, поэтому выполняется только в общих конвертерах. Декуантизация
также выполняется до операций конвертеров модели, например, перед объединением по экспертам.
Это происходит на этапе материализации, когда тензор передаётся с диска на устройство. dtype — тип данных, в который приводится тензор param из предварительно квантованной контрольной точки.
Если этот параметр не квантован (тип float), используется входной dtype, полученный из инициализированного nn.Module.
Если метод квантования имеет Deserializer или Dequantizer (функцию загрузки), мы возвращаем None, чтобы обработка выполнялась ими.
Получение state dict и метаданных. Полезно, когда необходимо немного изменить state dict из-за квантования
Возвращает загрузку, которую необходимо выполнить для любого параметра, не соответствующего конвертерам модели
Проверьте, требуется ли квантование для данного параметра.
postprocess_model
< source >( model: PreTrainedModel**kwargs )
Выполните постобработку модели после загрузки весов.
Убедитесь, что вы переопределяете абстрактный метод _process_model_after_weight_loading.
preprocess_model
< source >( model: PreTrainedModeldtype = None**kwargs )
Установка атрибутов модели и/или преобразование модели до загрузки весов. На этом этапе модель должна быть инициализирована на meta-устройстве, что позволяет свободно манипулировать её структурой для замены модулей на месте. Не забудьте переопределить абстрактный метод _process_model_before_weight_loading.
Удалите конфигурацию квантования из модели.
Просматривает запрошенное значение attn_implementation до построения модели, чтобы квантизатор мог задать его по умолчанию.
update_device_map
< source >( device_map: dict[str, typing.Any] | None )
Переопределите этот метод, если вы хотите передать новое устройство map, чтобы переопределить существующее. Например, для bitsandbytes, поскольку accelerate является обязательным требованием, если device_map не передан, device_map устанавливается в `“auto”“
update_dtype
< source >( dtype: torch.dtype )
Некоторые методы квантования требуют явного задания dtype модели целевому типу. Если вы хотите убедиться, что это поведение сохраняется, вам нужно переопределить этот метод
Обновляет model.tp_plan или model.ep_plan (полные планы, объединённые из конфигурации и всех подконфигураций), чтобы учесть пользовательские ключи квантизатора, такие как ‘inv_scale’
Позволяет конвертерам модели (из маппинга конвертации) загружать сериализованные имена. Параметры модели определяют, например, слияние experts.*.gate_proj.weight в experts.gate_up_proj:
experts.gate_up_proj_scale_inv— это параметр: при копировании в него объединяютсяexperts.*.gate_proj.weight_scale_inv- в противном случае конвертер также собирает
experts.*.gate_proj.weight_scale_inv, и операция dequantize выполняется первой
Этот метод используется для проверки возможных конфликтов с аргументами, передаваемыми в from_pretrained. Его необходимо определить для всех будущих квантизаторов, интегрированных с transformers. Если явная проверка не требуется, просто ничего не возвращайте.
HiggsConfig
класс transformers.HiggsConfig
< source >( bits: int = 4p: int = 2modules_to_not_convert: list[str] | None = Nonehadamard_size: int = 512group_size: int = 256tune_metadata: dict[str, typing.Any] | None = None**kwargs )
Параметры
- bits (int, необязательный, по умолчанию 4) — Количество бит, используемых для квантования. Допустимые значения: 2, 3 или 4. По умолчанию — 4.
- p (int, необязательный, по умолчанию 2) — Размерность квантовочной сетки. Поддерживаются значения 1 и 2. На практике значение 2 всегда лучше. По умолчанию установлено значение 2.
- modules_to_not_convert (
list, необязательный, по умолчанию [“lm_head”]) — Список линейных слоёв, которые не следует квантовать. - hadamard_size (int, необязательный, по умолчанию 512) — Размер преобразования Хадамарда для метода HIGGS. По умолчанию 512. Входное измерение матриц дополняется до этого значения. Уменьшение этого значения ниже 512 снизит качество квантования.
- group_size (int, необязательный, по умолчанию 256) — Размер группы для метода HIGGS. Может принимать значения 64, 128 или 256. Уменьшение этого параметра практически не влияет на производительность. По умолчанию установлено значение 256. Должно быть делителем hadamard_size.
- tune_metadata (‘dict’, необязательный, по умолчанию {}) — Метаданные на уровне модулей (формы блоков gemm, метаданные GPU и т. д.) для сохранения результатов настройки ядра. По умолчанию — пустой словарь. Устанавливается автоматически в процессе настройки.
HiggsConfig — это класс конфигурации для квантования с использованием метода HIGGS.
Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.
HqqConfig
класс transformers.HqqConfig
< source >( nbits: int = 4group_size: int = 64view_as_float: bool = Falseaxis: int | None = Nonedynamic_config: dict | None = Noneskip_modules: list = ['lm_head']**kwargs )
Параметры
- nbits (
int, необязательный, по умолчанию 4) — Количество бит. Поддерживаемые значения: (8, 4, 3, 2, 1). - group_size (
int, необязательный, по умолчанию 64) — Значение размера группы. Допустимы любые значения, кратные weight.shape[axis]). - view_as_float (
bool, необязательный, по умолчаниюFalse) — Если установлено вTrue, интерпретирует квантованный вес как float (используется в распределённом обучении). - axis (
Optional[int], необязательный) — Ось, вдоль которой выполняется группировка. Допустимые значения: 0 или 1. - dynamic_config (dict, необязательный) — Параметры для динамической конфигурации. Ключ — это имя слоя, а значение — конфигурация квантования. Если задано, каждый слой, указанный по его идентификатору, будет использовать свою собственную конфигурацию квантования.
- skip_modules (
list[str], необязательный, по умолчанию['lm_head']) — Список слоевnn.Linear, которые нужно пропустить. - kwargs (
dict[str, Any], необязательный) — Дополнительные параметры для инициализации объекта конфигурации.
Это обёртка над BaseQuantizeConfig из hqq.
Override from_dict, used in AutoQuantizationConfig.from_dict in quantizers/auto.py
Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.
to_diff_dict
< source >( ) → dict[str, Any]
Возвращает
dict[str, Any]
Словарь всех атрибутов, из которых состоит этот экземпляр конфигурации,
Удаляет все атрибуты из config, соответствующие атрибутам конфигурации по умолчанию, для лучшей читаемости и сериализует результат в словарь Python.
MetalConfig
класс transformers.MetalConfig
< source >( bits: int = 4group_size: int = 64modules_to_not_convert: list | None = Nonedequantize: bool = False**kwargs )
Класс конфигурации для Metal-аффинного квантования, ориентированного на устройства Apple Silicon (MPS).
Этот метод квантования использует Metal-ядра mlx-quantization-metal-kernels из Hugging Face Hub для выполнения аффинного квантования (масштабы + qbiases) с настраиваемой разрядностью и размером группы.
Квантованные веса упаковываются в тензоры uint32, а прямой проход использует слиянные Metal-ядра для деквантования и матричного умножения.
Mxfp4Config
класс transformers.Mxfp4Config
< source >( modules_to_not_convert: list | None = Nonedequantize: bool = False**kwargs )
Параметры
- modules_to_not_convert (
list, необязательный, по умолчаниюNone) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, которые явно требуют, чтобы некоторые модули оставались в исходной точности. - dequantize (
bool, необязательный, по умолчаниюFalse) — Следует ли деквантовать модель до точности bf16
Это обёртка, описывающая все возможные атрибуты и возможности, доступные для работы с моделью, загруженной с использованием квантования mxfp4.
NVFP4Config
класс transformers.NVFP4Config
< source >( modules_to_not_convert: list[str] | None = None**kwargs )
Конфигурация для квантования весов в формате NVFP4 на лету.
FbgemmFp8Config
класс transformers.FbgemmFp8Config
< source >( activation_scale_ub: float = 1200.0modules_to_not_convert: list | None = None**kwargs )
Параметры
- activation_scale_ub (
float, необязательный, по умолчанию 1200.0) — Верхняя граница масштаба активаций. Используется при квантовании входных активаций. - modules_to_not_convert (
list, необязательный, по умолчаниюNone) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, которые явно требуют, чтобы некоторые модули оставались в исходной точности.
Это обёртка, содержащая все возможные атрибуты и возможности, доступные для работы с моделью, загруженной с использованием квантования fbgemm fp8.
CompressedTensorsConfig
класс transformers.CompressedTensorsConfig
< source >( config_groups: dict[str, typing.Union[ForwardRef('QuantizationScheme'), list[str]]] | None = Noneformat: str = 'dense'quantization_status: QuantizationStatus = 'initialized'kv_cache_scheme: typing.Optional[ForwardRef('QuantizationArgs')] = Noneglobal_compression_ratio: float | None = Noneignore: list[str] | None = Nonequant_method: str = 'compressed-tensors'run_compressed: bool | None = Nonedequantize: bool = Falseuse_optimized_inference: bool = False**kwargs )
Параметры
- config_groups (
typing.dict[str, typing.Union[ForwardRef('QuantizationScheme'), typing.list[str]]], необязательный) — словарь, сопоставляющий имя группы с определением схемы квантования - format (
str, необязательный, по умолчанию"dense") — формат, в котором хранятся веса, напримерdense,float-quantizedилиpack-quantized - quantization_status (
QuantizationStatus, необязательный, по умолчанию"initialized") — статус модели в жизненном цикле квантования, например ‘initialized’, ‘calibration’, ‘frozen’ - kv_cache_scheme (
typing.Union[QuantizationArgs, NoneType], необязательный) — задаёт квантование kv cache. Если значение равно None, kv cache не квантуется. - global_compression_ratio (
typing.Union[float, NoneType], необязательный) — доля сжатия модели в процентах, число с плавающей точкой от 0 до 1 - ignore (
typing.Union[typing.list[str], NoneType], необязательный) — имена или типы слоёв, которые не следует квантовать; поддерживаются регулярные выражения с префиксом ‘re:’ - quant_method (
str, необязательный, по умолчанию"compressed-tensors") — не переопределяйте, должно быть compressed-tensors - run_compressed (
bool, необязательный) — устаревший параметр, используйтеdequantize. Единственный эффект — установкаdequantizeв противоположное значение:run_compressed=Falseозначаетdequantize=True. - dequantize (
bool, необязательный, по умолчаниюFalse) — если установлено значениеTrue, квантованные веса деквантуются в исходный тип данных модели (например, BF16) при загрузке, что требуется для дообучения или сохранения модели в её исходном типе данных. Если установлено значениеFalse, веса остаются в сжатом виде, а compressed-tensors распаковывает их при первом проходе. - use_optimized_inference (
bool, необязательный, по умолчаниюFalse) — если установлено значениеTrue, слои, для которых у нас есть ядра, сохраняют свои квантованные веса и выполняются через эти ядра (на данный момент W8A8 FP8, на CUDA SM89+, XPU или MPS с torch >= 2.15). Только для инференса и включается явно: без этого параметра модель проходит через стандартный путь compressed-tensors. Игнорируется, еслиdequantize=True.
Это обёртка, которая обрабатывает параметры конфигурации квантования compressed-tensors.
Это обёртка над compressed_tensors.QuantizationConfig
from_dict
< source >( config_dictreturn_unused_kwargs = False**kwargs ) → QuantizationConfigMixin
Параметры
- config_dict (
dict[str, Any]) — Словарь, который будет использоваться для создания объекта конфигурации. - return_unused_kwargs (
bool,необязательный, по умолчаниюFalse) — Определяет, следует ли возвращать список неиспользованных аргументов с ключами. Используется в методеfrom_pretrainedклассаPreTrainedModel. - kwargs (
dict[str, Any]) — Дополнительные параметры для инициализации объекта конфигурации.
Возвращает
QuantizationConfigMixin
Объект конфигурации, созданный из этих параметров.
Создаёт экземпляр CompressedTensorsConfig из Python-словаря параметров. При необходимости распаковывает аргументы из вложенного quantization_config
Конфигурация квантования, которую нужно добавить в config.json
Сериализует этот экземпляр в словарь Python. Возвращает: dict[str, Any]: словарь всех атрибутов, составляющих этот экземпляр конфигурации.
to_diff_dict
< source >( ) → dict[str, Any]
Возвращает
dict[str, Any]
Словарь всех атрибутов, из которых состоит этот экземпляр конфигурации,
Удаляет все атрибуты из config, соответствующие атрибутам конфигурации по умолчанию, для лучшей читаемости и сериализует результат в словарь Python.
TorchAoConfig
класс transformers.TorchAoConfig
< source >( quant_type: AOBaseConfigmodules_to_not_convert: list | None = Noneinclude_input_output_embeddings: bool = Falseuntie_embedding_weights: bool = False**kwargs )
Параметры
- quant_type (
AOBaseConfig) — экземплярAOBaseConfigиз torchao, задающий тип квантования, напримерInt4WeightOnlyConfig(group_size=32),Int8WeightOnlyConfig(),Int8DynamicActivationInt8WeightConfig(),Float8WeightOnlyConfig()и т. д. - modules_to_not_convert (
list, необязательный, по умолчаниюNone) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, которые явно требуют, чтобы некоторые модули оставались в исходной точности. - include_input_output_embeddings (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли включать эмбеддинги в квантование. Если этот флаг установлен, входной эмбеддинг также будет удалён из списка module_not_to_convert. - untie_embedding_weights (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли развязать веса при квантовании входных весов эмбеддингов, которые связаны с другими весами.
Класс конфигурации для методов квантования/разреженности torchao.
Пример:
from torchao.quantization import Int4WeightOnlyConfig
quantization_config = TorchAoConfig(Int4WeightOnlyConfig(group_size=32))
model = AutoModelForCausalLM.from_pretrained(
model_id, device_map="cuda", torch_dtype=torch.bfloat16, quantization_config=quantization_config
)Создание конфигурации из словаря.
Возвращает конфигурацию квантования, которую необходимо применить.
Проверьте конфигурацию и установите значения по умолчанию.
Преобразовать конфигурацию в словарь.
BitNetQuantConfig
класс transformers.BitNetQuantConfig
< source >( modules_to_not_convert: list | None = Nonelinear_class: str = 'bitlinear'quantization_mode: str = 'offline'use_rms_norm: bool = Falserms_norm_eps: float | None = 1e-06**kwargs )
Параметры
- modules_to_not_convert (
Optional[List], необязательный) — Необязательно, предоставляет список полных путей параметров весовnn.Linear, которые не должны быть квантованы. По умолчанию — None. - linear_class (
str, необязательный, по умолчанию"bitlinear") — Тип линейного класса, который следует использовать. Допустимые значения:bitlinearилиautobitlinear. - quantization_mode (
str, необязательный, по умолчанию"offline") — Режим квантования. Допустимые значения:onlineилиoffline. В режимеonlineпараметры квантования весов вычисляются динамически на каждом проходе вперед (например, на основе текущих значений весов). Это позволяет адаптироваться к изменениям весов в процессе обучения (Quantization-Aware Training - QAT). В режимеofflineпараметры квантования вычисляются заранее до инференса. Затем эти параметры фиксируются и загружаются в квантованную модель. Как правило, это приводит к меньшим накладным расходам во время выполнения по сравнению с онлайн-квантованием. - use_rms_norm (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли применять RMSNorm к активациям перед квантованием. Это соответствует подходу из оригинальной статьи BitNet, где активации нормализуются перед квантованием/упаковкой. - rms_norm_eps (
float, необязательный, по умолчанию 1e-06) — Значение эпсилона, используемое в слое RMSNorm для численной стабильности. - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, которые могут использоваться конкретными бэкендами квантования или будущими версиями.
Класс конфигурации для применения квантования BitNet.
Проверка безопасности: аргументы корректны
SpQRConfig
класс transformers.SpQRConfig
< source >( bits: int = 3beta1: int = 16beta2: int = 16shapes: dict[str, int] | None = Nonemodules_to_not_convert: list[str] | None = None**kwargs )
Параметры
- bits (
int, необязательный, по умолчанию 3) — Указывает количество бит для весов, нулевых точек первого порядка и масштабов. В настоящее время поддерживается только bits = 3. - beta1 (
int, необязательный, по умолчанию 16) — Ширина плитки SpQR. В настоящее время поддерживается только beta1 = 16. - beta2 (
int, необязательный, по умолчанию 16) — Высота плитки SpQR. В настоящее время поддерживается только beta2 = 16. - shapes (
Optional, необязательный) — Словарь, содержащий форму каждого объекта. Это необходимо, так как по значениям bits, beta1, beta2 невозможно точно определить размер параметров. - modules_to_not_convert (
Optional[list[str]], необязательно) — Необязательно, предоставляет список полных путей параметров весовnn.Linear, которые не должны быть квантованы. По умолчанию — None. - kwargs (
dict[str, Any], необязательный) — Дополнительные параметры для инициализации объекта конфигурации.
Это обёртка для параметров spqr. Дополнительные сведения см. в исходной публикации.
Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.
FineGrainedFP8Config
класс transformers.FineGrainedFP8Config
< source >( activation_scheme: str = 'dynamic'weight_block_size: tuple = (128, 128)dequantize: bool = Falsemodules_to_not_convert: list | None = Nonemodules_to_convert: list | None = Nonescale_fmt: str = 'float'expert_dtype: str = 'fp8'**kwargs )
Параметры
- activation_scheme (
str, необязательный, по умолчанию"dynamic") — Схема, используемая для активации. По умолчанию и на данный момент поддерживается только схема «dynamic». - weight_block_size (
typing.tuple[int, int], необязательный, по умолчанию(128, 128)) — Размер блоков весов для квантования, по умолчанию (128, 128). - dequantize (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли деквантовать модель при загрузке. - modules_to_not_convert (
list, необязательный) — Список имён модулей, которые не должны быть преобразованы при квантовании. - modules_to_convert (
list, необязательный) — Список дополнительных имён модулей, например, таблиц эмбеддингов, которые необходимо преобразовать при квантовании. - scale_fmt (
str, необязательный, по умолчанию"float") — Тип данных для хранения весовых масштабов по блокам:"float"(fp32, стиль V3) или"ue8m0"(1 байт,torch.float8_e8m0fnu, стиль V4). - expert_dtype (
str, необязательный, по умолчанию"fp8") — Формат весов экспертов MoE:"fp8"или"fp4"для FP4-упакованных экспертов DeepSeek-V4.
FineGrainedFP8Config — это класс конфигурации для тонкозернистого квантования FP8, используемый преимущественно для моделей deepseek.
Проверка безопасности: аргументы корректны
QuarkConfig
FourOverSixConfig
класс transformers.FourOverSixConfig
< source >( activation_dtype: str | None = Noneactivation_scale_rule: str | None = Nonedtype: str = 'nvfp4'gradient_dtype: str | None = Nonegradient_scale_rule: str | None = Nonekeep_master_weights: bool = Falsematmul_backend: str | None = Noneoutput_dtype: str | None = 'bfloat16'quantize_backend: str | None = Nonescale_rule: str = 'mse'weight_dtype: str | None = Noneweight_scale_2d: bool = Falseweight_scale_rule: str | None = Nonemodule_config_overrides: dict[str, dict[str, typing.Any]] | None = Nonemodules_to_not_convert: list[str] | None = ['lm_head']**kwargs )
Параметры
- activation_dtype (
str, необязательный) — Тип данных, используемый при квантовании тензоров активаций. Если не указан, используетсяdtype. - activation_scale_rule (
str, необязательный) — Правило масштабирования, используемое при выборе масштаба для блоков в тензорах активаций. Если не указано, используетсяscale_rule. - dtype (
str, по умолчанию “nvfp4”, необязательный, по умолчанию"nvfp4") — Тип данных, используемый для весов, активаций и тензоров слоя. Может быть"nvfp4"или"mxfp4". - gradient_dtype (
str, необязательный) — Тип данных, используемый при квантовании тензоров градиентов. Если не указан, используетсяdtype. - gradient_scale_rule (
str, необязательный) — Правило масштабирования, используемое при выборе масштаба для блоков в тензорах градиентов. Если не указано, используетсяscale_rule. - keep_master_weights (
bool, по умолчанию False, необязательный, значение по умолчаниюFalse) — Определяет, следует ли сохранять мастер-веса. ЕслиTrue, веса с высокой точностью сохраняются постоянно, а квантование выполняется онлайн на каждом проходе вперед. Это полезно для квантованной тренировки. - matmul_backend (
str, необязательный) — Бэкенд, используемый для умножения матриц. Может принимать значение"cutlass"или"pytorch". Если значение не указано, будет использован CUTLASS, если он доступен, в противном случае — PyTorch. - output_dtype (
str, необязательный, по умолчанию"bfloat16") — Тип данных, используемый для вывода слоя. Может быть"bfloat16"или"float16". - quantize_backend (
str, необязательный) — Бэкенд, используемый для квантования. Может принимать значения"cuda","triton"или"pytorch". Если значение не указано, будет выбран самый быстрый бэкенд с учётом вашей среды и возможностей, поддерживаемых каждым бэкендом. Как правило,"cuda"используется для инференса,"triton"— для обучения, а"pytorch"— на устройствах, отличных от CUDA. - scale_rule (
str, по умолчанию “mse”, необязательный, по умолчанию"mse") — Правило, используемое при выборе масштабов блоков. Может принимать значения"mse","mae"или"abs_max"для Four Over Six,"static_6"для квантования NVFP4 по умолчанию или"static_4"для масштабирования всех блоков до максимального значения 4. - weight_dtype (
str, необязательный) — Тип данных, используемый при квантовании тензоров весов. Если не указан, используетсяdtype. - weight_scale_2d (
bool, по умолчанию False, необязательный, значение по умолчаниюFalse) — Определяет, следует ли вычислять коэффициенты масштабирования для тензоров весов в 2D-блоках. Это необходимо делать во время обучения. - weight_scale_rule (
str, необязательный) — Правило масштабирования, используемое при выборе масштаба для блоков в тензорах весов. Если не указано, используетсяscale_rule. - module_config_overrides (
dict[str, dict[str, Any]], необязательный) — Словарь с параметрами конфигурации, специфичными для модулей. Ключами должны быть имена модулей, а значениями — словари, содержащие конфигурацию квантизации для данного модуля. Этот параметр можно использовать для переопределения конфигурации по умолчанию для конкретных модулей. - modules_to_not_convert (
list[str], необязательный, по умолчанию['lm_head']) — Список модулей, которые следует исключить из квантования. По умолчанию исключаетсяlm_head.
Это обёртка, содержащая все параметры квантования с помощью fouroversix. Кратко:
Four Over Six — это модификация квантования NVFP4, которая адаптивно масштабирует максимальное значение
в каждом блоке из 16 значений FP4 до 4 или 6. Выбор масштаба 6 использует полный диапазон
значений FP4, тогда как выбор масштаба 4 обеспечивает более равномерное распределение
ошибки квантования. Подробности изложены в оригинальной публикации: https://arxiv.org/abs/2512.02010.
FPQuantConfig
класс transformers.FPQuantConfig
< source >( forward_dtype: str = 'nvfp4'forward_method: str = 'abs_max'backward_dtype: str = 'bf16'store_master_weights: bool = Falsehadamard_group_size: int | None = Nonepseudoquantization: bool = Falsetransform_init: str = 'hadamard'modules_to_not_convert: list[str] | None = None**kwargs )
Параметры
- forward_dtype (
str, необязательный, по умолчанию"nvfp4") — Тип данных, используемый для прямого прохода. - forward_method (
str, необязательный, по умолчанию"abs_max") — Метод масштабирования, используемый для прямого прохода. Допустимые значения:"abs_max"или"quest"."abs_max"лучше подходит для PTQ,"quest"— для QAT. - backward_dtype (
str, необязательный, по умолчанию"bf16") — dtype, используемый для обратного прохода. - store_master_weights (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли сохранять мастер-веса. Требуется для QAT по весам слоёв. - hadamard_group_size (
int, необязательный) — Размер группы для преобразования Хадамарда перед квантованием для"quest"; он совпадает с размером группы MXFP4 (32). ЕслиNone, значение устанавливается в 16 для"nvfp4"и 32 для"mxfp4". - pseudoquantization (
bool, необязательный, по умолчаниюFalse) — Использовать ли псевдоквантование на базе Triton. Обязателен для GPU, не относящихся к архитектуре Blackwell. Не обеспечивает ускорения. Предназначен для отладки. - transform_init (
str, необязательный, по умолчанию"hadamard") — метод инициализации матрицы предобработки. Может принимать значения"hadamard","identity"или"gsr". - modules_to_not_convert (
list, необязательный) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, которые явно требуют, чтобы некоторые модули оставались в исходной точности.
FPQuantConfig — это класс конфигурации для квантования с использованием метода FPQuant.
Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.
AutoRoundConfig
класс transformers.AutoRoundConfig
< source >( bits: int = 4group_size: int = 128sym: bool = Truebackend: str = 'auto'**kwargs )
Параметры
- bits (
int, необязательный, по умолчанию 4) — Количество бит для квантования; поддерживаются значения (2, 3, 4, 5, 6, 7, 8). - group_size (
int, необязательный, по умолчанию 128) — значение размера группы - sym (
bool, необязательный, по умолчаниюTrue) — Использовать симметричную квантизацию или нет - backend (
str, необязательный, по умолчанию"auto") — Бэкенд для инференса. По умолчанию AutoRound выбирает совместимый бэкенд на основе устройства, настроек квантования и установленных библиотек. См. Указание бэкенда для инференса для всех вариантов бэкендов.
Это обёртка, содержащая все возможные атрибуты и возможности, доступные для работы с моделью, загруженной с квантованием AutoRound.
Проверка безопасности, что аргументы корректны.
SinqConfig
класс transformers.SinqConfig
< source >( nbits: int = 4group_size: int = 64tiling_mode: str = '1D'method: str = 'sinq'modules_to_not_convert: list[str] | None = None**kwargs: Any )
Параметры
- nbits (
int, по умолчанию 4) — Разрядность квантования весов. - group_size (
int, по умолчанию 64) — Размер группы, используемый при квантовании весов SINQ (должен быть кратен 8). - tiling_mode (
str, по умолчанию “1D”) — Режим тайлинга для SINQ (обычно “1D”; “2D”, если поддерживается вашим бэкендом). - method (
str, по умолчанию “sinq”) — “sinq” – калибровка не требуется, только веса SINQ “asinq” – A-SINQ (с учётом активаций), не поддерживается в Hugging Face. См. официальный репозиторий SINQ. - modules_to_not_convert (
list[str], необязательный) — Список имён/префиксов модулей, которые следует сохранять в полной точности. - **kwargs —
Дополнительные аргументы пользователя (сохраняются в
_extra_kwargsдля обратного преобразования).
Конфигурация квантования для SINQ / A-SINQ.
Передайте это в:
AutoModel.from_pretrained(…, quantization_config=SinqConfig(…))
GgufConfig
класс transformers.GgufConfig
< source >( gguf_file: str | None = Nonedequantize: bool = False**kwargs )
Параметры
- gguf_file (
str, необязательный) — путь к файлу.ggufс весами. Можно не указывать, если имя файла задаётся черезfrom_pretrained(..., gguf_file=...), который заполнит это поле. - dequantize (
bool, необязательный, по умолчаниюFalse) — Вместо этого распаковать каждый вес при загрузке в обычную плотную модель. Всегда корректно, но отказывается от экономии памяти; это также автоматический вариант, если для типов квантования файла недоступно ядро matmul.
Загрузите квантованную контрольную точку GGUF, оставив её веса в блоках GGUF.