快捷方式

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, zero_point_domain: ZeroPointDomain = ZeroPointDomain.INT) 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 推导

  • zero_point_domain (ZeroPointDomain) – zero_point 所在的域,应为整数或浮点数。如果 zero_point 处于整数域,则在量化过程中将 zero point 添加到量化后的整数值;如果 zero_point 处于浮点数域,则在量化过程中从浮点数(未量化)值中减去 zero point。默认值为 ZeroPointDomain.INT

注意

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) for axis = 3 | (3, 3, 2, 10)

输出

具有所需 dtype 的量化张量


© Copyright 2024-至今, torchao 贡献者。

使用 Sphinx 构建,主题由 Read the Docs 提供。

文档

获取 PyTorch 全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得问题解答

查看资源