华为CANN/ops-transformer:MatmulSwiglu融合算子

发布时间:2026/7/12 16:42:03

华为CANN/ops-transformer:MatmulSwiglu融合算子 MatmulSwiglu【免费下载链接】ops-transformer本项目是CANN提供的transformer类大模型算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-transformer产品支持情况产品是否支持Ascend 950PR/Ascend 950DT×Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品×Atlas 推理系列产品×Atlas 训练系列产品×功能说明算子功能将门控投影gate_proj/up_proj的 MatMul 与 SwiGLU 激活融合为单算子用于大模型 FFN/MLP 前向。gate、up 两路共享同一激活x权重以[K, 2N]打包前 N 列 gate、后 N 列 up。计算公式$$ [gate \mid up] x weight ( bias), \quad y SiLU(gate) \ast up, \quad SiLU(a) a \ast sigmoid(a) $$其中x输入激活形状[M, K]。weight打包权重形状[K, 2N]transpose_weighttrue时为[2N, K]。bias可选偏置形状[2N]。y输出形状[M, N]N 2N / 2。中间结果[M, 2N]在片上L0C→UB就地完成 SwiGLU不落回 GM。参数说明参数名输入/输出/属性描述数据类型数据格式x输入激活张量形状 [M, K]M 为前置维之积。FLOAT16、BFLOAT16、FLOAT32NDweight输入打包权重形状 [K, 2N]前 N 列 gate后 N 列 uptranspose_weighttrue 时为 [2N, K]。类型同 x。FLOAT16、BFLOAT16、FLOAT32NDbias输入可选偏置形状 [2N]。固定为 FLOAT32在 cube 内以 fp32 累加不随 x 变化。自动生成的 aclnn 接口会对其做非空校验无偏置时传全 0 张量。FLOAT32NDtranspose_weight属性weight 是否转置默认 false。true 时 weight 形状为 [2N, K]。BOOL-y输出结果张量形状 [M, N]N 2N / 2。类型同 x。FLOAT16、BFLOAT16、FLOAT32ND约束说明x 的 rank ≥ 2weight 的 rank 2且 weight 的 2N 维必须为偶数。weight 的 K 维需与 x 的 K 维一致。bias 固定为 FLOAT32且不能传 nullptr自动生成的 aclnn 接口会做非空校验无偏置时传形状为[2N]的全 0 张量。x、weight、y 的数据类型需一致。调用说明调用方式样例代码说明aclnn接口test_aclnn_matmul_swiglu.cpp通过 aclnnMatmulSwiglu 接口方式调用 MatmulSwiglu 算子。【免费下载链接】ops-transformer本项目是CANN提供的transformer类大模型算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-transformer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻