Int4WeightOnlyConfig¶
- class torchao.quantization.Int4WeightOnlyConfig(group_size: int = 128, layout: Optional[TensorCoreTiledLayout] = TensorCoreTiledLayout(inner_k_tiles=8), use_hqq: bool = False, zero_point_domain: Optional[ZeroPointDomain] = ZeroPointDomain.NONE, set_inductor_config: bool = True, preserve_zero: Optional[bool] = None)[源代码]¶
用于将 uint4 权重仅非对称每组量化应用于线性层的配置,使用“tensor_core_tiled”布局通过 tinygemm 内核加速。
注意
这主要针对 tinygemm int4mm 内核(torch.ops.aten._weight_int4pack_mm 和 torch.ops.aten._weight_int4pack_mm_for_cpu),与更传统的整数量化类型相比,量化算法的主要区别在于:1)。零点位于浮点域而非整数域(zero_point_domain`=`ZeroPointDomain.FLOAT) 2)。浮点零不必是精确可表示的(preserve_zero`=False in `choose_qparams_affine),请遵循 choose_qparams_affine、quantize_affine 和 dequantize_affine 中的相关代码,了解量化参数的选取以及 Tensor 如何为 tinygemm 进行量化/反量化。
- 参数:
group_size – 量化参数,控制量化的粒度,较小的值更精细,可选值为 [256, 128, 64, 32]
layout – 量化张量的布局类型,默认为 TensorCoreTiledLayout(inner_k_tiles=8)
use_hqq – 是否使用 hqq 或默认量化模式,默认为 False
zero_point_domain – 零点的数据类型,可选值为 [ZeroPointDomain.FLOAT, ZeroPointDomain.INT, ZeroPointDomain.NONE]
set_inductor_config – 如果为 True,则将 torchinductor 设置调整为推荐值。
preserve_zero – 是否保留零,默认为 None。如果 zero_point_domain 为 ZeroPointDomain.INT,则会设置为 True