DynamicQuantUpdateScatterV2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件 | √ |
| Kirin X90 处理器系列产品 | √ |
| Kirin 9030 处理器系列产品 | √ |
功能说明
- 算子功能:将DynamicQuantV2和ScatterUpdate单算子自动融合为DynamicQuantUpdateScatterV2融合算子,以实现INT4类型的非对称量化。
- 过程描述:原始数据x首先经过DynamicQuantV2算子处理,将其转化为INT4类型,并输出对应的缩放因子scale和偏移量offset。随后,三个不同的ScatterUpdate以插入索引indices、三个初始数据(var,var_scale和var_offset)和DynamicQuantV2算子的三个输出(即量化后的数据,scale和offset)作为输入按指定位置执行写入更新操作,最终得到三个原地更新输出var,var_scale和var_offset,分别对应量化更新后的数据及其对应的量化参数。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 量化输入,对应过程描述中的"x" | FLOAT16、BFLOAT16 | ND |
| indices | 输入 | 量化数据更新索引,对应过程描述中的"indices" | INT32 | ND |
| var | 输入/输出 | 需要更新的量化结果,对应过程描述中的"var" | INT4 | ND |
| var_scale | 输入/输出 | 需要更新的量化scale因子,对应过程描述中的"var_scale" | FLOAT | ND |
| var_offset | 输入/输出 | 需要更新的量化offset因子,对应过程描述中的"var_offset" | FLOAT | ND |
- Kirin X90/Kirin 9030 处理器系列产品:不支持BFLOAT16。
约束说明
- 量化方式支持非对称量化,量化数据类型支持INT4。
- 量化不支持smooth_scale输入。
- INT4量化情况下,输入x的尾轴要能被2整除。
- DynamicQuantV2的output0为INT4类型,output1为FLOAT类型,output2为FLOAT类型。
- DynamicQuantV2的输入dtype必须为FLOAT16或者BFLOAT16。input1如果存在,且input2如果不存在,input1的shape必须是1维,且等于input0的最后一维;若input2存在,input1是两维,第一维大小是专家数,不超过1024,第二维大小等于input0的最后一维。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_dynamic_quant_update_scatter_v2 | 通过算子IR构图方式调用DynamicQuantUpdateScatterV2算子。 |