CANN/ops-nn Mish梯度算子

MishGradV2

【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 【免费下载链接】ops-nn 项目地址: https://gitcode.com/cann/ops-nn

产品支持情况

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

功能说明

  • 算子功能:计算 Mish 的反向梯度。
  • 目录 experimental/activation/mish_grad_v2 复用 ascend-kernel/csrc/ops/mish_grad 中已经验证的 AscendC 实现,目录名保留 v2 仅用于区分新实现,对外导出的 ACLNN 接口仍为 aclnnMishBackward
  • op_host/op_api/aclnn_mish_backward_v2.cpp 是对外 ACLNN 两段式接口入口。
  • op_host/op_api/mish_grad_v2.hop_host/op_api/mish_grad_v2.cpp 提供内部 l0op::MishGradV2 封装。

计算公式:

$$ xGrad = grad * \left(tanhx + x * \frac{1 - tanhx^2}{1 + e^{-x}}\right) $$

其中:

$$ tanhx = tanh(softplus(x)),\ softplus(x) = relu(x) + log(1 + e^{-|x|}) $$

调用方式

调用方式是否支持
ACLNN 调用

ACLNN 接口

函数原型

aclnnStatus aclnnMishBackwardGetWorkspaceSize(
    const aclTensor *gradOutput,
    const aclTensor *self,
    aclTensor *gradInput,
    uint64_t *workspaceSize,
    aclOpExecutor **executor);

aclnnStatus aclnnMishBackward(
    void *workspace,
    uint64_t workspaceSize,
    aclOpExecutor *executor,
    const aclrtStream stream);

详细参数和返回值说明见 docs/aclnnMishBackward.md

参数说明

参数名输入/输出描述数据类型数据格式
gradOutput输入上游反向传播输入梯度。FLOAT、FLOAT16、BFLOAT16(仅 Ascend910B 及后续同代 SoC 支持)ND
self输入Mish 正向输入。FLOAT、FLOAT16、BFLOAT16(仅 Ascend910B 及后续同代 SoC 支持)ND
gradInput输出Mish 反向梯度计算结果。FLOAT、FLOAT16、BFLOAT16(仅 Ascend910B 及后续同代 SoC 支持)ND

约束说明

  • gradOutputselfgradInput 的 shape 必须完全一致,不支持 broadcast。
  • gradOutputselfgradInput 的数据类型必须完全一致,不支持隐式类型提升。
  • 支持非连续 Tensor,内部会执行连续化和 ViewCopy
  • 支持空 Tensor。

目录说明

路径说明
examples/test_aclnn_mish_grad_v2.cppaclnnMishBackward 两段式调用示例。
examples/run.sh编译并运行 example 的脚本。
docs/aclnnMishBackward.mdaclnnMishBackward 接口文档。
tests/ut/op_host/test_aclnn_mish_backward.cppop_api 单元测试。

Example 运行

source /usr/local/Ascend/cann/set_env.sh
export LD_LIBRARY_PATH=/usr/local/Ascend/cann/opp/vendors/customize_nn/op_api/lib:${LD_LIBRARY_PATH}
cd <ops-nn-repo>/experimental/activation/mish_grad_v2/examples
bash run.sh

Tests 运行

source /usr/local/Ascend/cann/set_env.sh
cd <ops-nn-repo>
bash build.sh --experimental --ops=mish_grad_v2 -u --opapi -j8 -O2

【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 【免费下载链接】ops-nn 项目地址: https://gitcode.com/cann/ops-nn

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值