文件最后提交记录最后更新时间
6 天前
1 个月前
13 天前
1 天前
8 天前
13 天前
1 天前
2 个月前
13 天前
README

SwigluGroup

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品 ×
Atlas A2 训练系列产品/Atlas A2 推理系列产品 ×
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能:实现SwiGLU激活。输入x的最后一维被均分为AB,计算silu(A) * B,直接输出与输入x相同数据类型的激活结果。

  • 计算公式:

    y=silu(A)×By=silu(A) \times B

    当传入clamp_limit时:

    A=min(A,clamp_limit)A=min(A, clamp\_limit)

    B=min(max(B,−clamp_limit),clamp_limit)B=min(max(B, -clamp\_limit), clamp\_limit)

    当传入weight时:

    y=y×weighty=y \times weight

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 待计算的输入张量,最后一维被均分为两部分用于SwiGLU,需为正且能被2整除。 FLOAT16、BFLOAT16、FLOAT32 ND
weight 可选输入 每个token的权重,乘到SwiGLU结果上。元素个数需等于x除最后一维外的维度乘积。 FLOAT32 ND
group_index 可选输入 count模式下的分组token数量。 INT64 ND
y 输出 SwiGLU计算结果,数据类型与x一致,最后一维为x最后一维的一半,其余维度与x一致。 FLOAT16、BFLOAT16、FLOAT32 ND
clamp_limit 可选属性 在激活前对A、B进行截断,默认值-1.0,传入-1.0表示不进行截断,启用截断时必须传入大于0的值。 FLOAT -

约束说明

  • 输入x的最后一维需为正数,且能被2整除(被均分为AB两部分,输出最后一维为输入的一半)。
  • 输入x的数据类型仅支持FLOAT16、BFLOAT16、FLOAT32,且y的数据类型需与x一致。
  • 当传入weight时,数据类型为FLOAT32,且元素个数需等于x除最后一维外的维度乘积。
  • 当传入group_index时,数据类型为INT64,为count模式分组token数,group_index中的值须大于等于0,实际处理行数为group_index所有元素之和与bs两者中的较小值(bsx除最后一维外的维度乘积)。

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_swiglu_group 通过aclnnSwigluGroup接口方式调用SwigluGroup算子。
图模式调用 test_geir_swiglu_group 通过算子IR构图方式调用SwigluGroup算子。