接口功能:在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时的计算公式:
其中,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时的计算公式:
其中,x_glu表示dequantOut[object Object]i[object Object]的偶数索引部分,x_linear表示dequantOut[object Object]i[object Object]的奇数索引部分。
每个算子分为,必须先调用“aclnnDequantSwigluQuantV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnDequantSwigluQuantV2”接口执行计算。
确定性计算:
- 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。