快捷方式

choose_qparams_affine

torchao.quantization.choose_qparams_affine(input: Tensor, mapping_type: MappingType, block_size: Tuple[int, ...], target_dtype: dtype, quant_min: Optional[Union[int, float]] = None, quant_max: Optional[Union[int, float]] = None, eps: Optional[float] = None, scale_dtype: Optional[dtype] = None, zero_point_dtype: Optional[dtype] = None, preserve_zero: bool = True, zero_point_domain: Optional[ZeroPointDomain] = ZeroPointDomain.INT) Tuple[Tensor, Tensor][source]
参数:
  • input (torch.Tensor) – fp32, bf16, fp16 输入张量

  • mapping_type (MappingType) – 确定如何计算量化参数,对称或非对称

  • block_size – (Tuple[int, …]): 量化粒度,这意味着共享相同量化参数的张量元素的大小。例如,当大小与输入张量维度相同时,我们使用per tensor quantization(逐张量量化)

  • target_dtype (torch.dtype) – 目标量化张量的数据类型

  • quant_min (Optional[int]) – 目标量化张量的最小量化值

  • quant_max (Optioanl[int]) – 目标量化张量的最大量化值

  • eps (Optional[float]) – 最小 scale,如果未提供,则默认为 input.dtype 的 eps

  • scale_dtype (torch.dtype) – scale 张量的数据类型

  • zero_point_dtype (torch.dtype) – zero_point 张量的数据类型

  • preserve_zero (bool) –

    一个标志,指示我们是否需要精确表示零,这通常是需要零填充的操作所必需的,例如卷积;对于操作本身没有零填充的操作(如线性),则不太重要。

    例如,给定一个浮点张量 [1.2, 0.1, 3.0, 4.0, 0.4, 0],如果 preserve_zero 为 True,我们将确保有一个整数值对应于浮点数 0,例如 [-3, -8, 3, 7, -7, -8],0 将无损地映射到 -8。但是,如果 preserve_zero 不为 True,则不会有这样的保证。

    如果我们不需要精确表示零,我们将不对 zero_point 进行四舍五入和钳制

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

输出

scale 和 zero_point 张量的元组,具有请求的数据类型

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源