开发者
资源
[object Object][object Object][object Object]undefined
[object Object]
  • 接口功能:在Swish门控线性单元激活函数前后添加dequant和quant操作,实现x的DequantSwigluQuant计算。

    本接口相较于有两类新增参数:

    1)新增了三个Atlas 350 加速卡上使用的输入参数:dstType、roundModeOptional、activateDim。

    2)在[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]和[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]上,新增了四个参数用于GPT-OSS使用的变体SwiGLU:swigluMode、clampLimit、gluAlpha和gluBias;在Atlas 350 加速卡上使用该接口时,需要给这四个参数设置默认值。请根据实际情况选择合适的接口。

  • swigluMode为0时的计算公式:

    dequantOuti=Dequant(xi)dequantOut_i = Dequant(x_i) swigluOuti=Swiglu(dequantOuti)=Swish(Ai)BiswigluOut_i = Swiglu(dequantOut_i)=Swish(A_i)*B_i outi=Quant(swigluOuti)out_i = Quant(swigluOut_i)

    其中,A[object Object]i[object Object]表示dequantOut[object Object]i[object Object]的前半部分,B[object Object]i[object Object]表示dequantOut[object Object]i[object Object]的后半部分。

  • swigluMode为1时的计算公式:

    dequantOuti=Dequant(xi)dequantOut_i = Dequant(x_i) x_glu=x_glu.clamp(min=None,max=clampLimit)x\_glu = x\_glu.clamp(min=None, max=clampLimit) x_linear=x_linear.clamp(min=clampLimit,max=clampLimit)x\_linear = x\_linear.clamp(min=-clampLimit, max=clampLimit) out_glu=x_glusigmoid(gluAlphax_glu)out\_glu = x\_glu * sigmoid(gluAlpha * x\_glu) swigluOuti=out_glu(x_linear+gluBias)swigluOut_i = out\_glu * (x\_linear + gluBias) outi=Quant(swigluOuti)out_i = Quant(swigluOut_i)

    其中,x_glu表示dequantOut[object Object]i[object Object]的偶数索引部分,x_linear表示dequantOut[object Object]i[object Object]的奇数索引部分。

[object Object]

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

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

    [object Object]
  • 返回值:

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

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

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

    [object Object]
  • 返回值:

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

[object Object]
  • 确定性计算:

    • aclnnDequantSwigluQuantV2默认确定性实现。
  • 输入x对应activateDim的维度需要是2的倍数,且x的维数必须大于1维。

  • 当输入x的数据类型为INT32时,weightScaleOptional不能为空;当输入x的数据类型不为INT32时,weightScaleOptional不允许输入,传入空指针。

  • 当输入x的数据类型不为INT32时,activationScaleOptional不允许输入,传入空指针。

  • 当输入x的数据类型不为INT32时,biasOptional不允许输入,传入空指针。

  • 当输出yOut的数据类型为FLOAT4_E2M1、FLOAT4_E1M2时,yOut的最后一维需要是2的倍数。

  • 当activateDim对应的维度不是x的尾轴时,输出yOut的尾轴不超过5120。

  • groupIndexOptional所有元素之和不能大于输入x除尾轴之外的剩余轴的乘积。

  • 输出yOut和scaleOut超出groupIndexOptional所有元素之和的部分未进行清理处理,该部分内存为垃圾数据。

  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:当groupIndexOptional输入时,算子支持的输入张量的内存大小有上限,x的尾轴不超过7232。

[object Object]

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

[object Object]