快捷方式

IntxFakeQuantizeConfig

class torchao.quantization.qat.IntxFakeQuantizeConfig(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)[原始碼]

用於偽量化權重或啟用的配置,目標是高達 torch.int8 的整數資料型別。

引數:
  • dtype – 偽量化期間模擬的資料型別,例如 torch.int8。對於早於 2.6 的 PyTorch 版本,您可以使用 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 關鍵字引數結合使用,或者,只需設定 group_size 關鍵字引數,並將此欄位留空。

  • mapping_type – 是否使用對稱(預設)或非對稱量化。或者,設定 is_symmetric (bool) 並將此欄位留空。

  • scale_precision – 比例資料型別(預設為 torch.fp32)

  • zero_point_precision – 零點資料型別(預設為 torch.int32)

  • zero_point_domain – 零點是整數(預設)還是浮點域

  • is_dynamic – 是否使用動態(預設)或靜態比例和零點

  • range_learning (prototype) – 是否在訓練期間學習比例和零點(預設 false),與 is_dynamic 不相容。

關鍵字引數:
  • group_size – 每個組在每組偽量化中的大小,可以代替 granularity 設定

  • is_symmetric – 是否使用對稱或非對稱量化,可以代替 mapping_type 設定

使用示例

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

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

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

如果是每組粒度,則返回組大小。否則,會引發錯誤。

property is_symmetric: bool

如果對映型別是對稱的,則返回 True,否則返回 False(非對稱)。

文件

訪問全面的 PyTorch 開發者文件

檢視文件

教程

為初學者和高階開發者提供深入的教程

檢視教程

資源

查詢開發資源並讓您的問題得到解答

檢視資源