Developers
Download
[object Object]

[object Object][object Object]
  • [object Object]Ascend 950PR/Ascend 950DT[object Object]:支持
[object Object][object Object]
  • [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:不支持
[object Object][object Object]
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:不支持
[object Object][object Object]
  • [object Object]Atlas 200I/500 A2 推理产品[object Object]:不支持
[object Object][object Object]
  • [object Object]Atlas 推理系列产品[object Object]:不支持
[object Object][object Object]
  • [object Object]Atlas 训练系列产品[object Object]:不支持
[object Object][object Object]
  • 接口功能:执行SwiGLU激活,输出与输入x相同数据类型的激活结果。

  • 计算公式:

    令输入x的最后一维大小为D,左半部分为A,右半部分为B(即[object Object][object Object][object Object])。

    [object Object]大于0时,先对A、B进行截断:

    A=min(A,clampLimit)A = min(A, clampLimit) B=min(max(B,clampLimit),clampLimit)B = min(max(B, -clampLimit), clampLimit)

    计算SwiGLU:

    y=silu(A)×B=A1+eA×By = silu(A) \times B = \frac{A}{1 + e^{-A}} \times B

    [object Object]非空时,按token乘以权重:

    y=y×weightOptionaly = y \times weightOptional

    [object Object]非空时,按count模式控制实际处理的token数:实际处理的token数为[object Object]所有元素之和与[object Object]两者中的较小值,其中[object Object]为x除最后一维外的维度乘积。

[object Object]

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

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

    [object Object]
  • 返回值:

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

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

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

    [object Object]
  • 返回值:

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

[object Object]
  • 不支持空Tensor:输入x、weightOptional、groupIndexOptional均不支持空Tensor(其中weightOptional、groupIndexOptional可传入空指针,但传入时不可为空Tensor)。
  • 不支持非连续Tensor:输入x、weightOptional、groupIndexOptional及输出out均需为连续Tensor。
  • 输入x的最后一维必须为偶数(被均分为A、B两部分,输出最后一维为输入的一半)。
  • 输入x的数据类型仅支持FLOAT16、BFLOAT16、FLOAT32,且out的数据类型需与x一致。
  • 确定性计算:aclnnSwigluGroup默认为确定性实现,暂不支持非确定性实现。
[object Object]

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

[object Object]