快捷方式

FakeQuantizeConfig

class torchao.quantization.qat.FakeQuantizeConfig(dtype: Union[dtype, TorchAODType], granularity: Optional[Union[Granularity, str]] = None, mapping_type: Optional[MappingType] = None, scale_precision: dtype = torch.float32, zero_point_precision: dtype = torch.int32, zero_point_domain: ZeroPointDomain = ZeroPointDomain.INT, is_dynamic: bool = True, range_learning: bool = False, eps: Optional[float] = None, *, group_size: Optional[int] = None, is_symmetric: Optional[bool] = None)[源代码]

用于伪量化权重或激活的配置。

参数:
  • dtype – 伪量化期间模拟的 dtype,例如 torch.int8。对于 PyTorch 版本早于 2.6 的版本,您可以使用 TorchAODType 来表示 torch.int1 到 torch.int7,例如 TorchAODType.INT4。

  • granularity

    缩放因子和零点的粒度,例如 PerGroup(32)。我们也支持以下字符串

    1. ’per_token’: 等同于 PerToken()

    2. ’per_channel’: 等同于 PerAxis(0)

    3. ’per_group’: 等同于 PerGroup(group_size),必须与单独的 group_size 关键字参数组合使用

      或者,只需设置 group_size 关键字参数,并将此字段留空。

  • mapping_type – 是否使用对称(默认)或非对称量化。或者,设置 is_symmetric(布尔值)并将此字段留空。

  • scale_precision – 缩放因子 dtype(默认 torch.fp32)

  • zero_point_precision – 零点 dtype(默认 torch.int32)

  • zero_point_domain – 零点是在整数(默认)还是浮点域中

  • is_dynamic – 是否使用动态(默认)或静态缩放因子和零点

  • range_learning (prototype) – 在训练期间是否学习缩放因子和零点(默认 false),与 is_dynamic 不兼容。

kwargs (可选)
group_size: 每组伪量化中的组大小,

可以代替 granularity 设置

is_symmetric: 是否使用对称或非对称量化,

可以代替 mapping_type 设置

使用示例

# Per token asymmetric quantization
FakeQuantizeConfig(torch.int8, "per_token", is_symmetric=False)
FakeQuantizeConfig(torch.int8, PerToken(), MappingType.ASYMMETRIC)

# Per channel symmetric quantization
FakeQuantizeConfig(torch.int4, "per_channel")
FakeQuantizeConfig(torch.int4, "per_channel", is_symmetric=True)
FakeQuantizeConfig(torch.int4, PerAxis(0), MappingType.SYMMETRIC)

# Per group symmetric quantization
FakeQuantizeConfig(torch.int4, group_size=32)
FakeQuantizeConfig(torch.int4, group_size=32, is_symmetric=True)
FakeQuantizeConfig(torch.int4, "per_group", group_size=32, is_symmetric=True)
FakeQuantizeConfig(torch.int4, PerGroup(32), MappingType.SYMMETRIC)
property group_size: int

如果是每组粒度,则返回组大小。否则,抛出错误。

property is_symmetric: bool

如果映射类型是对称的,则返回 True,否则返回 False(非对称)。

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源