文件最后提交记录最后更新时间
3 个月前
3 个月前
5 个月前
3 个月前
4 个月前
5 个月前
6 个月前
4 个月前
README.md

DynamicBlockQuant

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能:对输入张量,通过给定的row_block_size和col_block_size将输入划分成多个数据块,以数据块为基本粒度进行量化。在每个块中,先计算出当前块对应的量化参数scale,并根据scale对输入进行量化。输出最终的量化结果,以及每个块的量化参数scale。

  • 计算公式:

    input_max=block_reduce_max(abs(x))input\_max = block\_reduce\_max(abs(x))

    scale=min((FP8_MAX/HiF8_MAX/INT8_MAX)/input_max,1/minscale)scale = min((FP8\_MAX/HiF8\_MAX / INT8\_MAX) / input\_max, 1/min_scale)

    y=cast_to_[FP8/HiF8/INT8](x/scale)y = cast\_to\_[FP8/HiF8/INT8](x / scale)

    其中block_reduce_max代表求每个block中的最大值。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 表示算子输入的Tensor,对应公式中的`x`。shape支持2-3维。 FLOAT16、BFLOAT16 ND
min_scale 可选属性
  • 表示参与scale计算的最小scale值,对应公式中的`min_scale`。必须为正浮点数。
  • 默认值为0.0。
FLOAT32 -
round_mode 可选属性
  • 表示量化的舍入模式,支持取值rint、round。
  • 默认值为rint。
STRING -
dst_type 可选属性
  • 指定输出y的数据类型。支持取值2、34、35、36,分别代表ACL_INT8、HIFLOAT8、FLOAT8_E5M2、FLOAT8_E4M3FN。
  • 默认值为35,对应的数据类型为FLOAT8_E5M2。
INT -
row_block_size 可选属性
  • 表示行维度上每个块包含的元素数量。支持取值1,128。
  • 默认值为1。
INT -
col_block_size 可选属性
  • 表示列维度上每个块包含的元素数量。
  • 默认值为128。
INT -
y 输出 表示量化后的张量,对应公式中的`y`。shape与输入`x`的shape保持一致,数据类型由参数`dst_type`的取值决定。 INT8、HIFLOAT8、FLOAT8_E4M3FN、FLOAT8_E5M2 ND
scale 输出 表示量化使用的缩放张量,对应公式中的`scale`。shape为[ceil(x.rows/row_block_size), ceil(x.cols/col_block_size)]。 FLOAT32 ND
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品、Atlas A3 训练系列产品/Atlas A3 推理系列产品:

    • 参数round_mode只支持rint。
    • 参数dst_type仅支持取值2,代表ACL_INT8。
    • 参数row_block_size仅支持取值1。
    • 参数y的数据类型仅支持INT8。
  • Ascend 950PR/Ascend 950DT:

    • 参数xyscale的shape仅支持2维。
    • 参数round_mode的取值与参数y的数据类型存在对应关系:
      • 当输出y的数据类型是HIFLOAT8时,参数round_mode支持设置为round。
      • 当输出y的数据类型是FLOAT8_E4M3FN、FLOAT8_E5M2时,参数round_mode支持设置为rint。
    • 参数dst_type支持取值34、35、36,分别代表HIFLOAT8、FLOAT8_E5M2、FLOAT8_E4M3FN。
    • 参数y的数据类型不支持INT8。

约束说明

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_dynamic_block_quant 通过aclnnDynamicBlockQuant接口方式调用DynamicBlockQuant算子。
图模式 - 通过算子IR构图方式调用DynamicBlockQuant算子。