aclnnClippedSwiglu
产品支持情况
功能说明
算子功能:带截断的Swish门控线性单元激活函数,实现x的SwiGlu计算。本接口相较于aclnnSwiGlu,新增了部分输入参数:groupIndex、alpha、limit、bias、interleaved,用于支持GPT-OSS模型使用的变体SwiGlu以及MoE模型使用的分组场景。
计算公式:
对给定的输入张量 x ,其维度为[a,b,c,d,e,f,g…],aclnnClippedSwiglu对其进行以下计算:
将 x 基于输入参数 dim 进行合轴,合轴后维度为[pre,cut,after]。其中 cut 轴为合轴之后需要切分为两个张量的轴,切分方式分为前后切分或者奇偶切分;pre,after 可以等于1。例如当 dim 为3,合轴后 x 的维度为[a * b * c, d, e * f * g * …]。此外,由于after轴的元素为连续存放,且计算操作为逐元素的,因此将cut轴与after轴合并,得到x的维度为[pre,cut]。
根据输入参数 group_index, 对 x 的pre轴进行过滤处理,公式如下:
其中sum表示group_index的所有元素之和。当不输入 group_index 时,跳过该步骤。
根据输入参数 interleaved,对 x 进行切分,公式如下:
当 interleaved 为 true 时,表示奇偶切分:
当 interleaved 为 false 时,表示前后切分:
根据输入参数 alpha、limit、bias 进行变体SwiGlu计算,公式如下:
重塑输出张量y的维度数量与合轴前的x的维度数量一致,dim轴上的大小为x的一半,其他维度与x相同。
函数原型
每个算子分为,必须先调用“aclnnClippedSwigluGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnClippedSwiglu”接口执行计算。
aclnnClippedSwigluGetWorkspaceSize
aclnnClippedSwiglu
约束说明
- 确定性计算:
- aclnnClippedSwiglu默认为确定性实现,暂不支持非确定性实现,即便通过确定性计算配置也不会生效。