快捷方式

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 全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源