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, packing_format: PackingFormat = PackingFormat.PLAIN, version: int = 1)[原始碼]¶
用於對線性層應用 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)。浮點零不必精確表示(choose_qparams_affine 中的 preserve_zero`=False)請遵循 choose_qparams_affine、quantize_affine 和 dequantize_affine 中的相關程式碼,瞭解如何選擇量化引數以及如何為 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
packing_format – int4 張量的打包格式,從版本 2 及以上可用