| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【feature】mla_preprocess算子新增支持RoPE开关 Co-authored-by: HuangKun8682<huangkun61@huawei.com> # message auto-generated for no-merge-commit merge: !9386 merge personal_prepreocess_optional_RoPE into master 【feature】mla_preprocess算子新增支持RoPE开关 Created-by: HuangKun8682 Commit-by: HuangKun8682 Merged-by: cann-robot Description: ## 描述 本 PR 为 MlaPreprocess 和 MlaPreprocessV2 增加 RoPE 关闭能力,不新增 ACLNN 属性,通过公开 ACLNN 接口中 cos、sin 是否为空控制: - cos != nullptr && sin != nullptr:保持原有 Q-RoPE、K-RoPE 计算,兼容现有调用。 - cos == nullptr && sin == nullptr:关闭 RoPE,仅跳过 Q/K 旋转数学运算。 - 仅有一个输入为空:接口返回参数错误,提示 cos、sin 必须同时传入或同时为空。 ### ACLNN 接口与 IR 兼容性 - MlaPreprocess、MlaPreprocessV2 的 IR 定义中,cos、sin 继续保持 REQUIRED。 - 不修改现有输入的名称、顺序、必选类型和数据类型,避免已有 OM 模型因 IR 输入类型变化而加载失败。 - 不新增算子属性,不改变公开 ACLNN 函数的参数顺序和二进制接口形式。 - 将框架生成的两段式接口作为 aclnnInner* 接口: - aclnnInnerMlaPreprocessGetWorkspaceSize - aclnnInnerMlaPreprocess - aclnnInnerMlaPreprocessV2GetWorkspaceSize - aclnnInnerMlaPreprocessV2 - 为 MlaPreprocess 和 MlaPreprocessV2 实现自定义公开 ACLNN 两段式接口。 - 自定义 GetWorkspaceSize 接口负责校验 cos、sin 是否成对为空;二者同时为空时,构造满足 REQUIRED IR 输入要求的一维空 Tensor,调用对应的 aclnnInner*GetWorkspaceSize。 - 自定义二段执行接口直接调用对应的 aclnnInner* 执行接口。 ### Host InferShape 和 Tiling - cos、sin 继续通过 GetRequiredInputShape 获取。 - Host 侧仅将一维 shape [0] 同时出现识别为关闭 RoPE。 - 正常启用 RoPE 时,cos、sin 的 shape 必须为 [tokenNum, 64]。 - 两者关闭状态不一致,或启用时 shape 不符合要求,InferShape/Tiling 返回失败。 - 将 RoPE 开关写入共享 TilingData 的 enableRope 字段。 - Tiling 入口检查并返回 Init() 的错误状态,避免参数校验失败后继续生成并下发 TilingData。 - 其余必选输入继续通过 GetRequiredInputShape/Desc/Stride 获取。 - 保留 Cache dim0 非连续 stride 支持和相关校验。 ### Device Kernel RoPE 开启时完全沿用原有 Q/K RoPE 路径。 RoPE 关闭时: - Q 路径通过 ProcessRawQ 读取原始 Q-rope 分量,并按照原布局写入 qOut/qRopeOut。 - K 路径跳过 cos、sin 搬运和旋转计算,将原始 K-rope 分量写回原输出及 Cache 位置。 - 保留完整的 Q 输出拼接、KV Cache 写入和 Cache DataCopy。 - Kernel 入口使用有效输入地址作为未使用 RoPE GlobalTensor 的占位地址;RoPE 关闭时不会读取该地址。 以下 Kernel 路径均已适配: - FP16 + INT8 W8A8 - BF16 + INT8 W8A8 - BF16 + BF16 NoQuant ### MlaPreprocessV2 MlaPreprocessV2 复用 MlaPreprocess 的 TilingData、Host Tiling 和 FP16/BF16/NoQuant Kernel 实现,因此同步支持相同的 RoPE 开关语义。 MlaPreprocessV2 独立适配: - 自定义公开 ACLNN 两段式接口及 aclnnInnerMlaPreprocessV2* 调用。 - InferShape 对 RoPE 输入的成对和 shape 校验。 - Kernel 入口的未使用 RoPE 地址处理。 qDownOutFlag、doRmsNorm、qDownOut 的计算和输出语义保持不变。 ### 语义保持 RoPE 关闭只跳过 Q/K 旋转数学运算,不修改以下行为: - MatMul、Dequant、RMSNorm、Quant - Q-nope、CTKV - qDownOut - 输出 Tensor shape - Cache 布局和 Cache DataCopy - 非连续 Cache dim0 stride - 原始 Q-rope/K-rope 在输出和 Cache 中的位置 ### 文档和测试 - 更新 aclnnMlaPreprocess.md 和 aclnnMlaPreprocessV2.md。 - 更新 MlaPreprocess、MlaPreprocessV2 README。 - 更新 ACLNN 示例,展示使用 enableRope ? cos : nullptr 和 enableRope ? sin : nullptr 控制 RoPE。 - 更新 Host InferShape、Host Tiling 和 Kernel UT,覆盖: - cos、sin 均为正常 Tensor。 - cos、sin 均为空。 - 仅有一个为空的非法输入。 - 非法空 shape。 - RoPE on/off Kernel 输出。 - MlaPreprocessV2 的 qDownOutFlag 和 doRmsNorm 正交组合。 ## 关联的 Issue Issue [#4052](https://gitcode.com/cann/ops-transformer/issues/4052) ## 测试 MlaPreprocess 和 MlaPreprocessV2 各构造 300 个 ACLNN 泛化精度用例,每套用例分布如下: | 计算路径 | RoPE on | RoPE off | 合计 | |---|---:|---:|---:| | FP16 + INT8 W8A8 | 40 | 80 | 120 | | BF16 + INT8 W8A8 | 40 | 80 | 120 | | BF16 + BF16 NoQuant | 20 | 40 | 60 | | **合计** | **100** | **200** | **300** | MlaPreprocessV2 用例同时覆盖: | 开关 | RoPE on | RoPE off | 合计 | |---|---:|---:|---:| | qDownOutFlag=false | 50 | 100 | 150 | | qDownOutFlag=true | 50 | 100 | 150 | | doRmsNorm=false | 60 | 120 | 180 | | doRmsNorm=true | 40 | 80 | 120 | 当前j测试结果: - MlaPreprocess:精度测试全量单次执行 294/300 通过;6 个失败 profile 各随机复跑100次,CT 双标杆统计复检 6/6 通过。 - MlaPreprocessV2:精度测试全量单次执行 300/300 通过。 - Kernel、Host Tiling 和 InferShape UT 覆盖 RoPE on/off 及非法输入场景。 [用例脚本](https://gitcode.com/HuangKun8682/aclnn_mla_preprocess_rope) ## 文档更新 更新以下文件: - attention/mla_preprocess/README.md - attention/mla_preprocess/docs/aclnnMlaPreprocess.md - attention/mla_preprocess_v2/README.md - attention/mla_preprocess_v2/docs/aclnnMlaPreprocessV2.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9386 | 3 个月前 | |
fix(pre-commit): 全仓代码规范整改——接口文件(proto/def/aclnn*.h) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13594 merge ci into master fix(pre-commit): 全仓代码规范整改——接口文件(proto/def/aclnn*.h) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5939 ## 描述 全仓代码规范整改系列(本 PR 含两笔独立提交,合计 145 个文件,+1405/-1730;均为头注释/格式类改动,语义等价,无 API 签名、宏、注册结构的实质修改。合入时建议 squash 为单笔): ### 1. 版权头存量修复(ee3ad6013,22 个文件,+4/-100) - 修复重复版权头: moe/moe_init_routing_v4 下 5 个 CMakeLists.txt(历史插入式修复导致单文件两段版权块,第二块残留 in in compliance 旧句式)、moe/moe_token_unpermute_with_ep_grad/tests/ut/op_kernel/CMakeLists.txt(注释正文后悬挂第二个版权块) - 修复双头堆叠:attention/block_sparse_attention/op_kernel/attn_infra/epilogue/block/mxfp4_vf 15 个 vf_*.h(删除独立旧式 "All rights reserved" 头块,保留 CANN 标准头) - 修复旧式许可证头:examples/attention/flash_attn/L0_minimal/ascend_ops/__init__.py("This file is a part of the CANN Open Software" 旧句式,替换为与同目录 ops.py 逐字节一致的标准头) - 全部为头注释删除/替换,OAT 本地验证 22/22 Passed ### 2. 接口文件 clang-format 整改(e1d1fe5b9,123 个文件,+1401/-1630) - 范围(四类接口文件):op_graph/*_proto.h(11)、op_host/*_def.cpp(19)、op_api/aclnn*.{h,cpp}(92)、CMakeLists.txt(1),即 103 .h + 19 .cpp + 1 CMakeLists.txt - clang-format 按 .clang-format 统一格式(列宽 120、指针左对齐 T* p、引用对齐 T& r 等);行尾空白、文件末尾换行、namespace 尾注释空格统一 - 等价性校验:106 个文件去除空白后与基线逐字节全等;17 个文件含超长 #warning / __attribute__((deprecated(...))) 字符串,按列宽拆分为相邻字符串字面量拼接(编译期等价)及长声明换行,语义无变化 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5939(全仓整改总跟踪) ## 测试 - pre-commit 全部钩子本地通过(OAT 22/22 Passed) - 接口文件改动经去空白等价性校验(106 全等 + 17 字符串拼接等价) - CI 流水线(compile/UT)验证 See merge request: cann/ops-transformer!13594 | 1 个月前 | |
fix mlapo check Co-authored-by: zhengyuhao3<zhengyuhao3@huawei.com> # message auto-generated for no-merge-commit merge: !15034 merge master-fix_mlapo into master fix mlapo check Created-by: zhengyuhao3 Commit-by: zhengyuhao3 Merged-by: cann-robot Description: ## 描述 补充mlaPo算子的接口校验约束,保证参数约束与文档、算子实现一致 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6583 ## 测试 example验证ISSUE异常用例正常拦截  ATK精度验证通过200/200 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15034 | 13 天前 | |
fix mlapo check Co-authored-by: zhengyuhao3<zhengyuhao3@huawei.com> # message auto-generated for no-merge-commit merge: !15034 merge master-fix_mlapo into master fix mlapo check Created-by: zhengyuhao3 Commit-by: zhengyuhao3 Merged-by: cann-robot Description: ## 描述 补充mlaPo算子的接口校验约束,保证参数约束与文档、算子实现一致 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6583 ## 测试 example验证ISSUE异常用例正常拦截  ATK精度验证通过200/200 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15034 | 13 天前 | |
fix(pre-commit): 全仓代码规范整改——attention 3/4 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13596 merge common into master fix(pre-commit): 全仓代码规范整改——attention 3/4 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5939 ## 描述 全仓代码规范整改系列——attention 拆分 **3/4**(第 3 批 26 个算子目录:mixed_quant_sparse_flash_mla_metadata ~ quant_lightning_indexer_v2_metadata,按目录字母序均分)。基于仓库 pre-commit 门禁对存量代码做一次性规范收敛: - clang-format 按 .clang-format 统一格式(列宽 120、指针左对齐 T* p、引用对齐 T& r 等) - 行尾空白、文件末尾换行修复 - 规模:513 个文件,+16217/-14903 行,纯格式化改动语义等价,无逻辑变更 - op_graph/*_proto.h、op_host/*_def.cpp、op_api/aclnn*.h 等接口文件及 OWNERS 不在本 PR 改动范围 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5939(全仓整改总跟踪) ## 测试 - pre-commit 全部钩子本地通过 - CI 流水线(compile/UT)验证 See merge request: cann/ops-transformer!13596 | 1 个月前 | |
【feature】mla_preprocess算子新增支持RoPE开关 Co-authored-by: HuangKun8682<huangkun61@huawei.com> # message auto-generated for no-merge-commit merge: !9386 merge personal_prepreocess_optional_RoPE into master 【feature】mla_preprocess算子新增支持RoPE开关 Created-by: HuangKun8682 Commit-by: HuangKun8682 Merged-by: cann-robot Description: ## 描述 本 PR 为 MlaPreprocess 和 MlaPreprocessV2 增加 RoPE 关闭能力,不新增 ACLNN 属性,通过公开 ACLNN 接口中 cos、sin 是否为空控制: - cos != nullptr && sin != nullptr:保持原有 Q-RoPE、K-RoPE 计算,兼容现有调用。 - cos == nullptr && sin == nullptr:关闭 RoPE,仅跳过 Q/K 旋转数学运算。 - 仅有一个输入为空:接口返回参数错误,提示 cos、sin 必须同时传入或同时为空。 ### ACLNN 接口与 IR 兼容性 - MlaPreprocess、MlaPreprocessV2 的 IR 定义中,cos、sin 继续保持 REQUIRED。 - 不修改现有输入的名称、顺序、必选类型和数据类型,避免已有 OM 模型因 IR 输入类型变化而加载失败。 - 不新增算子属性,不改变公开 ACLNN 函数的参数顺序和二进制接口形式。 - 将框架生成的两段式接口作为 aclnnInner* 接口: - aclnnInnerMlaPreprocessGetWorkspaceSize - aclnnInnerMlaPreprocess - aclnnInnerMlaPreprocessV2GetWorkspaceSize - aclnnInnerMlaPreprocessV2 - 为 MlaPreprocess 和 MlaPreprocessV2 实现自定义公开 ACLNN 两段式接口。 - 自定义 GetWorkspaceSize 接口负责校验 cos、sin 是否成对为空;二者同时为空时,构造满足 REQUIRED IR 输入要求的一维空 Tensor,调用对应的 aclnnInner*GetWorkspaceSize。 - 自定义二段执行接口直接调用对应的 aclnnInner* 执行接口。 ### Host InferShape 和 Tiling - cos、sin 继续通过 GetRequiredInputShape 获取。 - Host 侧仅将一维 shape [0] 同时出现识别为关闭 RoPE。 - 正常启用 RoPE 时,cos、sin 的 shape 必须为 [tokenNum, 64]。 - 两者关闭状态不一致,或启用时 shape 不符合要求,InferShape/Tiling 返回失败。 - 将 RoPE 开关写入共享 TilingData 的 enableRope 字段。 - Tiling 入口检查并返回 Init() 的错误状态,避免参数校验失败后继续生成并下发 TilingData。 - 其余必选输入继续通过 GetRequiredInputShape/Desc/Stride 获取。 - 保留 Cache dim0 非连续 stride 支持和相关校验。 ### Device Kernel RoPE 开启时完全沿用原有 Q/K RoPE 路径。 RoPE 关闭时: - Q 路径通过 ProcessRawQ 读取原始 Q-rope 分量,并按照原布局写入 qOut/qRopeOut。 - K 路径跳过 cos、sin 搬运和旋转计算,将原始 K-rope 分量写回原输出及 Cache 位置。 - 保留完整的 Q 输出拼接、KV Cache 写入和 Cache DataCopy。 - Kernel 入口使用有效输入地址作为未使用 RoPE GlobalTensor 的占位地址;RoPE 关闭时不会读取该地址。 以下 Kernel 路径均已适配: - FP16 + INT8 W8A8 - BF16 + INT8 W8A8 - BF16 + BF16 NoQuant ### MlaPreprocessV2 MlaPreprocessV2 复用 MlaPreprocess 的 TilingData、Host Tiling 和 FP16/BF16/NoQuant Kernel 实现,因此同步支持相同的 RoPE 开关语义。 MlaPreprocessV2 独立适配: - 自定义公开 ACLNN 两段式接口及 aclnnInnerMlaPreprocessV2* 调用。 - InferShape 对 RoPE 输入的成对和 shape 校验。 - Kernel 入口的未使用 RoPE 地址处理。 qDownOutFlag、doRmsNorm、qDownOut 的计算和输出语义保持不变。 ### 语义保持 RoPE 关闭只跳过 Q/K 旋转数学运算,不修改以下行为: - MatMul、Dequant、RMSNorm、Quant - Q-nope、CTKV - qDownOut - 输出 Tensor shape - Cache 布局和 Cache DataCopy - 非连续 Cache dim0 stride - 原始 Q-rope/K-rope 在输出和 Cache 中的位置 ### 文档和测试 - 更新 aclnnMlaPreprocess.md 和 aclnnMlaPreprocessV2.md。 - 更新 MlaPreprocess、MlaPreprocessV2 README。 - 更新 ACLNN 示例,展示使用 enableRope ? cos : nullptr 和 enableRope ? sin : nullptr 控制 RoPE。 - 更新 Host InferShape、Host Tiling 和 Kernel UT,覆盖: - cos、sin 均为正常 Tensor。 - cos、sin 均为空。 - 仅有一个为空的非法输入。 - 非法空 shape。 - RoPE on/off Kernel 输出。 - MlaPreprocessV2 的 qDownOutFlag 和 doRmsNorm 正交组合。 ## 关联的 Issue Issue [#4052](https://gitcode.com/cann/ops-transformer/issues/4052) ## 测试 MlaPreprocess 和 MlaPreprocessV2 各构造 300 个 ACLNN 泛化精度用例,每套用例分布如下: | 计算路径 | RoPE on | RoPE off | 合计 | |---|---:|---:|---:| | FP16 + INT8 W8A8 | 40 | 80 | 120 | | BF16 + INT8 W8A8 | 40 | 80 | 120 | | BF16 + BF16 NoQuant | 20 | 40 | 60 | | **合计** | **100** | **200** | **300** | MlaPreprocessV2 用例同时覆盖: | 开关 | RoPE on | RoPE off | 合计 | |---|---:|---:|---:| | qDownOutFlag=false | 50 | 100 | 150 | | qDownOutFlag=true | 50 | 100 | 150 | | doRmsNorm=false | 60 | 120 | 180 | | doRmsNorm=true | 40 | 80 | 120 | 当前j测试结果: - MlaPreprocess:精度测试全量单次执行 294/300 通过;6 个失败 profile 各随机复跑100次,CT 双标杆统计复检 6/6 通过。 - MlaPreprocessV2:精度测试全量单次执行 300/300 通过。 - Kernel、Host Tiling 和 InferShape UT 覆盖 RoPE on/off 及非法输入场景。 [用例脚本](https://gitcode.com/HuangKun8682/aclnn_mla_preprocess_rope) ## 文档更新 更新以下文件: - attention/mla_preprocess/README.md - attention/mla_preprocess/docs/aclnnMlaPreprocess.md - attention/mla_preprocess_v2/README.md - attention/mla_preprocess_v2/docs/aclnnMlaPreprocessV2.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9386 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 | ||
| 1 个月前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 1 个月前 | ||
| 3 个月前 |