快捷方式

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: ZeroPointDomain = ZeroPointDomain.INT) Tuple[Tensor, Tensor][source]
参数:
  • input (torch.Tensor) – fp32, bf16, fp16 输入张量

  • mapping_type (MappingType) – 决定 qparams 的计算方式,对称或非对称

  • block_size – (Tuple[int, …]): 量化的粒度,表示共享相同 qparam 的张量元素大小,例如当大小与输入张量维度相同时,我们使用的是逐张量量化

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

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

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

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

  • scale_dtype (torch.dtype) – 比例因子张量的数据类型 (dtype)

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

  • 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 在浮点域中,量化时会从浮点数(未量化值)中减去它。默认值为 ZeroPointDomain.INT

输出

按指定数据类型返回比例因子 (scale) 和零点 (zero_point) 张量的元组

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

获取针对初学者和进阶开发者的深入教程

查看教程

资源

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

查看资源