当前位置: 首页 > news >正文

CANN BatchedMatmulSoftmax任务

7月社区任务-BatchedMatmulSoftmax算子开发任务书

【免费下载链接】cann-ops-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-ops-competitions

基础信息

  • 技术标签:算子开发
  • 适配硬件:Ascend 950PR/Ascend 950DT
  • 开源仓地址:https://link.gitcode.com/i/18ed5e6c7cc91e04466f00b64a8029e9
  • CANN 版本:算子开源仓指定版本
  • 开发语言:Ascend C

任务概述

本算子实现 Batched Matmul 后接行级 Softmax 的融合算子(Batched Matmul + Softmax Fusion)。Batched 输入矩阵经 Matmul 计算后,其输出送入 Softmax 激活函数。该融合方式是 Attention 机制中的核心计算模式。

算子公式

对每个 batch $b$ 独立计算:

$$ \mathbf{S}_b = \text{row_softmax}\big(\mathbf{A}_b \times \mathbf{B}_b\big) $$

其中行级 Softmax 定义为:

$$ \mathbf{S}_b[m, n] = \frac{\exp\big(\mathbf{M}b[m, n] - \max{n'}(\mathbf{M}b[m, n'])\big)} {\displaystyle\sum{n'=0}^{N-1} \exp\big(\mathbf{M}b[m, n'] - \max{n'}(\mathbf{M}_b[m, n'])\big)} $$

其中 $\mathbf{M}_b = \mathbf{A}_b \times \mathbf{B}_b$,$\mathbf{A}_b$ 形状 $(M, K)$,$\mathbf{B}_b$ 形状 $(K, N)$。Matmul 中间结果在算子内部被 Softmax 消费,不对外暴露。

核心开发要求及验收标准

功能实现要求

  1. 实现融合的 Batched Matmul + 行级 Softmax,单次 kernel launch 完成全部计算。
  2. 沿 batch 维度独立执行 Matmul + Softmax。
  3. 使用 max 归一化确保数值稳定性,防止 exp 溢出。

参数说明

参数名输入/输出/属性描述使用说明数据类型数据格式维度(shape)非连续Tensor
A输入Batched Matmul 左矩阵,形状 (batch, M, K)RowMajor 布局FP16ND3
B输入Batched Matmul 右矩阵,形状 (batch, K, N)ColumnMajor 布局FP16ND3
S输出Softmax 输出矩阵,形状 (batch, M, N)RowMajor 布局FP16ND3

算子约束限制

  • 无特殊约束

测试标准

需参考 CPU 精度标杆自行设计自验证用例,覆盖单 batch 和多 batch 场景、多种问题规模。自验证报告完整、可复现,所有测试用例执行通过。

性能要求

性能标杆为CUTLASS的35_gemm_softmax,算子整体性能需与 0.8 倍 GPU(H100)持平。

精度要求

算子计算精度需满足 AscendOpTest 工具默认阈值。

文档规范要求

  1. 算子设计文档需根据参考模板填写,内容完整、格式规范,且必须通过评审;
  2. 自验证报告需要覆盖所有功能场景,参考xxx算子自验证报告,含测试用例执行日志/截图、整体测试通过截图、性能数据截图,可清晰指导算子使用与测试;
  3. README 文档内容完整、规范。

验收交付件

1, 自测用例、测试结果报告、测试步骤指导文档

2, 算子代码的私仓邀请链接、代码仓路径、分支、算子目录

PR 申请合入

测试通过后,在 Catlass 代码仓提交 PR 申请,申请将开发完成的算子合入https://link.gitcode.com/i/18ed5e6c7cc91e04466f00b64a8029e9,具体目录参考该PR:https://link.gitcode.com/i/18ed5e6c7cc91e04466f00b64a8029e9/pull/678 。

参考资料

  1. 文档类:Ascend C算子开发文档、CATLASS创新样例开发流程指南
  2. 课程类:Ascend C在线课程
  3. 参考样例:https://link.gitcode.com/i/18ed5e6c7cc91e04466f00b64a8029e9/blob/master/examples/44_quant_matmul_full_loadA_tla

环境获取

  1. 开源仓提供100小时免费时长,请不使用时及时关闭,用时耗尽前请务必保存相关资料,建议及时提交备份。

  2. 使用 hidevlab notebook 算力(https://hidevlab.huawei.com/online-develop-intro?from=hiascend)

  3. 如需额外环境资源,请联系昇腾小助手。

特别注意事项

  1. 开发过程需严格遵循 Ascend C 编程规范及算子开发相关要求;
  2. 所有交付件需提前完成自验证,确认符合验收标准后再提交验收申请;
  3. 开发前请务必阅读【社区任务】流程及注意事项,会例行更新。

【免费下载链接】cann-ops-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-ops-competitions

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

http://www.jsqmd.com/news/1129699/

相关文章:

  • three.quarks核心组件详解:ParticleEmitter与ParticleSystem
  • Wexflow定时任务与触发器:实现智能调度与事件驱动的自动化
  • 如何快速使用d2s-editor:暗黑破坏神2存档编辑器的完整入门指南
  • 如何使用Tilt Brush Toolkit Unity SDK:从安装到实现3D交互的终极教程
  • Serverless Node.js Starter vs 其他框架:为什么它是Node.js无服务器开发的首选
  • 3步搞定!免费通达信缠论插件让你告别手工画图的烦恼
  • MiniCPM-V 4.6 部署实战:基于 GPUStack 与 SGLang 的端侧多模态模型部署
  • Opslane路线图分析:未来功能规划与技术发展方向
  • OpenAI Responses Starter App错误处理与调试:常见问题解决方案
  • IOIO蓝牙连接实战:解决Android设备无线控制硬件难题
  • LoG核心技术解析:Level of Gaussians如何实现大规模场景高效渲染
  • Pillar Valley游戏社区建设:从开源项目到活跃社区的完整路线图
  • kiUi自动布局原理深入剖析:让界面元素智能排列的秘密
  • CANN社区bessel_i0 API开发任务
  • 卡丁车语音识别过程
  • 如何快速上手CSSOM.js?从安装到基础使用的简明教程
  • 提升前端数据处理效率:Table To JSON与同类工具的终极对比分析
  • 打破语言壁垒:Translumo实时屏幕翻译工具让外语世界触手可及
  • 统信UOS V20 控制中心:3种网络账户同步配置实战与1个云同步避坑点
  • 解决resume.io下载限制:resumeio-to-pdf工具常见问题与解决方案
  • django-postgres-extra终极指南:解锁PostgreSQL全部潜力的Django扩展
  • 终极Sunshine游戏串流卸载指南:如何彻底清理并释放系统资源
  • d3d8to9完整指南:让老游戏在Windows 10/11上完美运行的免费解决方案
  • 为什么选择Upmin Admin Ruby?Rails开发者必备的10个理由
  • 终极Android组件化方案对比:AndroidComponentizeLibs深度解析六大主流框架
  • 10分钟上手Vitis HLS:基于Introductory-Examples的快速入门教程
  • Denoising Diffusion GANs数学原理剖析:从变分推断到采样加速的奥秘
  • Self-Refine部署实战:如何在生产环境中运行自我优化AI
  • Traduccion项目完全指南:如何参与You Don‘t Know JS西班牙语翻译
  • kiUi性能优化技巧:让你的OpenGL界面流畅运行的10个方法