quantize_affine¶
- torchao.quantization.quantize_affine(input: Tensor, block_size: Tuple[int, ...], scale: Tensor, zero_point: Optional[Tensor], output_dtype: dtype, quant_min: Optional[Union[int, float]] = None, quant_max: Optional[Union[int, float]] = None) Tensor[原始碼]¶
- 引數:
input (torch.Tensor) – 原始的 float32、float16 或 bfloat16 張量
block_size – (Tuple[int, …]): 量化的粒度,這表示共享同一 qparam 的張量元素的尺寸。例如,當尺寸與輸入張量維度相同時,我們使用每張量(per tensor)量化
scale (float) – 仿射量化的量化引數
zero_point (int) – 仿射量化的量化引數
output_dtype (torch.dtype) – 輸出張量所需的 dtype(例如 torch.uint8)
quant_min (Optional[int]) – 輸出張量的最小量化值,如果未指定,則將從 dtype 派生
quant_max (Optional[int]) – 輸出張量的最大量化值,如果未指定,則將從 dtype 派生
注意
block_size 如何表示不同的粒度?例如,我們有一個尺寸為 (3, 3, 10, 10) 的張量,下表顯示了 block_size 如何表示不同的粒度
- 粒度型別 | block_size
每張量(per_tensor) | (3, 3, 10, 10) 每軸(per_axis,axis=0) | (1, 3, 10, 10) 每軸(per_axis,axis=1) | (3, 1, 10, 10)
每組(per_group,groupsize=2) | (3, 3, 10, 2) 每組(per_group,groupsize=2)對於 axis = 3 | (3, 3, 2, 10)
- 輸出
具有所需 dtype 的量化張量