已开启
[Requirement|需求建议]: 新增silu_and_mul算子 #5315
yangliuyang_513989创建于  8月29日
yangliuyang_513989
8月29日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

SiluMul 算子完成Silu 激活与 Mul 乘算融合计算,计算逻辑:(y = silu(x) * other),其中 (silu(x)=x*sigmoid(x));该算子常用于大模型 Transformer 结构的 FFN 模块,将 silu 激活、乘法两步运算融合,减少中间张量内存读写开销,提升模型推理性能。

算子文档参考:https://gitcode.com/cann/ops-nn/blob/master/experimental/activation/silu_mul/docs/aclnnSiluMul.md

当前aclnnSiluMul算子在 ops‑nn 仓库中已有实现,但暂未完成昇腾 950 芯片的算子适配。当大模型业务部署到昇腾 950 硬件执行时,该算子无 NPU 原生实现,会触发 CPU fallback 回退执行,带来明显性能损耗、增加设备间数据拷贝开销,严重影响大模型推理吞吐与时延,部分场景甚至出现业务执行失败。
本次需求目标:在 ops‑nn 仓 experimental/activation/silu_mul 模块下完成 aclnnSiluMul 算子针对昇腾 950 芯片完整适配开发,补充昇腾 950 平台 tiling 策略、内核实现,完成精度、性能专项验证,保障算子在昇腾 950 芯片原生 NPU 上稳定、高性能运行。

Origin(信息来源)

待补充

Benefit / Necessity (价值/作用)

  1. 补齐昇腾 950 算子原生能力:补齐 aclnnSiluMul 在昇腾 950 平台的 NPU 实现,消除该算子只能回退 CPU 执行的短板,避免跨设备数据拷贝开销。
  2. 大模型性能收益:SiluMul 为 LLM 大模型 FFN 层高频算子,算子融合实现可省掉 silu 输出中间张量的读写,充分释放昇腾 950 硬件算力,降低推理时延、提升大模型推理吞吐量。
  3. 业务落地支撑:支撑基于昇腾 950 的大模型推理业务顺利迁移部署,解决模型因算子缺失无法充分发挥硬件算力的问题。
  4. 应用场景:主要用于大语言模型 LLM 推理、Transformer 类模型离线 / 在线推理场景,覆盖 Chat 类大模型、多模态大模型 FFN 网络分支计算。
  5. 生态完善:完善 ops‑nn 仓 experimental 模块对昇腾 950 芯片算子覆盖,提升昇腾 950 大模型算子生态完备性。

Design(设计方案)

总体思路

复用 ops‑nn 现有 aclnnSiluMul 对外 API 接口与上层框架逻辑,不修改对外接口;新增昇腾 950 芯片分支的 tiling 切分逻辑与 NPU 内核实现;算子数学逻辑保持:(y = (x * sigmoid(x)) * other);充分复用昇腾 950 硬件向量、sigmod 指令、UB 缓存资源,优化张量分片策略,减少 DDR‑UB 之间数据搬移;完成功能、精度、性能测试,保障昇腾 950 上算子效果,同时保证不破坏其他芯片平台原有算子能力。

开发步骤

  1. 算子逻辑梳理:对齐 aclnnSiluMul 原有算子定义,确认输入输出约束、广播规则、支持数据类型;结合昇腾 950 硬件 UB、指令集特性评估内核实现方案。
  2. 上层工程适配:在ops‑nn/experimental/activation/silu_mul模块内增加昇腾 950 芯片分支编译、调度逻辑,对外aclnnSiluMul接口保持不变。
  3. Tiling 策略开发:针对昇腾 950 硬件 UB 大小,开发 tiling 逻辑,对输入张量做分片切分,合理规划 UB 内存,处理输入广播场景下的分片逻辑,输出 tiling 参数供内核使用。
  4. NPU 内核实现:内核内完成连续计算:sigmoid(x) → x * sigmoid(x) → silu_result * other,融合三步计算,不生成中间张量落 DDR,充分利用片上 UB,调用昇腾 950 硬件指令完成计算。
  5. 验证测试
    • 功能测试:多维度、广播场景、多数据类型用例,验证 shape 推导、输入校验正确性;
    • 精度比对:和 CPU 基准计算结果做精度对标,误差满足算子精度阈值;
    • 性能调优:优化流水线、数据搬移,降低时延,提升算子吞吐;
    • 回归测试:验证昇腾 910 等其他芯片平台原有 aclnnSiluMul 功能不受改动影响。
  6. 交付合入:代码提交 ops‑nn 仓库,同步更新 aclnnSiluMul.md 文档,补充昇腾 950 支持说明
likedislike
yuning_chenyuning_chen成员
8月29日 将 yangliuyang_513989 设为负责人
Cchenqi_814540成员
12 天前 关联了pull request:新增 ascend950 (Atlas A5) 芯片适配
Cchenqi_814540成员
12 天前 关联了pull request:新增 ascend950 (Atlas A5) 芯片适配
Cchenqi_814540成员
11 天前 关联了pull request:新增 ascend950 (Atlas A5) 芯片适配
yangliuyang_513989
11 天前 评论:
likedislike