- [object Object]Ascend 950PR/Ascend 950DT[object Object]:支持
- [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:不支持
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:不支持
- [object Object]Atlas 200I/500 A2 推理产品[object Object]:不支持
- [object Object]Atlas 推理系列产品[object Object]:不支持
- [object Object]Atlas 训练系列产品[object Object]:不支持
接口功能:SwigluGroupQuantGrad算子实现SwiGLU激活函数分组量化的反向梯度计算。用于计算输入梯度
[object Object]和权重梯度[object Object]。算子支持范围:支持MoE场景(传入groupIndex)和非MoE场景(groupIndex传空),支持可选的Clamp反向传播掩码,支持可选的Weight梯度计算。
计算流程:
- 步骤〇:GroupIndex处理(可选)→ 计算trunc
- 步骤一:输入切分(将x切分为x0和x1)
- 步骤二:Clamp处理(可选)
- 步骤三:SwiGLU反向传播计算
- 步骤四:Weight梯度计算(可选)
- 步骤五:梯度拼接输出
MoE场景GroupIndex处理公式:
其中:为MoE专家分组数,后续所有步骤仅处理前行数据。
输入切分公式:
Clamp处理公式(当clamp_limit > 0时):
其中为
[object Object]。SiLU梯度公式:
其中:
输入梯度计算公式:
其中:如果提供了weight,则 ;如果未提供weight,则
Weight梯度计算公式(可选):
其中: 为SwiGLU前向传播的原始激活值输出,沿最后一维(H维度)求和。
Clamp反向传播掩码公式(当clamp_limit > 0时):
其中为指示函数。
梯度拼接与GroupIndex处理公式:
每个算子分为,必须先调用“aclnnSwigluGroupQuantGradGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnSwigluGroupQuantGrad”接口执行计算。
[object Object]
[object Object]
确定性计算:
- aclnnSwigluGroupQuantGrad默认确定性实现。
输入shape约束:
- x最后一维必须为偶数()
- gradY最后一维为 ,与x最后一维的一半对应
- gradY与x的前n-1维shape必须一致
可选参数约束:
- weight提供时,必须同时提供yOrigin才能计算gradWeight
- weight元素个数需等于x或gradY除最后一维外的元素个数之积
- yOrigin的shape需与gradY一致
数据类型约束:
- gradY、x、yOrigin、gradX数据类型必须一致(FLOAT、FLOAT16或BFLOAT16)
- weight、gradWeight必须为FLOAT类型
- groupIndex必须为INT64类型
Clamp约束:
- clampLimit取值范围为-1.0或>0.0
- clampLimit=-1.0表示不启用Clamp反向传播掩码,启用时clampLimit必须>0.0
规格约束:
[object Object]undefined
[object Object]