开发者
资源
[object Object]

[object Object][object Object]undefined
[object Object]
  • 接口功能:为输入张量进行动态量化。在MOE场景下,每个专家的smoothScalesOptional是不同的,根据输入的groupIndexOptional进行区分。支持对称/非对称量化。支持pertoken/pertensor/perchannel量化模式。相较aclnnDynamicQuantV2,新增了pertensor/perchannel量化模式,通过quantMode参数指定。

  • 计算公式:

    • 对称量化:
      • 若不输入smoothScalesOptional,则scaleOut=maxt(abs(x))/DTYPEMAXscaleOut=\max_{t}(abs(x))/DTYPE_{MAX} yOut=round(x/scaleOut)yOut=round(x/scaleOut)
      • 若输入smoothScalesOptional,则input=xsmoothScalesOptionalinput = x\cdot smoothScalesOptional scaleOut=maxt(abs(input))/DTYPEMAXscaleOut=\max_{t}(abs(input))/DTYPE_{MAX} yOut=round(input/scaleOut)yOut=round(input/scaleOut)
    • 非对称量化:
      • 若不输入smoothScalesOptional,则scaleOut=(maxt(x)mint(x))/(DTYPEMAXDTYPEMIN)scaleOut=(\max_{t}(x) - \min_{t}(x))/(DTYPE_{MAX} - DTYPE_{MIN}) offset=DTYPEMAXmaxt(x)/scaleOutoffset=DTYPE_{MAX}-\max_{t}(x)/scaleOut yOut=round(x/scaleOut+offset)yOut=round(x/scaleOut+offset)
      • 若输入smoothScalesOptional,则input=xsmoothScalesOptionalinput = x\cdot smoothScalesOptional scaleOut=(maxt(input)mint(input))/(DTYPEMAXDTYPEMIN)scaleOut=(\max_{t}(input) - \min_{t}(input))/(DTYPE_{MAX} - DTYPE_{MIN}) offset=DTYPEMAXmaxt(input)/scaleOutoffset=DTYPE_{MAX}-\max_{t}(input)/scaleOut yOut=round(input/scaleOut+offset)yOut=round(input/scaleOut+offset) 其中maxt\max_{t}/mint\min_{t}代表求最大/最小值的模式,如果quantMode为“pertoken”,则t=rowt=row,表示对每个token计算最大/最小值;如果quantMode为“pertensor”,则t=allt=all,表示求整个tensor的最大/最小值;如果quantMode为“perchannel”,则t=colt=col,表示对每个channel求最大/最小值。DTYPEMAXDTYPE_{MAX}是输出类型的最大值,DTYPEMINDTYPE_{MIN}是输出类型的最小值。
[object Object]

每个算子分为,必须先调用“aclnnDynamicQuantV3GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnDynamicQuantV3”接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

[object Object]
  • 确定性计算:
    • aclnnDynamicQuantV3默认确定性实现。

yOut的数据类型为INT4时,需满足x和yOut的最后一维能被2整除。 yOut的数据类型为INT32时,需满足x的最后一维能被8整除。 当有groupIndexOptional时,专家数不超过x剔除最后一维的各个维度乘积。groupIndexOptional的值需要是一组不小于零且非递减的数组,且最后一个值和x剔除最后一维的各个维度乘积相等。若不满足该条件,结果无实际意义。

[object Object]

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]