文件最后提交记录最后更新时间
2 个月前
15 天前
1 个月前
14 天前
29 天前
8 个月前
10 天前
README

DynamicQuantUpdateScatter

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品 ×
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Kirin X90 处理器系列产品
Kirin 9030 处理器系列产品

功能说明

  • 算子功能:融合DynamicQuant+scatter+scatter为DynamicQuantUpdateScatter算子提升性能。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
var 输入/输出 待更新的tensor。 INT8 ND
var_scale 输入/输出 量化的scale因子,待更新的tensor。 FLOAT32 ND
indices 输入 表示更新位置。 INT32、INT64 ND
updates 输入 表示更新数据 BFLOAT16、FLOAT16 ND
smooth_scales 输入 代表DynamicQuant的smoothScales。 BFLOAT16、FLOAT16 ND
axis 属性 scatter轴。支持负数取值(按var维数归一化),归一化后必须是内层轴(不能取第0维或最后一维)。 - -
reduce 属性 更新模式。支持update;none和空字符串作为兼容取值,语义与update一致。 STRING -
  • Kirin X90/Kirin 9030 处理器系列产品:不支持BFLOAT16。

约束说明

  1. indices的维数只能是1维或者2维,如果是2维,其第2维的大小必须是2。
  2. updates的维数与var的维数一致;其第1维的大小等于indices的第1维的大小,且不大于var的第1维的大小;其axis轴的大小不大于var的axis轴的大小;除第1维和axis轴外,其余各维的大小必须与var完全一致。
  3. var_scale与var的维数一致,除最后一维外各维大小必须与var相同,且最后一维的大小必须为1(即每个量化行对应一个scale,var_scale的元素数等于var的元素数除以var最后一维的大小)。
  4. smooth_scales为1维且大小和var[-1]一致,其数据类型必须与updates的数据类型一致。
  5. reduce支持‘update’;为兼容历史调用,‘none’和空字符串同样执行更新操作。
  6. 尾轴需要32B对齐:var与updates在axis轴之后各维的乘积(合并尾轴)按INT8元素个数计必须是32的倍数,且两者相等。
  7. indices映射的scatter数据段不能重合,若重合则因为多核并发原因将导致多次执行结果不一样。
  8. axis支持负数取值,按“axis + var维数”归一化;归一化后必须是内层轴(不能取第0维或最后一维),因此var的维数必须大于等于3。
  9. 各输入shape的每一维大小必须为正数(不支持空tensor)。

调用说明

调用方式 调用样例 说明
图模式调用 test_geir_dynamic_quant_update_scatter 通过算子IR构图方式调用DynamicQuantUpdateScatter算子。