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

Квантование

Методы квантования снижают затраты на память и вычисления, представляя веса и активации с помощью типов данных с пониженной точностью, например 8-битных целых чисел (int8). Это позволяет загружать более крупные модели, которые в обычных условиях не помещаются в память, а также ускорять инференс. Transformers поддерживает алгоритмы квантования AWQ и GPTQ, а также 8-битное и 4-битное квантование с помощью bitsandbytes.

Техники квантования, не поддерживаемые в Transformers, можно добавить с помощью класса HfQuantizer.

Узнайте, как квантовать модели, в руководстве Квантование.

QuantoConfig

класс transformers.QuantoConfig

< >

( 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.

post_init

< >

( )

Проверка безопасности: аргументы корректны

AqlmConfig

класс transformers.AqlmConfig

< >

( 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.

post_init

< >

( )

Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.

VptqConfig

класс transformers.VptqConfig

< >

( 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.

post_init

< >

( )

Проверка безопасности: аргументы корректны

AwqConfig

класс transformers.AwqConfig

< >

( 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

< >

( weights: str = 'int8'modules_to_not_convert: list | None = None**kwargs )

Параметры

  • weights (str, необязательный, по умолчанию "int8") — Целевой тип данных для весов. Поддерживается только значение «int8»
  • modules_to_not_convert (list, необязательный, по умолчанию None) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, которые явно требуют, чтобы некоторые модули оставались в исходной точности.

Это обёртка, содержащая все возможные атрибуты и возможности, с которыми можно работать с моделью, загруженной с помощью eetq.

post_init

< >

( )

Проверка безопасности: аргументы корректны

GPTQConfig

класс transformers.GPTQConfig

< >

( 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.

from_dict_optimum

< >

( config_dict )

Получить совместимый класс с конфигурационным словарем optimum gptq

post_init

< >

( )

Проверка безопасности: аргументы корректны

to_dict_optimum

< >

( )

Получить совместимый dict для конфигурации optimum gptq

BitsAndBytesConfig

класс transformers.BitsAndBytesConfig

< >

( 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 будут добавлены новые методы, то в этот класс будут добавлены соответствующие аргументы.

is_quantizable

< >

( )

Возвращает True, если модель можно квантовать, иначе False.

post_init

< >

( )

Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.

quantization_method

< >

( )

Этот метод возвращает метод квантования, использованный для модели. Если модель не поддерживает квантование, возвращается None.

to_diff_dict

< >

( ) → dict[str, Any]

Возвращает

dict[str, Any]

Словарь всех атрибутов, из которых состоит этот экземпляр конфигурации,

Удаляет все атрибуты из config, соответствующие атрибутам конфигурации по умолчанию, для лучшей читаемости и сериализует результат в словарь Python.

HfQuantizer

класс transformers.quantizers.HfQuantizer

< >

( quantization_config: QuantizationConfigMixin**kwargs )

Абстрактный класс квантизатора HuggingFace. На данный момент поддерживает квантизацию моделей HF transformers для вывода и/или квантизации. Этот класс используется только в transformers.PreTrainedModel.from_pretrained и пока не может быть легко использован вне контекста этого метода.

Атрибуты quantization_config (transformers.utils.quantization_config.QuantizationConfigMixin): Конфигурация квантования, определяющая параметры квантования модели, которую вы хотите квантовать. requires_calibration (bool): Требуется ли методу квантования калибровка модели перед её использованием.

adjust_max_memory

< >

( max_memory: dict )

при необходимости дополнительного объема памяти для квантования отрегулируйте аргумент max_memory для infer_auto_device_map()

dequantize

< >

( modeldtype = None )

Возможно, потребуется деквантовать модель, чтобы получить исходную модель, с некоторой потерей точности / производительности. Обратите внимание, что не все схемы квантования поддерживают эту операцию.

get_load_operations

< >

( )

Классы Op, загружающие сериализованные тензоры, например {"deserialize": Mxfp4Deserialize, "dequantize": Mxfp4Dequantize}. Десериализация формирует параметры одного модуля, поэтому выполняется только в общих конвертерах. Декуантизация также выполняется до операций конвертеров модели, например, перед объединением по экспертам.

get_new_dtype

< >

( converterparamdtype: torch.dtype | None )

Это происходит на этапе материализации, когда тензор передаётся с диска на устройство. dtype — тип данных, в который приводится тензор param из предварительно квантованной контрольной точки. Если этот параметр не квантован (тип float), используется входной dtype, полученный из инициализированного nn.Module.

Если метод квантования имеет Deserializer или Dequantizer (функцию загрузки), мы возвращаем None, чтобы обработка выполнялась ими.

get_state_dict_and_metadata

< >

( model )

Получение state dict и метаданных. Полезно, когда необходимо немного изменить state dict из-за квантования

get_weight_conversions

< >

( )

Возвращает загрузку, которую необходимо выполнить для любого параметра, не соответствующего конвертерам модели

param_needs_quantization

< >

( model: PreTrainedModelparam_name: str**kwargs )

Проверьте, требуется ли квантование для данного параметра.

postprocess_model

< >

( model: PreTrainedModel**kwargs )

Параметры

  • model (~transformers.PreTrainedModel) — Модель, подлежащая квантованию
  • kwargs (dict, необязательный) — Параметры, передаваемые по имени в _process_model_after_weight_loading.

Выполните постобработку модели после загрузки весов. Убедитесь, что вы переопределяете абстрактный метод _process_model_after_weight_loading.

preprocess_model

< >

( model: PreTrainedModeldtype = None**kwargs )

Параметры

  • model (~transformers.PreTrainedModel) — Модель, подлежащая квантованию
  • kwargs (dict, необязательный) — Параметры, передаваемые в _process_model_before_weight_loading.

Установка атрибутов модели и/или преобразование модели до загрузки весов. На этом этапе модель должна быть инициализирована на meta-устройстве, что позволяет свободно манипулировать её структурой для замены модулей на месте. Не забудьте переопределить абстрактный метод _process_model_before_weight_loading.

remove_quantization_config

< >

( model )

Удалите конфигурацию квантования из модели.

update_attn_implementation

< >

( config )

Просматривает запрошенное значение attn_implementation до построения модели, чтобы квантизатор мог задать его по умолчанию.

update_device_map

< >

( device_map: dict[str, typing.Any] | None )

Параметры

  • device_map (Union[dict, str], необязательный) — device_map, передаваемый через метод from_pretrained.

Переопределите этот метод, если вы хотите передать новое устройство map, чтобы переопределить существующее. Например, для bitsandbytes, поскольку accelerate является обязательным требованием, если device_map не передан, device_map устанавливается в `“auto”“

update_dtype

< >

( dtype: torch.dtype )

Параметры

  • dtype (torch.dtype) — входящий dtype, передаваемый в from_pretrained

Некоторые методы квантования требуют явного задания dtype модели целевому типу. Если вы хотите убедиться, что это поведение сохраняется, вам нужно переопределить этот метод

update_parallel_plan

< >

( modelplan: dict )

Обновляет model.tp_plan или model.ep_plan (полные планы, объединённые из конфигурации и всех подконфигураций), чтобы учесть пользовательские ключи квантизатора, такие как ‘inv_scale’

update_weight_conversions

< >

( weight_conversionsmodel )

Позволяет конвертерам модели (из маппинга конвертации) загружать сериализованные имена. Параметры модели определяют, например, слияние 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 выполняется первой

validate_environment

< >

( *args**kwargs )

Этот метод используется для проверки возможных конфликтов с аргументами, передаваемыми в from_pretrained. Его необходимо определить для всех будущих квантизаторов, интегрированных с transformers. Если явная проверка не требуется, просто ничего не возвращайте.

HiggsConfig

класс transformers.HiggsConfig

< >

( 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.

post_init

< >

( )

Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.

HqqConfig

класс transformers.HqqConfig

< >

( 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.

from_dict

< >

( config: dict )

Override from_dict, used in AutoQuantizationConfig.from_dict in quantizers/auto.py

post_init

< >

( )

Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.

to_diff_dict

< >

( ) → dict[str, Any]

Возвращает

dict[str, Any]

Словарь всех атрибутов, из которых состоит этот экземпляр конфигурации,

Удаляет все атрибуты из config, соответствующие атрибутам конфигурации по умолчанию, для лучшей читаемости и сериализует результат в словарь Python.

MetalConfig

класс transformers.MetalConfig

< >

( 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

< >

( modules_to_not_convert: list | None = Nonedequantize: bool = False**kwargs )

Параметры

  • modules_to_not_convert (list, необязательный, по умолчанию None) — Список модулей, которые не следует квантовать. Полезно для квантования моделей, которые явно требуют, чтобы некоторые модули оставались в исходной точности.
  • dequantize (bool, необязательный, по умолчанию False) — Следует ли деквантовать модель до точности bf16

Это обёртка, описывающая все возможные атрибуты и возможности, доступные для работы с моделью, загруженной с использованием квантования mxfp4.

NVFP4Config

класс transformers.NVFP4Config

< >

( modules_to_not_convert: list[str] | None = None**kwargs )

Параметры

  • modules_to_not_convert (list[str], необязательный) — Шаблоны имен модулей, которые должны сохранять исходную точность.
  • kwargs (dict[str, Any], необязательный) — Дополнительные значения игнорируются и сообщаются через логгер Transformers.

Конфигурация для квантования весов в формате NVFP4 на лету.

FbgemmFp8Config

класс transformers.FbgemmFp8Config

< >

( 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

< >

( 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

< >

( 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

to_dict

< >

( )

Конфигурация квантования, которую нужно добавить в config.json

Сериализует этот экземпляр в словарь Python. Возвращает: dict[str, Any]: словарь всех атрибутов, составляющих этот экземпляр конфигурации.

to_diff_dict

< >

( ) → dict[str, Any]

Возвращает

dict[str, Any]

Словарь всех атрибутов, из которых состоит этот экземпляр конфигурации,

Удаляет все атрибуты из config, соответствующие атрибутам конфигурации по умолчанию, для лучшей читаемости и сериализует результат в словарь Python.

TorchAoConfig

класс transformers.TorchAoConfig

< >

( 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
)

from_dict

< >

( config_dictreturn_unused_kwargs = False**kwargs )

Создание конфигурации из словаря.

get_apply_tensor_subclass

< >

( )

Возвращает конфигурацию квантования, которую необходимо применить.

post_init

< >

( )

Проверьте конфигурацию и установите значения по умолчанию.

to_dict

< >

( )

Преобразовать конфигурацию в словарь.

BitNetQuantConfig

класс transformers.BitNetQuantConfig

< >

( 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.

post_init

< >

( )

Проверка безопасности: аргументы корректны

SpQRConfig

класс transformers.SpQRConfig

< >

( 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. Дополнительные сведения см. в исходной публикации.

post_init

< >

( )

Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.

FineGrainedFP8Config

класс transformers.FineGrainedFP8Config

< >

( 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.

post_init

< >

( )

Проверка безопасности: аргументы корректны

QuarkConfig

класс transformers.QuarkConfig

< >

( **kwargs )

FourOverSixConfig

класс transformers.FourOverSixConfig

< >

( 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

< >

( 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.

post_init

< >

( )

Проверка безопасности, что аргументы корректны — также заменяет некоторые аргументы типа NoneType на их значения по умолчанию.

AutoRoundConfig

класс transformers.AutoRoundConfig

< >

( 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.

post_init

< >

( )

Проверка безопасности, что аргументы корректны.

SinqConfig

класс transformers.SinqConfig

< >

( 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

< >

( gguf_file: str | None = Nonedequantize: bool = False**kwargs )

Параметры

  • gguf_file (str, необязательный) — путь к файлу .gguf с весами. Можно не указывать, если имя файла задаётся через from_pretrained(..., gguf_file=...), который заполнит это поле.
  • dequantize (bool, необязательный, по умолчанию False) — Вместо этого распаковать каждый вес при загрузке в обычную плотную модель. Всегда корректно, но отказывается от экономии памяти; это также автоматический вариант, если для типов квантования файла недоступно ядро matmul.

Загрузите квантованную контрольную точку GGUF, оставив её веса в блоках GGUF.

Update on GitHub