MishGradV2
【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: 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.h和op_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 |
约束说明
gradOutput、self和gradInput的 shape 必须完全一致,不支持 broadcast。gradOutput、self和gradInput的数据类型必须完全一致,不支持隐式类型提升。- 支持非连续 Tensor,内部会执行连续化和
ViewCopy。 - 支持空 Tensor。
目录说明
| 路径 | 说明 |
|---|---|
| examples/test_aclnn_mish_grad_v2.cpp | aclnnMishBackward 两段式调用示例。 |
| examples/run.sh | 编译并运行 example 的脚本。 |
| docs/aclnnMishBackward.md | aclnnMishBackward 接口文档。 |
| tests/ut/op_host/test_aclnn_mish_backward.cpp | op_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上加速计算。 项目地址: https://gitcode.com/cann/ops-nn
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



