GroupedDynamicBlockQuant
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:根据传入的分组索引的起始值(group_list)对各个group以基本块的粒度进行量化,量化为(FP8/HiFP8),并输出量化参数scale(FP32)。
-
计算公式:
input_max=block_reduce_max(abs(input)) input\_max = block\_reduce\_max(abs(input))
scale=min(input_max/FP8_MAX(HiF8_MAX),1/min_scale) scale = min(input\_max/FP8\_MAX(HiF8\_MAX), 1/min\_scale)
y=cast_to_[HiF8/FP8](input/scale) y = cast\_to\_[HiF8/FP8](input/scale)
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 表示算子输入的Tensor,形如[M, N]或[B, M, N],对应公式中的input。 | FLOAT16、BFLOAT16 | ND |
| group_list | 输入 | 表示在M轴上每个group的偏移(cumsum模式)。 | INT32 | ND |
| min_scale | 输入 | 表示参与scale计算的最小scale值,对应公式中的min_scale。 | DOUBLE | - |
| round_mode | 可选属性 | 表示最后由高bit数据cast到目标数据类型的近似模式。 | STRING | - |
| dst_type | 输入 | 表示数据转换后y的数据类型。 | INT64 | - |
| row_block_size | 输入 | 表示指定M轴上的量化粒度。 | INT64 | - |
| col_block_size | 输入 | 表示指定N轴上的量化粒度。 | INT64 | - |
| group_list_type | 输入 | 表示group_list的功能类型。 | INT64 | - |
| y | 输出 | 表示量化后的输出Tensor,对应公式中的y。 | HIFLOAT8、FLOAT8_E4M3FN、FLOAT8_E5M2 | ND |
| scale | 输出 | 表示每个分组对应的量化尺度,对应公式中的scale。 | FLOAT32 | ND |
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_grouped_dynamic_block_quant | 通过aclnnGroupedDynamicBlockQuant接口方式调用GroupedDynamicBlockQuant算子。 |
| 图模式 | - | 通过算子IR构图方式调用GroupedDynamicBlockQuant算子。 |