| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
修改aclnn中的乱码 Co-authored-by: zhouwenfang<zhouwenfang3@h-partners.com> # message auto-generated for no-merge-commit merge: !8373 merge master into master 修改aclnn中的乱码 Created-by: zhouwenfang Commit-by: zhouwenfang Merged-by: cann-robot Description: ## 描述 文档中存在乱码 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4632 ## 测试 NA ## 文档更新 activation/celu_v2/docs/aclnnCelu&aclnnInplaceCelu.md activation/elu_grad_v2/docs/aclnnEluBackward.md matmul/quant_matmul_dequant/docs/aclnnQuantMatmulDequant.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8373 | 1 天前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 1 个月前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 1 个月前 | |
[CANNBOT]soft_margin_loss_grad适配Ascend950 Ascendc实现 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6542 merge 0624 into master [CANNBOT]soft_margin_loss_grad适配Ascend950 Ascendc实现 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - 算子功能:求SoftMarginLoss反向传播的梯度值。 - 计算公式: SoftMarginLoss的前向计算公式如下: $$ loss_i = ln(1 + exp(-self_i \cdot target_i)) $$ 对 $self$ 求偏导得到反向梯度: $$ out = cof \cdot \frac{-target \cdot exp(-self \cdot target)}{1 + exp(-self \cdot target)} \cdot grad\_output $$ 其中reduction为mean时 $cof = 1/N$,否则 $cof = 1.0$。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/3600 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!6542 | 1 个月前 | |
celuV2算子精度修改 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !7130 merge celu_v2_precision_fix into master celuV2算子精度修改 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 数值稳定的 CeluV2 负分支 expm1 实现(Kahan 恒等式 + |u| 双重 guard),修复 v1 在小 alpha 尾部 e 溢出导致 NaN/-0 污染正分支的精度问题。附带:Compute 拆分为可读子阶段;tiling UB 逻辑缓冲数以具名常量表达(消除魔鬼数字)。逻辑已真调 NPU 验收。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/3900 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7130 | 1 个月前 | |
celuV2算子精度修改 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !7130 merge celu_v2_precision_fix into master celuV2算子精度修改 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 数值稳定的 CeluV2 负分支 expm1 实现(Kahan 恒等式 + |u| 双重 guard),修复 v1 在小 alpha 尾部 e 溢出导致 NaN/-0 污染正分支的精度问题。附带:Compute 拆分为可读子阶段;tiling UB 逻辑缓冲数以具名常量表达(消除魔鬼数字)。逻辑已真调 NPU 验收。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/3900 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7130 | 1 个月前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 1 个月前 | |
[CANNBOT]celu_v2 和 fast_gelu_v2 算子适配Ascend950 Ascendc实现 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !5149 merge 0520 into master [CANNBOT]celu_v2 和 fast_gelu_v2 算子适配Ascend950 Ascendc实现 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> CeluV2 $$ CELU(x) = \max(0, x) + \min(0, \alpha \cdot (\exp(x / \alpha) - 1)) $$ - x: 输入张量 - alpha: 激活系数,默认1.0,不能为0 - 当 x ≥ 0 时输出 x;当 x < 0 时输出 α·(exp(x/α) - 1),趋近于 -α --- FastGeluV2 $$ FastGeluV2(x) = x \cdot \left( sgn(x) \cdot \left[ -0.1444 \cdot \left( \text{clip}(|0.7071 \cdot x|, \max=1.769) - 1.769 \right)^2 + 0.5 \right] + 0.5 \right) $$ 其中: $$ sgn(x) = \frac{x + 10^{-12}}{|x + 10^{-12}|} $$ - x: 输入张量 - 通过分段多项式逼近标准 GeLU,避免 exp/erf 调用 - clip 将 |0.7071·x| 限制在 [0, 1.769] 范围内,超出后输出趋于线性 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/2561 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> CeluV2 共 165 条测试用例,汇总如下: 按数据类型 ┌──────────┬───────┐ │ 数据类型 │ 数量 │ ├──────────┼───────┤ │ fp32 │ 86 条 │ ├──────────┼───────┤ │ fp16 │ 79 条 │ └──────────┴───────┘ 按测试类别 ┌───────────┬───────┬─────────────────────────────────────────────────────────────────────────────┐ │ 类别 │ 数量 │ 说明 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ alpha变参 │ 67 条 │ alpha=0.1/0.5/2.0/10/100/1000/-0.5/-1/-2/-0.001/1e-6 等,覆盖正负、极大极小 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 边界对齐 │ 28 条 │ shape=15/16/31/32/33/63/64/65/127/128/129/255/256/257,测试 block 对齐边界 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 基础shape │ 25 条 │ 1D~8D 标准 shape,alpha=1.0 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 非对齐 │ 16 条 │ shape=3/5/13/17/37/97/500/1000,非2的幂次 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 大shape │ 7 条 │ 500K/1M/100x100x100 等大张量 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 标量shape │ 6 条 │ shape=1/2/7 的极小张量 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 奇异shape │ 6 条 │ 1x1/1x1x1/1x1x1x1 等全1维度 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 特殊值 │ 5 条 │ 零值输入、极大值输入、极小值输入 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 压力测试 │ 5 条 │ 2M/5M/512x1024 等超大张量 │ └───────────┴───────┴─────────────────────────────────────────────────────────────────────────────┘ FastGeluV2 测试覆盖总结 ┌────────────┬─────────────────────────────────────────────────┐ │ 维度 │ 覆盖情况 │ ├────────────┼─────────────────────────────────────────────────┤ │ 总用例数 │ 248(TTK Kernel 直调) │ ├────────────┼─────────────────────────────────────────────────┤ │ 数据类型 │ float32, float16, bfloat16 │ ├────────────┼─────────────────────────────────────────────────┤ │ Shape 维度 │ 空张量 [0] ~ 5D,含 53 种 unique shape │ ├────────────┼─────────────────────────────────────────────────┤ │ 元素数量 │ 0 ~ 50,000,000(五千万) │ └────────────┴─────────────────────────────────────────────────┘ 数据值域: ┌─────────────────────────────────────────┬────────────────────────────────────┐ │ 区间 │ 说明 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-0.01, 0.01] / [-0.001, 0.001] │ 极小值,近零区域 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-0.1, 0.1] │ 小值区域 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-1.0, 1.0] │ clip 阈值内(0.7071*x < 1.769) │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-3.0, 3.0] / [-5.0, 5.0] │ 标准范围(主测试区间) │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-10.0, 0.0] / [0.0, 10.0] │ 单侧值域(全负/全正) │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [0.5, 5.0] / [1.0, 100.0] │ 正值偏移/大正值 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-50.0, 50.0] / [-100.0, 100.0] │ 宽范围(clip 饱和区) │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ (3.4e+37, 3.4e+38) / (-3.4e+38, -3.4e+37) │ fp32 极大/极小值 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ (6.0e+4, 6.55e+4) / (-6.55e+4, -6.0e+4) │ fp16 极大/极小值 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ (3.3e+37, 3.39e+38) / (-3.39e+38, -3.3e+37) │ bf16 极大/极小值 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ denormal: 1e-40~1e-38(fp32), │ 次正规数 │ │ 5.96e-8~6.1e-5(fp16), 9.2e-41~1.17e-38(bf16) │ │ └─────────────────────────────────────────┴────────────────────────────────────┘ 测试场景: - 空张量 [0] → 空输出(fp32/fp16/bf16 各 1 条) - 单元素 [1] / [1,1] → 最小有效输入 - 对齐 shape(8 的倍数)→ 无 padding 路径 - 非对齐 shape(4,7,13,15,31,127,255,1023)→ tail 处理路径 - 多维 2D~5D → 高维张量展平处理 - 大规模 5000×10000 / 50000000 → 多核并行 + 内存压力 - 极大值(接近 dtype max)→ 溢出/饱和行为 - 极小值(接近 dtype min)→ 溢出/饱和行为 - 次正规数(denormal)→ 精度下限行为 - 11 种数据分布 × 3 种 dtype 交叉覆盖 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5149 | 2 个月前 | |
Modifying the doc tools scanning error Co-authored-by: zhouwenfang<zhouwenfang3@h-partners.com> # message auto-generated for no-merge-commit merge: !7001 merge master into master Modifying the doc tools scanning error Created-by: zhouwenfang Commit-by: zhouwenfang Merged-by: cann-robot Description: ## 描述 Modifying the doc tools scanning error ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3818 ## 测试 NA ## 文档更新 celu_v2/README.md relu6/README.md relu6_grad/README.md softshrink_grad/docs/aclnnSoftshrinkBackward.md swiglu_group_quant_grad/README.md swiglu_group_quant_grad/aclnnSwigluGroupQuantGrad.md group_norm_swish/docs/aclnnGroupNormSwish.md p_relu_grad_reduce/README.md p_relu_grad_update/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7001 | 1 个月前 |
CeluV2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
功能说明
- 算子功能:激活函数Celu(Continuously Differentiable Exponential Linear Units)。
- 计算公式:
CELU(x)=max(0,x)+min(0,α∗(exp(x/α)−1))CELU(x) = \max(0,x) + \min(0, \alpha \ast (\exp(x/\alpha) - 1)) CELU(x)=max(0,x)+min(0,α∗(exp(x/α)−1))
其中:
-
x: 输入张量
-
alpha: CELU公式中的激活系数,默认值为1.0
参数说明
| 参数名 | 输入/输出 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 公式中的'x',表示CELU激活函数的输入张量。支持空Tensor,支持非连续Tensor,维度支持0-8。 | FLOAT16、FLOAT32、DT_BF16 | ND |
| alpha | 属性 | CELU公式中的激活系数,默认值为1.0,不能为0。 | FLOAT | - |
| y | 输出 | 表示x经CELU计算得到的输出张量,shape和dtype与输入x一致。支持非连续Tensor。 | FLOAT16、FLOAT32、DT_BF16 | ND |
约束说明
无。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_celu.cpp | 通过aclnnCelu&aclnnInplaceCelu接口方式调用CeluV2算子。 |