Transformers 文档
量化
并获得增强的文档体验
开始使用
量化
量化技术通过使用较低精度的数据类型(如 8 位整数 (int8))表示权重和激活,从而降低内存和计算成本。这使得您可以加载通常无法装入内存的更大模型,并加速推理。Transformers 支持 AWQ 和 GPTQ 量化算法,并支持使用 bitsandbytes 进行 8 位和 4 位量化。
Transformers 中不支持的量化技术可以使用 HfQuantizer
类添加。
了解如何在量化指南中量化模型。
QuantoConfig
class transformers.QuantoConfig
< source >( weights = 'int8' activations = None modules_to_not_convert: typing.Optional[typing.List] = None **kwargs )
这是一个关于所有可能的属性和功能的包装类,您可以使用使用 quanto
加载的模型进行操作。
安全检查器,用于检查参数是否正确
AqlmConfig
class transformers.AqlmConfig
< source >( in_group_size: int = 8 out_group_size: int = 1 num_codebooks: int = 1 nbits_per_codebook: int = 16 linear_weights_not_to_quantize: typing.Optional[typing.List[str]] = 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
class transformers.VptqConfig
< source >( enable_proxy_error: bool = False config_for_layers: typing.Dict[str, typing.Any] = {} shared_layer_config: typing.Dict[str, typing.Any] = {} modules_to_not_convert: typing.Optional[typing.List] = None **kwargs )
参数
- enable_proxy_error (
bool
, 可选, 默认为False
) — 计算每层的代理误差 - config_for_layers (
Dict
, optional, defaults to{}
) — 每个层的量化参数 - shared_layer_config (
Dict
, optional, defaults to{}
) — 层之间共享的量化参数 - modules_to_not_convert (
list
, optional, default toNone
) — 不进行量化的模块列表,这对于量化模型非常有用,这些模型明确要求某些模块保持其原始精度(例如 Whisper 编码器、Llava 编码器、Mixtral gate 层)。 - kwargs (
Dict[str, Any]
, optional) — 用于初始化配置对象的附加参数。
这是一个关于 vptq
参数的包装类。
安全检查器,用于检查参数是否正确
AwqConfig
class transformers.AwqConfig
< source >( bits: int = 4 group_size: int = 128 zero_point: bool = True version: AWQLinearVersion = <AWQLinearVersion.GEMM: 'gemm'> backend: AwqBackendPackingMethod = <AwqBackendPackingMethod.AUTOAWQ: 'autoawq'> do_fuse: typing.Optional[bool] = None fuse_max_seq_len: typing.Optional[int] = None modules_to_fuse: typing.Optional[dict] = None modules_to_not_convert: typing.Optional[typing.List] = None exllama_config: typing.Optional[typing.Dict[str, int]] = None **kwargs )
参数
- bits (
int
, optional, defaults to 4) — 量化到的比特数。 - group_size (
int
, optional, defaults to 128) — 用于量化的组大小。建议值为 128,-1 使用按列量化。 - zero_point (
bool
, optional, defaults toTrue
) — 是否使用零点量化。 - version (
AWQLinearVersion
, optional, defaults toAWQLinearVersion.GEMM
) — 要使用的量化算法的版本。GEMM 更适合大 batch_size (例如 >= 8),否则,GEMV 更好 (例如 < 8 )。GEMM 模型与 Exllama 内核兼容。 - backend (
AwqBackendPackingMethod
, optional, defaults toAwqBackendPackingMethod.AUTOAWQ
) — 量化后端。某些模型可能使用llm-awq
后端进行量化。这对于使用llm-awq
库量化自己模型的用户非常有用。 - do_fuse (
bool
, optional, defaults toFalse
) — 是否融合 attention 和 mlp 层以加快推理速度 - fuse_max_seq_len (
int
, optional) — 使用融合时要生成的最大序列长度。 - modules_to_fuse (
dict
, optional, default toNone
) — 使用用户指定的方案覆盖原生支持的融合方案。 - modules_to_not_convert (
list
, optional, default toNone
) — 不进行量化的模块列表,这对于量化模型非常有用,这些模型明确要求某些模块保持其原始精度(例如 Whisper 编码器、Llava 编码器、Mixtral gate 层)。 请注意,您不能直接使用 transformers 进行量化,请参阅AutoAWQ
文档以了解如何量化 HF 模型。 - exllama_config (
Dict[str, Any]
, optional) — 您可以通过version
键指定 exllama 内核的版本,通过max_input_len
键指定最大序列长度,并通过max_batch_size
键指定最大批处理大小。如果未设置,则默认为{"version": 2, "max_input_len": 2048, "max_batch_size": 8}
。
这是一个关于所有可能的属性和功能的包装类,您可以使用 auto-awq
库 awq 量化加载的模型来使用这些属性和功能,该量化依赖于 auto_awq 后端。
安全检查器,用于检查参数是否正确
EetqConfig
class transformers.EetqConfig
< source >( weights: str = 'int8' modules_to_not_convert: typing.Optional[typing.List] = None **kwargs )
这是一个关于所有可能的属性和功能的包装类,您可以使用 eetq
加载的模型来使用这些属性和功能。
安全检查器,用于检查参数是否正确
GPTQConfig
class transformers.GPTQConfig
< source >( bits: int tokenizer: typing.Any = None dataset: typing.Union[typing.List[str], str, NoneType] = None group_size: int = 128 damp_percent: float = 0.1 desc_act: bool = False sym: bool = True true_sequential: bool = True checkpoint_format: str = 'gptq' meta: typing.Optional[typing.Dict[str, <built-in function any>]] = None backend: typing.Optional[str] = None use_cuda_fp16: bool = False model_seqlen: typing.Optional[int] = None block_name_to_quantize: typing.Optional[str] = None module_name_preceding_first_block: typing.Optional[typing.List[str]] = None batch_size: int = 1 pad_token_id: typing.Optional[int] = None use_exllama: typing.Optional[bool] = None max_input_length: typing.Optional[int] = None exllama_config: typing.Optional[typing.Dict[str, typing.Any]] = None cache_block_outputs: bool = True modules_in_block_to_quantize: typing.Optional[typing.List[typing.List[str]]] = None **kwargs )
参数
- bits (
int
) — 量化到的比特数,支持的数字为 (2, 3, 4, 8)。 - tokenizer (
str
或PreTrainedTokenizerBase
, 可选) — 用于处理数据集的分词器。您可以传递以下任一项:- 自定义分词器对象。
- 字符串,托管在 huggingface.co 模型仓库中的预定义分词器的模型 ID。
- 指向包含分词器所需词汇文件的目录的路径,例如使用 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) — 用于阻尼的平均 Hessian 对角线的百分比。建议值为 0.1。 - desc_act (
bool
, 可选, 默认为False
) — 是否按照激活大小降序量化列。将其设置为 False 可以显著加快推理速度,但困惑度可能会略微变差。也称为 act-order。 - sym (
bool
, 可选, 默认为True
) — 是否使用对称量化。 - true_sequential (
bool
, 可选, 默认为True
) — 即使在单个 Transformer 块内也执行顺序量化。我们不一次性量化整个块,而是执行逐层量化。因此,每一层都使用经过先前量化层的输入进行量化。 - checkpoint_format (
str
, 可选, 默认为"gptq"
) — GPTQ 权重格式。gptq
(v1) 受 gptqmodel 和 auto-gptq 支持。gptq_v2
仅受 gptqmodel 支持。 - meta (
Dict[str, any]
, 可选) — 不直接影响量化或量化推理的属性,例如 tooling:version,存储在 meta 中。例如,meta.quantizer
:[“optimum:version”, “gptqmodel:version”] - backend (
str
, 可选) — 控制要使用的 gptq 内核。gptqmodel 的有效值包括auto
、auto_trainable
等。对于 auto-gptq,唯一有效值是 None 和auto_trainable
。参考 gptqmodel 后端: https://github.com/ModelCloud/GPTQModel/blob/main/gptqmodel/utils/backend.py - use_cuda_fp16 (
bool
, 可选, 默认为False
) — 是否对 fp16 模型使用优化的 cuda 内核。需要模型为 fp16 格式。仅限 Auto-gptq。 - 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
, 可选) — pad token id。当batch_size
> 1 时,准备数据集需要此参数。 - use_exllama (
bool
, 可选) — 是否使用 exllama 后端。如果未设置,则默认为True
。仅适用于bits
= 4。 - max_input_length (
int
, 可选) — 最大输入长度。初始化依赖于最大预期输入长度的缓冲区时需要此参数。它特定于具有 act-order 的 exllama 后端。 - exllama_config (
Dict[str, Any]
, 可选) — exllama 配置。您可以通过version
键指定 exllama 内核的版本。如果未设置,则默认为{"version": 1}
。 - 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` 将获得的真实输入。
这是一个包装类,包含所有可能的属性和功能,您可以使用这些属性和功能来操作使用 optimum api 加载的、用于 gptq 量化且依赖于 auto_gptq 后端的模型。
获取与 optimum gptq config dict 兼容的类
安全检查器,用于检查参数是否正确
获取与 optimum gptq config 兼容的 dict
BitsAndBytesConfig
class transformers.BitsAndBytesConfig
< source >( load_in_8bit = False load_in_4bit = False llm_int8_threshold = 6.0 llm_int8_skip_modules = None llm_int8_enable_fp32_cpu_offload = False llm_int8_has_fp16_weight = False bnb_4bit_compute_dtype = None bnb_4bit_quant_type = 'fp4' bnb_4bit_use_double_quant = False bnb_4bit_quant_storage = None **kwargs )
参数
- load_in_8bit (
bool
, 可选, 默认为False
) — 此标志用于启用 LLM.int8() 的 8 位量化。 - load_in_4bit (
bool
, 可选, 默认为False
) — 此标志用于通过将线性层替换为来自bitsandbytes
的 FP4/NF4 层来启用 4 位量化。 - llm_int8_threshold (
float
, 可选, 默认为 6.0) — 这对应于异常值检测的异常值阈值,如LLM.int8() : 8-bit Matrix Multiplication for Transformers at Scale
论文中所述:https://arxiv.org/abs/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
) — 此标志用于高级用例和了解此功能的用户。如果您想将模型分成不同的部分,并在 GPU 上以 int8 运行某些部分,在 CPU 上以 fp32 运行某些部分,则可以使用此标志。这对于卸载大型模型(如google/flan-t5-xxl
)非常有用。请注意,int8 操作不会在 CPU 上运行。 - llm_int8_has_fp16_weight (
bool
, 可选, 默认为False
) — 此标志使用 16 位主权重运行 LLM.int8()。这对于微调很有用,因为权重不必为反向传播来回转换。 - 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
加载的模型。
这取代了 load_in_8bit
或 load_in_4bit
,因此这两个选项是互斥的。
目前仅支持 LLM.int8()
、FP4
和 NF4
量化。如果 bitsandbytes
中添加了更多方法,则将向此类添加更多参数。
如果模型可量化,则返回 True
,否则返回 False
。
安全检查器,用于检查参数是否正确 - 还会将一些 NoneType 参数替换为其默认值。
此方法返回模型使用的量化方法。如果模型不可量化,则返回 None
。
从配置中删除与默认配置属性对应的所有属性,以提高可读性并序列化为 Python 字典。
HfQuantizer
class transformers.quantizers.HfQuantizer
< source >( quantization_config: QuantizationConfigMixin **kwargs )
HuggingFace 量化器的抽象类。目前支持量化 HF transformers 模型以进行推理和/或量化。此类仅用于 transformers.PreTrainedModel.from_pretrained,目前还不能轻易地在该方法范围之外使用。
属性 quantization_config (transformers.utils.quantization_config.QuantizationConfigMixin
):量化配置,定义您要量化的模型的量化参数。 modules_to_not_convert (List[str]
, 可选):量化模型时不要转换的模块名称列表。 required_packages (List[str]
, 可选):使用量化器之前需要安装的 pip 包列表 requires_calibration (bool
):量化方法是否需要在使用前校准模型。 requires_parameters_quantization (bool
):量化方法是否需要创建新参数。例如,对于 bitsandbytes,需要创建一个新的 xxxParameter 才能正确量化模型。
如果量化需要额外的内存,则调整 infer_auto_device_map() 的 max_memory 参数
adjust_target_dtype
< source >( torch_dtype: torch.dtype )
如果您想调整 target_dtype
变量(在 from_pretrained
中使用)以计算 device_map(以防 device_map 是 str
),请覆盖此方法。例如,对于 bitsandbytes,我们强制将 target_dtype
设置为 torch.int8
,对于 4 位,我们传递自定义枚举 accelerate.CustomDtype.int4
。
check_quantized_param
< source >( model: PreTrainedModel param_value: torch.Tensor param_name: str state_dict: typing.Dict[str, typing.Any] **kwargs )
检查加载的 state_dict 组件是否是量化参数的一部分 + 一些验证;仅当 requires_parameters_quantization == True 时定义,用于需要为量化创建新参数的量化方法。
从 state_dict 中获取需要的组件并创建量化参数;仅在 requires_parameters_quantization == True 时适用
可能将模型反量化以恢复原始模型,但会损失一些精度/性能。请注意,并非所有量化方案都支持此操作。
get_special_dtypes_update
< source >( model torch_dtype: torch.dtype )
返回未量化模块的 dtypes - 用于在将 str 作为 device_map 传递的情况下计算 device_map。此方法将使用在 _process_model_before_weight_loading
中修改的 modules_to_not_convert
。
postprocess_model
< source >( model: PreTrainedModel **kwargs )
在权重加载后对模型进行后处理。请确保覆盖抽象方法 _process_model_after_weight_loading
。
preprocess_model
< source >( model: PreTrainedModel **kwargs )
在加载权重之前设置模型属性和/或转换模型。此时,模型应在 meta 设备上初始化,以便您可以自由地操作模型的骨架,从而就地替换模块。请确保覆盖抽象方法 _process_model_before_weight_loading
。
update_device_map
< source >( device_map: typing.Optional[typing.Dict[str, typing.Any]] )
如果您想使用新的 device map 覆盖现有的 device map,请覆盖此方法。 例如,对于 bitsandbytes,由于 accelerate
是硬性要求,如果没有传递 device_map,则 device_map 将设置为“auto”。
update_expected_keys
< source >( model expected_keys: typing.List[str] loaded_keys: typing.List[str] )
如果您想调整 update_expected_keys
,请覆盖此方法。
update_missing_keys
< source >( model missing_keys: typing.List[str] prefix: str )
如果您想调整 missing_keys
,请覆盖此方法。
update_missing_keys_after_loading
< source >( model missing_keys: typing.List[str] prefix: str )
如果您想在加载模型参数之后但在模型进行后处理之前调整 missing_keys
,请覆盖此方法。
update_torch_dtype
< source >( torch_dtype: torch.dtype )
某些量化方法需要显式地将模型的 dtype 设置为目标 dtype。如果您想确保保留这种行为,则需要覆盖此方法
update_unexpected_keys
< source >( model unexpected_keys: typing.List[str] prefix: str )
如果您想调整 unexpected_keys
,请覆盖此方法。
此方法用于可能检查与 from_pretrained
中传递的参数的潜在冲突。 您需要为所有未来与 transformers 集成的量化器定义它。 如果不需要显式检查,只需返回 nothing 即可。
HiggsConfig
class transformers.HiggsConfig
< source >( bits: int = 4 p: int = 2 modules_to_not_convert: typing.Optional[typing.List[str]] = None hadamard_size: int = 512 group_size: int = 256 tune_metadata: typing.Optional[typing.Dict[str, typing.Any]] = 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 方法的 Hadamard 大小。默认为 512。矩阵的输入维度会填充到此值。将其降低到 512 以下会降低量化质量。
- group_size (int, 可选, 默认为 256) — HIGGS 方法的组大小。可以是 64、128 或 256。减小它几乎不会影响性能。默认为 256。必须是 hadamard_size 的除数。
- tune_metadata (‘dict’, 可选, 默认为 {}) — 模块级元数据(gemm 块形状、GPU 元数据等),用于保存内核调优结果。默认为空字典。在调优期间自动设置。
HiggsConfig 是使用 HIGGS 方法进行量化的配置类。
安全检查器,用于检查参数是否正确 - 还会将一些 NoneType 参数替换为其默认值。
HqqConfig
class transformers.HqqConfig
< source >( nbits: int = 4 group_size: int = 64 view_as_float: bool = False axis: typing.Optional[int] = None dynamic_config: typing.Optional[dict] = None skip_modules: typing.List[str] = ['lm_head'] **kwargs )
参数
- nbits (
int
, 可选, 默认为 4) — 比特数。支持的值为 (8, 4, 3, 2, 1)。 - group_size (
int
, 可选, 默认为 64) — 组大小值。支持的值是任何可以被 weight.shape[axis] 整除的值)。 - view_as_float (
bool
, 可选, 默认为False
) — 如果设置为True
,则将量化权重视为浮点数(用于分布式训练)。 - axis (
Optional[int]
, 可选) — 执行分组的轴。支持的值为 0 或 1。 - dynamic_config (dict, 可选) — 动态配置的参数。键是层的名称标签,值是量化配置。如果设置,则每个由其 ID 指定的层将使用其专用的量化配置。
- skip_modules (
List[str]
, 可选, 默认为['lm_head']
) — 要跳过的nn.Linear
层列表。 - kwargs (
Dict[str, Any]
, 可选) — 用于初始化配置对象的其他参数。
这是 hqq 的 BaseQuantizeConfig 的包装器。
重写 from_dict,用于 quantizers/auto.py 中的 AutoQuantizationConfig.from_dict
安全检查器,用于检查参数是否正确 - 还会将一些 NoneType 参数替换为其默认值。
从配置中删除与默认配置属性对应的所有属性,以提高可读性并序列化为 Python 字典。
FbgemmFp8Config
class transformers.FbgemmFp8Config
< source >( activation_scale_ub: float = 1200.0 modules_to_not_convert: typing.Optional[typing.List] = None **kwargs )
这是一个关于所有可能的属性和功能的包装类,您可以使用使用 fbgemm fp8 量化加载的模型进行操作。
CompressedTensorsConfig
class transformers.CompressedTensorsConfig
< source >( config_groups: typing.Dict[str, typing.Union[ForwardRef('QuantizationScheme'), typing.List[str]]] = None format: str = 'dense' quantization_status: QuantizationStatus = 'initialized' kv_cache_scheme: typing.Optional[ForwardRef('QuantizationArgs')] = None global_compression_ratio: typing.Optional[float] = None ignore: typing.Optional[typing.List[str]] = None sparsity_config: typing.Dict[str, typing.Any] = None quant_method: str = 'compressed-tensors' run_compressed: bool = True **kwargs )
参数
- config_groups (
typing.Dict[str, typing.Union[ForwardRef('QuantizationScheme'), typing.List[str]]]
, 可选) — 将组名映射到量化方案定义的字典 - format (
str
, 可选, 默认为"dense"
) — 模型表示的格式。如果格式不是dense
,请设置run_compressed
为 True 以压缩格式执行模型 - quantization_status (
QuantizationStatus
, 可选, 默认为"initialized"
) — 模型在量化生命周期中的状态,例如 ‘initialized’(已初始化)、‘calibration’(校准)、‘frozen’(已冻结) - kv_cache_scheme (
typing.Union[QuantizationArgs, NoneType]
, 可选) — 指定 KV 缓存的量化方案。如果为 None,则 KV 缓存不进行量化。 - global_compression_ratio (
typing.Union[float, NoneType]
, 可选) — 模型压缩率,0-1 浮点数百分比 - ignore (
typing.Union[typing.List[str], NoneType]
, 可选) — 不进行量化的层名称或类型,支持以 ‘re:’ 为前缀的正则表达式 - sparsity_config (
typing.Dict[str, typing.Any]
, 可选) — 用于稀疏性压缩的配置 - quant_method (
str
, 可选, 默认为"compressed-tensors"
) — 请勿覆盖,应为 compressed-tensors - run_compressed (
bool
, 可选, 默认为True
) — 如果为 True,则更改子模块(通常为线性层)以模拟压缩模型执行,否则使用默认子模块
这是一个包装类,用于处理 compressed-tensors 量化配置选项。它是 compressed_tensors.QuantizationConfig
的包装器。
from_dict
< source >( config_dict return_unused_kwargs = False **kwargs ) → QuantizationConfigMixin
从 Python 参数字典实例化 CompressedTensorsConfig。可选择从嵌套的 quantization_config 中解包任何参数
要添加到 config.json 的量化配置
将此实例序列化为 Python 字典。 返回值:Dict[str, Any]
:构成此配置实例的所有属性的字典。
从配置中删除与默认配置属性对应的所有属性,以提高可读性并序列化为 Python 字典。
TorchAoConfig
class transformers.TorchAoConfig
< source >( quant_type: typing.Union[str, ForwardRef('AOBaseConfig')] modules_to_not_convert: typing.Optional[typing.List] = None **kwargs )
从字典创建配置。
根据配置创建适当的量化方法。
验证配置并设置默认值。
将配置转换为字典。
BitNetConfig
class transformers.BitNetConfig
< source >( modules_to_not_convert: typing.Optional[typing.List] = None **kwargs )
安全检查器,用于检查参数是否正确
SpQRConfig
class transformers.SpQRConfig
< source >( bits: int = 3 beta1: int = 16 beta2: int = 16 shapes: typing.Optional[typing.Dict[str, int]] = None modules_to_not_convert: typing.Optional[typing.List[str]] = 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
< 源码 >( activation_scheme: str = 'dynamic' weight_block_size: typing.Tuple[int, int] = (128, 128) modules_to_not_convert: typing.Optional[typing.List] = None **kwargs )
FineGrainedFP8Config 是一个用于细粒度 FP8 量化的配置类,主要用于 deepseek 模型。
安全检查器,用于检查参数是否正确