| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
experimental/posembedding文件下rotary_stride算子的README.md修改 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14830 merge master into master experimental/posembedding文件下rotary_stride算子的README.md修改 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 experimental/posembedding文件下rotary_stride算子的README.md修改 ## 关联的Issue 关联Issue [#6004](https://gitcode.com/cann/ops-transformer/issues/6004) <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 修改docs/zh,experimental ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14830 | 3 天前 | |
docs: fix BlitzSparseAttention types and documentation typos Co-authored-by: zzzzzzyf_<zhouyunfei10@huawei.com> # message auto-generated for no-merge-commit merge: !13770 merge fix/documentation-issues-20261013 into master docs: fix BlitzSparseAttention types and documentation typos Created-by: zzzzzzyf_ Commit-by: zzzzzzyf_ Merged-by: cann-robot Description: ## 描述 合并修复当前指派给贡献者的 9 个文档 Issue。共修改 26 个 Markdown 文件,新增 49 行、删除 50 行;修正错字、重复文字、标题层级、术语及 BlitzSparseAttention 量化参数表。 参数类型按源码注册核对;将 quantScale2/quantOffset2 表对齐为 FLOAT32/BFLOAT16,保留产品与输入场景约束。空 Tensor 处理按实际 aclnn 实现描述,不机械替换成 AscendCL。 不改算子实现、编译脚本或计算逻辑。文档 C++ 示例仅统一 gama/gamma 变量拼写,benchmark 示例仅补全注释。 ## 关联的Issue - [#5853](https://gitcode.com/cann/ops-transformer/issues/5853):修正 BlitzSparseAttention 量化参数表,与当前 OpDef 对齐并保留场景限制。 - [#5969](https://gitcode.com/cann/ops-transformer/issues/5969):修正指定 attention 文档的拼写、重复词、标点和标题层级。 - [#5977](https://gitcode.com/cann/ops-transformer/issues/5977):修正指定 docs/zh 文档的术语、拼写及重复描述。 - [#5981](https://gitcode.com/cann/ops-transformer/issues/5981):补全 BNSD 注释,修正空 Tensor 处理的 aclnn 表述。 - [#6003](https://gitcode.com/cann/ops-transformer/issues/6003):修正 rope_matrix 文档三处英文拼写。 - [#6038](https://gitcode.com/cann/ops-transformer/issues/6038):修正 combine_add_rms_norm 文档的错字和冗余文字。 - [#6041](https://gitcode.com/cann/ops-transformer/issues/6041):修正 dispatch 文档的量化参数列举、默认值及重复词。 - [#6073](https://gitcode.com/cann/ops-transformer/issues/6073):修正 lightning_indexer 测试文档标题层级及重复条目。 - [#6075](https://gitcode.com/cann/ops-transformer/issues/6075):修正 PromptFlashAttention 的 AI Core 和 aclnn 表述。 本轮另核查 #6045、#5733:#6045 原问题段落已从 master 移除,无需修改;#5733 涉及编译目标兼容性,不纳入纯文档提交。 ## 测试 - 38 组定向修改均核对旧文本与匹配次数;确认仅包含目标 Markdown 文件。 - 修改前后链接目标、代码块数量与语言标记不变;示例除变量一致性重命名、注释及围栏中的说明文字外不变。 - 参数表与当前 OpDef、空 Tensor 处理代码核对。 - 保留原文件换行方式; git -c core.whitespace=cr-at-eol diff --check 通过。 - 按 CI 同版本 pre-commit-hooks v4.6.0 对全部 26 个文档执行 trailing-whitespace(保留 Markdown 双空格换行)和 end-of-file-fixer,均通过;修正 benchmark README 原有的单个行尾空格。 - 未编译文档示例或执行 NPU 测试,本次为静态文档核查。 ## 文档更新 涉及 attention、docs/zh、experimental 与 mc2 下的指定 README 和接口文档。 ## 类型标签 - [x] 📝 文档更新 See merge request: cann/ops-transformer!13770 | 19 天前 | |
ci(pre-commit): OAT 检查切换为远程 compliance hook Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13627 merge moonep_8 into master ci(pre-commit): OAT 检查切换为远程 compliance hook Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/6573 ## 描述 #### 🔧 配置变更 按社区统一接入方式(issue #6573,chenyx_2012)切换:OAT 合规检查由「仓内自维护 oat_check.sh + repo: local」切换为「HiAgent/compliance 远程 Python hook」,业务仓不再维护 OAT 脚本,OAT 版本由 rev 标签(v1.0.6)统一管控。 ## 改动(3 文件) - .pre-commit-config.yaml:repo: local 的 oat-check 块替换为 repo: https://gitcode.com/HiAgent/compliance, rev: v1.0.6(id: oat-check,pass_filenames/stages/verbose 与原配置一致) - 删除 scripts/oat_check.sh(本地脚本退役) - .gitignore 补 oat_reports/(远程 hook 报告目录) ## 行为等价性评估(已读 compliance v1.0.6 源码) 本地脚本的全部修复点均由远程 hook 覆盖,且架构更优: | 本地脚本修复点 | 远程 hook 实现 | |---|---| | 120KB 分批(E2BIG 防护) | **in-process 调用**(import oat 直接跑 pipeline),无 subprocess argv 限制,问题不存在 | | RC=1 无报告阻断 | report_file.is_file() 守卫:无报告且 RC!=0 → return 1 阻断 ✅ | | 跨批次旧报告复用 | state_file 按 HEAD SHA 聚合 + lock,_cleanup_stale_run_state 清理同 HEAD 残留 ✅ | | done-marker 去重 | "one terminal report per HEAD" 终局报告模型 + CI 分批调度取代 ✅ | | OAT.xml 支持 | _resolve_oat_xml 读仓根 OAT.xml ✅ | ## 测试 - YAML 解析通过;pre-commit run oat-check 实测通过(hook 环境自动克隆 compliance 仓并安装 OAT) - 报告目录变化:pre_commit_reports/oat_result.txt → oat_reports/result.txt(已 gitignore) ## 类型标签 - [x] 🔧 配置变更 See merge request: cann/ops-transformer!13627 | 6 天前 | |
docs(posembedding): 补充4个RoPE融合pass文档 Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !13558 merge docs/rope_fusion_pass into master docs(posembedding): 补充4个RoPE融合pass文档 Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 为 posembedding 下 4 个已开源的 RoPE 融合 pass 补充配套文档,沿用 gmm/grouped_matmul/docs/GroupedMatmulTransFusionPass.md 的文档范式(融合模式配图 + 支持的型号 + 使用约束): - RotaryMul2RotaryPositionEmbeddingFusionPass.md:RotaryMul -> RotaryPositionEmbedding(mode=0) - RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass.md:RotaryMulGrad -> RotaryPositionEmbeddingGrad(mode=0),含 need_backward 属性语义 - InterleaveRope2RotaryPositionEmbeddingFusionPass.md:InterleaveRope -> RotaryPositionEmbedding(mode=3) - ApplyRotaryPosEmbTensorMoveFusionPass.md:删除 query/key 输入前冗余 TensorMove 节点(无平台门控) 各配 1 张融合示意 PNG(docs/zh/figures/,风格与 GroupedMatmulTransFusionPass 配图一致)。 前 3 个 pass 仅在 regbase 架构平台生效(源码按 NpuArch 判别,映射见 pass 源码注释);文档"支持的型号"小节按仓内 pass 文档惯例(同 DAV_3510 门控的 Conv2dToConv2dV2FusionPass)仅标注 Ascend 950PR&950DT 系列产品。 Closes #5929 ## 关联的Issue 关联Issue #5929 ## 测试 纯文档改动,不涉及代码逻辑;已本地校验图片引用路径有效、文档符合仓库中英文排版与行宽规范。 ## 文档更新 新增上述 4 篇融合 pass 文档及 4 张配图。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: 🤖 Generated with [Claude Code](https://claude.com/claude-code) See merge request: cann/ops-transformer!13558 | 22 天前 | |
960芯片型号支持 Co-authored-by: yangyajie<yangyajie3@huawei.com> # message auto-generated for no-merge-commit merge: !14638 merge master into master 960芯片型号支持 Created-by: yangyajie Commit-by: yangyajie Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14638 | 3 天前 | |
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 个月前 | |
feat(gmm): 新增A4W4场景 GroupedMatmulActivation 新算子 Co-authored-by: jayshu<shuhaojie@huawei.com> # message auto-generated for no-merge-commit merge: !13929 merge jayshu-gmmactivation-independent-def into master feat(gmm): 新增A4W4场景 GroupedMatmulActivation 新算子 Created-by: jayshu Commit-by: jayshu Merged-by: cann-robot Description: ## 描述 新增独立 GroupedMatmulActivation 算子及 GroupedMatmulActivationWeightNz ACLNN、grouped_matmul_activation TorchExtension 接口,支持 MXFP4 E2M1 A4W4、WeightNZ 权重、E8M0 scale,直接输出单个 BF16 y,不进行输出 MX 量化,不创建、不传入、不写回 yScale。 主要改动: - 新增独立 gmm/grouped_matmul_activation 模块,包含 def、proto、infershape、tiling、kernel、ACLNN/Torch 接口、文档及测试,复用现有 TensorAPI/Blaze concat-N 实现。 - 新增 aclnnGroupedMatmulActivationWeightNzGetWorkspaceSize / aclnnGroupedMatmulActivationWeightNz,支持转置和非转置权重视图。actType 为字符串,仅支持 "swiglu";bias 为动态 TensorList,当前要求为空。 - 新接口仅支持 SwiGLU mode 2,执行前后分半分支、clamp、alpha/bias 和最终 BF16 转换。旧 WeightNzV3 的 A4W4 BF16 mode 0/2 路径保留兼容处理,不将 mode 0 宣传为新接口支持范围。 - 补充独立 op_def 类型组合、tiling 路由及 kernel 的直接 BF16 epilogue 接入;A4W4 的 K/N 均要求按 128 对齐。内部 transpose 属性由 ACLNN 从 stride 推导,生成转置/非转置两个模板 key(0/1)。恢复旧 V2 def,保留旧 V2 FP4 mode 0 的量化输出路由。 - 修复转置权重在视图归一化前错误比较 K 的问题,在归一化后检查矩阵维度,并校验权重与 scale 视图一致性。 - 新增仓内 TorchExtension 封装,统一 Meta 与实际接口的维度、TensorList 数量和 K/N 对齐要求,检查设备一致性,保留 CPU group_list 支持;Torch 层检查后将 CPU group_list 复制到 NPU,原始 ACLNN 要求 device group_list。 - 修复 Torch act_type.c_str() 临时值的 JIT 编译问题,空 bias 使用零元素 BF16 descriptor 完成 binary 选择。 本 PR 依赖 ops-tensor PR 448 的直接 BF16 epilogue 支持。新增行为按 A4W4/BF16 类型组合启用,既有 MXFP8 输出路径保持原输出语义;测试结果不等同于旧场景全量回归结论。 ## 关联的Issue 关联需求 Issue:https://gitcode.com/cann/ops-transformer/issues/6217 ## 测试 二级冒烟+泛化验证 ## 文档更新 - 新增 gmm/grouped_matmul_activation/docs/aclnnGroupedMatmulActivationWeightNz.md,描述 ACLNN 参数、计算公式、数据类型、格式及约束。 - 新增 gmm/grouped_matmul_activation/docs/torchapi_grouped_matmul_activation.md,描述 TorchExtension 调用、计算公式、Meta 行为和打包输入约定。 - 新增独立算子 README、op_api 头文件及接口声明。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 重构 - [ ] 测试 - [ ] 构建/CI - [ ] 配置变更 - [ ] 文档更新 - [ ] 依赖升级 - [ ] 安全修复 - [ ] 代码清理 - [ ] 其他,请描述: See merge request: cann/ops-transformer!13929 | 9 天前 | |
moe_init_routing_v4支持hif4量化无偏/有偏实现 Co-authored-by: tujun6<tujun6@huawei.com> # message auto-generated for no-merge-commit merge: !14307 merge moe_hif4_nobias into master moe_init_routing_v4支持hif4量化无偏/有偏实现 Created-by: tujun6 Commit-by: tujun6 Merged-by: cann-robot Description: ## 描述 ### 背景与目标 HIF4( quant_mode=10)的量化阈值此前只有"有偏"一组(E1_8 >= 4、E1_16 >= 2)。本 PR 为 MoeInitRoutingV4 增加"无偏"阈值实现(E1_8 >= 3.75、E1_16 >= 1.875),通过新增属性 scale_alg 在同一 kernel 内选择:scale_alg=0 为有偏(与既有结果逐比特一致),scale_alg=1 为无偏。scale_alg 仅对 HIF4 生效,其他 quant_mode 传非 0 值直接返回 ACLNN_ERR_PARAM_INVALID。 ### 接口改动 - **GEIR**:MoeInitRoutingV4 新增属性 scale_alg(Int,缺省 0,位于 row_idx_type 之后);proto 的 quant_mode 取值补充 10,expanded_x 输出 dtype 补充 DT_HIFLOAT4;expanded_scale 在 HIF4 下为 DT_FLOAT。 - **ACLNN**:新增 aclnnMoeInitRoutingV5,在 V4 参数序列末尾(rowIdxType 之后、输出张量之前)追加 int64_t scaleAlg;aclnnMoeInitRoutingV4 签名与校验行为保持不变,向下兼容。V5 内部同样调用 l0op::MoeInitRoutingV4,scaleAlg=0 时与 V4 行为等价。 - **Torch**:torch.ops.cann_ops_transformer.moe_init_routing schema 末尾新增可选 int scale_alg=0,公开 Python API、Meta 实现、PrivateUse1 实现逐层透传;csrc 统一调用 aclnnMoeInitRoutingV5。HIF4 输出在 PyTorch 侧以 torch.uint8 承载(expanded_x 存储末维为 H/2,向 ACLNN 传递 HIFLOAT4 描述,由 CollectB4ShapeInfo 还原逻辑维),expanded_scale 为 float32 [N*K, H/64],每个 float32 按字节打包一组 64 元素的 scale 信息(E6M2 阶码、E1_8 位图、E1_16 位图 2 字节)。 - **TorchAir 图模式**:GE 转换器补齐 4bit 张量的输入解包与输出打包(moe_init_routing_v4/torch_extension/graph_convert_moe_init_routing.py)。GEIR 侧 4bit 按逻辑元素描述维度,PyTorch 侧按 uint8 打包(末维折半),原先缺少转换会在 NetOutput 校验处报维度不等。现按 quant_mode in {9, 10, 13} 声明输出 dtype 并插入 pack 节点,quant_mode=-1 且 x_dtype 指向 DT_FLOAT4_E2M1 的直通场景则先 unpack 输入再 pack 输出;实现口径与 torchair PR [3134](https://gitcode.com/Ascend/torchair/pull/3134) 的 pack_int4_to_uint8 / unpack_uint8_to_float4_e2m1 一致。同时新增 scale_alg 属性透传与 IrDef/REG_OP 的 DT_HIFLOAT4 声明。非 4bit 输入路径不产生任何额外图节点,行为与改动前一致。 - **Kernel**:HIF4 实现为 V4 专属,文件归位到 moe/moe_init_routing_v4/op_kernel/arch35/moe_v4_gather_hif4_quant.h,仍复用 arch35 公共头、命名空间与 tiling data 结构;阈值由模板参数 SCALE_ALG 决定为编译期常量,不为两种模式新增 tiling key。共用的 MoeInitRoutingV3Arch35TilingData 末尾新增 scaleAlg(属性 scale_alg),由 V4 host 侧写入、V4 kernel 侧读取。 - **平台与约束**:ACLNN V5 增加平台门禁与 dtype 一致性校验(quant_mode=10 ⇔ expanded_x=HiFloat4 ⇔ x=BFLOAT16),非法组合在 ACLNN 层返回带实际取值的明确报错,不会拖到 kernel 匹配阶段;expanded_x 的 dtype 白名单按平台拆分为通用列表与 Ascend960 专用列表(后者含 DT_HIFLOAT4)。HIF4 还要求 H 为 64 的倍数、drop_pad_mode=0(tiling 在 droppad 下只允许 quant_mode=-1)。MoeInitRoutingV3 不支持 quant_mode=10。 ### HIF4 能力归属:由 V3 收敛到 V4 此前 V3 与 V4 两侧同时注册了 HIF4,本 PR 收敛为**仅由 V4 承载**,MoeInitRoutingV3 不再支持 quant_mode=10: - **GEIR**:moe_init_routing_v3_proto.h 去掉 quant_mode=10 取值、expanded_x 的 DT_HIFLOAT4 输出,以及 HIF4 下 expanded_scale 的二维布局说明。 - **算子定义与 bin**:moe_init_routing_v3_def.cpp 去掉 HIF4 的 AICore 组合;ascend960dt/ascend960pr 的 moe_init_routing_v3_binary.json 删除对应 bin 条目(各 -137 行)。 - **host**:V3 的 infershape 去掉 HIF4 分支;V3 tiling 的 SupportsHif4Quant() 保持返回 false,基类中的 HIF4 校验分支保留,由 V4 子类 override 后复用。 - **aclnn**:aclnn_moe_init_routing_v3.cpp 的 dtype 白名单去掉 DT_HIFLOAT4,V3 传 quant_mode=10 或 HiFloat4 输出会在第一段接口即被拒。 - **kernel**:moe_init_routing_v3_apt.cpp 去掉 HIF4 分支;moe_v3_gather_hif4_quant.h 迁至 moe/moe_init_routing_v4/op_kernel/arch35/moe_v4_gather_hif4_quant.h(git 识别为 rename,history 保留)。 - **测试资产**:V3 golden 清理 dynamic_quant_hifp4、E6M2_REC、BF16_to_E6M2、float_to_e6m2_int 与 quant_mode==10 分支(-160 行),V3 的 arch35 tiling UT 期望值同步。 兼容性评估:引入 V3 HIF4 的提交 1d322a94f 已进入 master,但**未进入任何 tag**(未随版本发布),V3 侧也没有留下 HIF4 的 ST/UT 用例,因此不构成已发布接口能力的回退。MoE 的 HIF4 链路中 init_routing 环节改由 MoeInitRoutingV4 承担;下游 moe_re_routing、moe_finalize_routing_v2 的 DT_HIFLOAT4 注册本 PR 未改动,链路能力保持完整。收敛的原因是 HIF4 需要通过 scale_alg 切换阈值,V4 是当前承载 active_num 动态化与 topk_weight 重排的主用接口,同一量化能力不适合在两个版本接口上重复维护。 ### 一并修复的缺陷 1. moe_init_routing_v4_infershape.cpp:HIF4 分支未显式设置 expanded_scale 的 dtype,会沿用 scale 输入的 dtype(如 DT_FLOAT8_E8M0),与 tiling 要求的 DT_FLOAT 冲突;改为显式设置 ge::DT_FLOAT。 2. moe_v4_gather_hif4_quant.h::CopyOut:expanded_scale 的 GM 行内偏移误用末轮更小的 loopScaleCols,应为固定的 perLoopScaleCols_。列方向切分(colsLoops > 1)时最后一块 scale 写错位,一部分槽位被覆盖、一部分槽位未被写入;单轮用例(colIdx == 0)不受影响。以 cols=256064(4001 组、perLoopCols=16064、16 轮)为例,错位槽位 450/4001,scale 精度为 88.75%,与实测一致。 3. test_moe_init_routing_v3_arch35_tiling.cpp:14 个 regbase 用例的期望 tiling data 未随结构体新增字段同步(实际值末尾多出 scaleAlg),已补齐。 4. aclnn_moe_init_routing_v5.cpp:expanded_x dtype 白名单原先不区分平台即包含 DT_HIFLOAT4,已按 GetCurNpuArch() 选择平台专用白名单;scale_alg 相关魔法数字提取为 QUANT_MODE_HIF4。 5. moe_init_routing_v3/tests/assets/golden.py:清理 V3 侧 HIF4 的不可达分支(dynamic_quant_hifp4、E6M2_REC、BF16_to_E6M2、float_to_e6m2_int)。 6. moe_init_routing_v4_tiling_arch35.cpp:SupportsHif4Quant() 原先恒返回 true,A5(950/350)上 quant_mode=10 能通过 tiling、要到 kernel/bin 匹配阶段才失败;改为按 PlatformAscendC(context_->GetPlatformInfo()).GetCurNpuArch() 判定,仅 DAV_9201/DAV_9202 返回 true,与 def.cpp 的 ascend960dt/ascend960pr 注册、kernel 的 __NPU_ARCH__ == 9201 || 9202 一致(口径同 indexer_quant_cache_tiling_arch35.cpp、mc2 的 IsA6Arch();主线 CANN 无 SocVersion::ASCEND960DT 枚举,故用 arch 判断)。GetPlatformInfo() 为空时不拦截,避免离线生成 binary.json 的链路误伤。A5 上的报错由基类 ValidateQuantMode 给出,合法取值列表也会随之不含 10。 7. moe_v4_gather_hif4_quant.h:类模板去掉从未使用的 typename U(<T, U, SCALE_ALG> → <T, SCALE_ALG>,类声明 + 13 处成员定义 + apt 两处实例化同步),与同族 kernel 的 template <typename T>(MoeV3GatherOutMxFp4<T>、MoeGatherOut<T>)保持一致;输出 dtype 的约束仍由 apt 调用点的 if constexpr (IsSameType<DTYPE_EXPANDED_X, hifloat4x2_t>) 保证。 8. kernel/UT 代码风格:按仓库 clang-format(18.1.8)/ruff 规则统一格式化。 ### 兼容性 aclnnMoeInitRoutingV4 签名与校验不变;GEIR 新增属性带缺省值 0,既有图不受影响;Torch API 仅在末尾新增可选参数,既有调用向后兼容;tiling data 为 host/kernel 共用结构,两侧同步更新;TorchAir converter 对非 4bit 输入路径不改变行为。MoeInitRoutingV3 不再支持 quant_mode=10(该能力未随版本发布、也无对应用例),HIF4 统一由 V4/V5 承载,详见上一节。 ## 关联的Issue 关联 Issue [#6784](https://gitcode.com/cann/ops-transformer/issues/6784):[MoeInitRoutingV4] 支持 HIF4 无偏/有偏 scale 算法(新增 scale_alg),并提供 aclnnMoeInitRoutingV5 ## 测试 - **op_host / op_api UT**:bash build.sh --ophost_test --opapi_test --ops=moe_init_routing_v3,moe_init_routing_v4 编译 0 error;transformer_op_host_ut(MoeInitRoutingV3、MoeInitRoutingV3Tiling、MoeInitRoutingV4、MoeInitRoutingV4Tiling 四个 suite)**394/394 PASSED**,新增 3 类用例:HIF4 的 InferDataType 用例 moe_init_routing_v4_inferdatatype_hif4_bf16 与 moe_init_routing_v4_inferdatatype_hif4_scale_e8m0(后者构造 scale 输入为 DT_FLOAT8_E8M0,验证输出仍推导为 DT_FLOAT);tiling 的平台门禁用例 hif4_rejected_on_a5(A5 上下文 + quant_mode=10 → GRAPH_FAILED)与正向用例 hif4_tiling_scale_alg_on_ascend960dt(Ascend960DT 上下文 + quant_mode=10,scale_alg=0/1 各一轮 → tiling 成功,并断言 tilingData->quantMode == 10、tilingData->scaleAlg == scale_alg、tilingData->cols == H)。正向用例的 960 平台由 UT 框架合成(tiling_case_executor.cpp 内 "Ascend960DT" -> NpuArch 9201 的映射写入 platform info),不依赖平台库,因此在开发机上同样可编可跑;两个用例互为对照(A5 拦截、960 放行),可确认门禁确实生效。 - transformer_op_api_ut **12/12 PASSED**,其中 aclnnMoeInitRoutingV5 3 例:scale_alg 取值校验、非 Ascend960 平台拒绝 quant_mode=10、quant_mode=10 但 expanded_x 非 HiFloat4 拒绝。用例通过测试桩件 op::SetPlatformNpuArch 显式设置 DAV_2201/DAV_9201,结果与执行机器型号无关。(ACL_HIFLOAT4 枚举需要较新版本 CANN acl 头,HiFloat4 输出的正向组合由 ST 覆盖。) - **pre-commit**:对 PR 全量 41 个改动文件执行,clang-format 18.1.8、ruff check、ruff format、codespell、Duplicate Header Basename Check、OAT Compliance 等全部 Passed,退出码 0。 - **待 CI/目标环境执行**(开发机 CANN 9.2.0 内核工具链不支持 Ascend960DT_968B7,对照算子同样失败;acl 头缺 ACL_HIFLOAT4): - op_kernel 编译:bash build.sh --opkernel --soc=ascend960dt,ascend960pr --ops=moe_init_routing_v4 - HIF4 端到端精度:scale_alg=0/1 两组阈值,以及 colsLoops > 1 的大 shape 用例(覆盖上面第 2 条修复,预期 scale 精度由 88.75% 恢复为 100%) - torch_extension:bash build.sh --torch_extension --ops=moe_init_routing_v4,eager 与 TorchAir 图模式各跑一遍,图模式建议按 quant_mode=13 → 9 → 10 → float4_e2m1 直通 的顺序验证 ## 文档更新 - 新增 moe/moe_init_routing_v4/docs/aclnnMoeInitRoutingV5.md:以 V4 文档为底本,增量为 scaleAlg 入参(函数原型、参数表、约束说明、调用示例),以及"V5 与 V4 共用 GEIR 算子 MoeInitRoutingV4、仅在其属性上追加 scale_alg、scaleAlg=0 时行为与 V4 完全一致"的说明。 - 新增样例 moe/moe_init_routing_v4/examples/test_aclnn_moe_init_routing_v5.cpp。 - 更新 moe/moe_init_routing_v4/docs/torchapi_moe_init_routing.md:函数原型与参数表新增 scale_alg、约束说明、autograd 约束补充 scale_alg 非 0,图模式示例的 forward() 形参与透传一并补齐(修正示例模型缺少 scale_alg 导致的 TypeError)。 - 更新 docs/zh/op_api_list.md、docs/zh/menu_aclnn_api.md 的 V5 登记,以及 moe/moe_init_routing_v4/README.md 调用说明表的 V5 行。 - 范围说明:本次进入 PR 的文档只描述 scaleAlg/scale_alg 的取值与默认行为;HIF4 相关的接口细节(quantMode=10 取值与约束、HIFLOAT4 输出形态、expandedScaleOut 的字节打包语义、平台支持范围)以及 HIF4 设计说明文档、ST 用例 csv 暂不进入本 PR,随后续文档专项统一提交。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14307 | 3 天前 | |
修改menu文件名称 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !14883 merge master into master 修改menu文件名称 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改menu文件名称 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14883 | 3 天前 | |
moe_init_routing_v4支持hif4量化无偏/有偏实现 Co-authored-by: tujun6<tujun6@huawei.com> # message auto-generated for no-merge-commit merge: !14307 merge moe_hif4_nobias into master moe_init_routing_v4支持hif4量化无偏/有偏实现 Created-by: tujun6 Commit-by: tujun6 Merged-by: cann-robot Description: ## 描述 ### 背景与目标 HIF4( quant_mode=10)的量化阈值此前只有"有偏"一组(E1_8 >= 4、E1_16 >= 2)。本 PR 为 MoeInitRoutingV4 增加"无偏"阈值实现(E1_8 >= 3.75、E1_16 >= 1.875),通过新增属性 scale_alg 在同一 kernel 内选择:scale_alg=0 为有偏(与既有结果逐比特一致),scale_alg=1 为无偏。scale_alg 仅对 HIF4 生效,其他 quant_mode 传非 0 值直接返回 ACLNN_ERR_PARAM_INVALID。 ### 接口改动 - **GEIR**:MoeInitRoutingV4 新增属性 scale_alg(Int,缺省 0,位于 row_idx_type 之后);proto 的 quant_mode 取值补充 10,expanded_x 输出 dtype 补充 DT_HIFLOAT4;expanded_scale 在 HIF4 下为 DT_FLOAT。 - **ACLNN**:新增 aclnnMoeInitRoutingV5,在 V4 参数序列末尾(rowIdxType 之后、输出张量之前)追加 int64_t scaleAlg;aclnnMoeInitRoutingV4 签名与校验行为保持不变,向下兼容。V5 内部同样调用 l0op::MoeInitRoutingV4,scaleAlg=0 时与 V4 行为等价。 - **Torch**:torch.ops.cann_ops_transformer.moe_init_routing schema 末尾新增可选 int scale_alg=0,公开 Python API、Meta 实现、PrivateUse1 实现逐层透传;csrc 统一调用 aclnnMoeInitRoutingV5。HIF4 输出在 PyTorch 侧以 torch.uint8 承载(expanded_x 存储末维为 H/2,向 ACLNN 传递 HIFLOAT4 描述,由 CollectB4ShapeInfo 还原逻辑维),expanded_scale 为 float32 [N*K, H/64],每个 float32 按字节打包一组 64 元素的 scale 信息(E6M2 阶码、E1_8 位图、E1_16 位图 2 字节)。 - **TorchAir 图模式**:GE 转换器补齐 4bit 张量的输入解包与输出打包(moe_init_routing_v4/torch_extension/graph_convert_moe_init_routing.py)。GEIR 侧 4bit 按逻辑元素描述维度,PyTorch 侧按 uint8 打包(末维折半),原先缺少转换会在 NetOutput 校验处报维度不等。现按 quant_mode in {9, 10, 13} 声明输出 dtype 并插入 pack 节点,quant_mode=-1 且 x_dtype 指向 DT_FLOAT4_E2M1 的直通场景则先 unpack 输入再 pack 输出;实现口径与 torchair PR [3134](https://gitcode.com/Ascend/torchair/pull/3134) 的 pack_int4_to_uint8 / unpack_uint8_to_float4_e2m1 一致。同时新增 scale_alg 属性透传与 IrDef/REG_OP 的 DT_HIFLOAT4 声明。非 4bit 输入路径不产生任何额外图节点,行为与改动前一致。 - **Kernel**:HIF4 实现为 V4 专属,文件归位到 moe/moe_init_routing_v4/op_kernel/arch35/moe_v4_gather_hif4_quant.h,仍复用 arch35 公共头、命名空间与 tiling data 结构;阈值由模板参数 SCALE_ALG 决定为编译期常量,不为两种模式新增 tiling key。共用的 MoeInitRoutingV3Arch35TilingData 末尾新增 scaleAlg(属性 scale_alg),由 V4 host 侧写入、V4 kernel 侧读取。 - **平台与约束**:ACLNN V5 增加平台门禁与 dtype 一致性校验(quant_mode=10 ⇔ expanded_x=HiFloat4 ⇔ x=BFLOAT16),非法组合在 ACLNN 层返回带实际取值的明确报错,不会拖到 kernel 匹配阶段;expanded_x 的 dtype 白名单按平台拆分为通用列表与 Ascend960 专用列表(后者含 DT_HIFLOAT4)。HIF4 还要求 H 为 64 的倍数、drop_pad_mode=0(tiling 在 droppad 下只允许 quant_mode=-1)。MoeInitRoutingV3 不支持 quant_mode=10。 ### HIF4 能力归属:由 V3 收敛到 V4 此前 V3 与 V4 两侧同时注册了 HIF4,本 PR 收敛为**仅由 V4 承载**,MoeInitRoutingV3 不再支持 quant_mode=10: - **GEIR**:moe_init_routing_v3_proto.h 去掉 quant_mode=10 取值、expanded_x 的 DT_HIFLOAT4 输出,以及 HIF4 下 expanded_scale 的二维布局说明。 - **算子定义与 bin**:moe_init_routing_v3_def.cpp 去掉 HIF4 的 AICore 组合;ascend960dt/ascend960pr 的 moe_init_routing_v3_binary.json 删除对应 bin 条目(各 -137 行)。 - **host**:V3 的 infershape 去掉 HIF4 分支;V3 tiling 的 SupportsHif4Quant() 保持返回 false,基类中的 HIF4 校验分支保留,由 V4 子类 override 后复用。 - **aclnn**:aclnn_moe_init_routing_v3.cpp 的 dtype 白名单去掉 DT_HIFLOAT4,V3 传 quant_mode=10 或 HiFloat4 输出会在第一段接口即被拒。 - **kernel**:moe_init_routing_v3_apt.cpp 去掉 HIF4 分支;moe_v3_gather_hif4_quant.h 迁至 moe/moe_init_routing_v4/op_kernel/arch35/moe_v4_gather_hif4_quant.h(git 识别为 rename,history 保留)。 - **测试资产**:V3 golden 清理 dynamic_quant_hifp4、E6M2_REC、BF16_to_E6M2、float_to_e6m2_int 与 quant_mode==10 分支(-160 行),V3 的 arch35 tiling UT 期望值同步。 兼容性评估:引入 V3 HIF4 的提交 1d322a94f 已进入 master,但**未进入任何 tag**(未随版本发布),V3 侧也没有留下 HIF4 的 ST/UT 用例,因此不构成已发布接口能力的回退。MoE 的 HIF4 链路中 init_routing 环节改由 MoeInitRoutingV4 承担;下游 moe_re_routing、moe_finalize_routing_v2 的 DT_HIFLOAT4 注册本 PR 未改动,链路能力保持完整。收敛的原因是 HIF4 需要通过 scale_alg 切换阈值,V4 是当前承载 active_num 动态化与 topk_weight 重排的主用接口,同一量化能力不适合在两个版本接口上重复维护。 ### 一并修复的缺陷 1. moe_init_routing_v4_infershape.cpp:HIF4 分支未显式设置 expanded_scale 的 dtype,会沿用 scale 输入的 dtype(如 DT_FLOAT8_E8M0),与 tiling 要求的 DT_FLOAT 冲突;改为显式设置 ge::DT_FLOAT。 2. moe_v4_gather_hif4_quant.h::CopyOut:expanded_scale 的 GM 行内偏移误用末轮更小的 loopScaleCols,应为固定的 perLoopScaleCols_。列方向切分(colsLoops > 1)时最后一块 scale 写错位,一部分槽位被覆盖、一部分槽位未被写入;单轮用例(colIdx == 0)不受影响。以 cols=256064(4001 组、perLoopCols=16064、16 轮)为例,错位槽位 450/4001,scale 精度为 88.75%,与实测一致。 3. test_moe_init_routing_v3_arch35_tiling.cpp:14 个 regbase 用例的期望 tiling data 未随结构体新增字段同步(实际值末尾多出 scaleAlg),已补齐。 4. aclnn_moe_init_routing_v5.cpp:expanded_x dtype 白名单原先不区分平台即包含 DT_HIFLOAT4,已按 GetCurNpuArch() 选择平台专用白名单;scale_alg 相关魔法数字提取为 QUANT_MODE_HIF4。 5. moe_init_routing_v3/tests/assets/golden.py:清理 V3 侧 HIF4 的不可达分支(dynamic_quant_hifp4、E6M2_REC、BF16_to_E6M2、float_to_e6m2_int)。 6. moe_init_routing_v4_tiling_arch35.cpp:SupportsHif4Quant() 原先恒返回 true,A5(950/350)上 quant_mode=10 能通过 tiling、要到 kernel/bin 匹配阶段才失败;改为按 PlatformAscendC(context_->GetPlatformInfo()).GetCurNpuArch() 判定,仅 DAV_9201/DAV_9202 返回 true,与 def.cpp 的 ascend960dt/ascend960pr 注册、kernel 的 __NPU_ARCH__ == 9201 || 9202 一致(口径同 indexer_quant_cache_tiling_arch35.cpp、mc2 的 IsA6Arch();主线 CANN 无 SocVersion::ASCEND960DT 枚举,故用 arch 判断)。GetPlatformInfo() 为空时不拦截,避免离线生成 binary.json 的链路误伤。A5 上的报错由基类 ValidateQuantMode 给出,合法取值列表也会随之不含 10。 7. moe_v4_gather_hif4_quant.h:类模板去掉从未使用的 typename U(<T, U, SCALE_ALG> → <T, SCALE_ALG>,类声明 + 13 处成员定义 + apt 两处实例化同步),与同族 kernel 的 template <typename T>(MoeV3GatherOutMxFp4<T>、MoeGatherOut<T>)保持一致;输出 dtype 的约束仍由 apt 调用点的 if constexpr (IsSameType<DTYPE_EXPANDED_X, hifloat4x2_t>) 保证。 8. kernel/UT 代码风格:按仓库 clang-format(18.1.8)/ruff 规则统一格式化。 ### 兼容性 aclnnMoeInitRoutingV4 签名与校验不变;GEIR 新增属性带缺省值 0,既有图不受影响;Torch API 仅在末尾新增可选参数,既有调用向后兼容;tiling data 为 host/kernel 共用结构,两侧同步更新;TorchAir converter 对非 4bit 输入路径不改变行为。MoeInitRoutingV3 不再支持 quant_mode=10(该能力未随版本发布、也无对应用例),HIF4 统一由 V4/V5 承载,详见上一节。 ## 关联的Issue 关联 Issue [#6784](https://gitcode.com/cann/ops-transformer/issues/6784):[MoeInitRoutingV4] 支持 HIF4 无偏/有偏 scale 算法(新增 scale_alg),并提供 aclnnMoeInitRoutingV5 ## 测试 - **op_host / op_api UT**:bash build.sh --ophost_test --opapi_test --ops=moe_init_routing_v3,moe_init_routing_v4 编译 0 error;transformer_op_host_ut(MoeInitRoutingV3、MoeInitRoutingV3Tiling、MoeInitRoutingV4、MoeInitRoutingV4Tiling 四个 suite)**394/394 PASSED**,新增 3 类用例:HIF4 的 InferDataType 用例 moe_init_routing_v4_inferdatatype_hif4_bf16 与 moe_init_routing_v4_inferdatatype_hif4_scale_e8m0(后者构造 scale 输入为 DT_FLOAT8_E8M0,验证输出仍推导为 DT_FLOAT);tiling 的平台门禁用例 hif4_rejected_on_a5(A5 上下文 + quant_mode=10 → GRAPH_FAILED)与正向用例 hif4_tiling_scale_alg_on_ascend960dt(Ascend960DT 上下文 + quant_mode=10,scale_alg=0/1 各一轮 → tiling 成功,并断言 tilingData->quantMode == 10、tilingData->scaleAlg == scale_alg、tilingData->cols == H)。正向用例的 960 平台由 UT 框架合成(tiling_case_executor.cpp 内 "Ascend960DT" -> NpuArch 9201 的映射写入 platform info),不依赖平台库,因此在开发机上同样可编可跑;两个用例互为对照(A5 拦截、960 放行),可确认门禁确实生效。 - transformer_op_api_ut **12/12 PASSED**,其中 aclnnMoeInitRoutingV5 3 例:scale_alg 取值校验、非 Ascend960 平台拒绝 quant_mode=10、quant_mode=10 但 expanded_x 非 HiFloat4 拒绝。用例通过测试桩件 op::SetPlatformNpuArch 显式设置 DAV_2201/DAV_9201,结果与执行机器型号无关。(ACL_HIFLOAT4 枚举需要较新版本 CANN acl 头,HiFloat4 输出的正向组合由 ST 覆盖。) - **pre-commit**:对 PR 全量 41 个改动文件执行,clang-format 18.1.8、ruff check、ruff format、codespell、Duplicate Header Basename Check、OAT Compliance 等全部 Passed,退出码 0。 - **待 CI/目标环境执行**(开发机 CANN 9.2.0 内核工具链不支持 Ascend960DT_968B7,对照算子同样失败;acl 头缺 ACL_HIFLOAT4): - op_kernel 编译:bash build.sh --opkernel --soc=ascend960dt,ascend960pr --ops=moe_init_routing_v4 - HIF4 端到端精度:scale_alg=0/1 两组阈值,以及 colsLoops > 1 的大 shape 用例(覆盖上面第 2 条修复,预期 scale 精度由 88.75% 恢复为 100%) - torch_extension:bash build.sh --torch_extension --ops=moe_init_routing_v4,eager 与 TorchAir 图模式各跑一遍,图模式建议按 quant_mode=13 → 9 → 10 → float4_e2m1 直通 的顺序验证 ## 文档更新 - 新增 moe/moe_init_routing_v4/docs/aclnnMoeInitRoutingV5.md:以 V4 文档为底本,增量为 scaleAlg 入参(函数原型、参数表、约束说明、调用示例),以及"V5 与 V4 共用 GEIR 算子 MoeInitRoutingV4、仅在其属性上追加 scale_alg、scaleAlg=0 时行为与 V4 完全一致"的说明。 - 新增样例 moe/moe_init_routing_v4/examples/test_aclnn_moe_init_routing_v5.cpp。 - 更新 moe/moe_init_routing_v4/docs/torchapi_moe_init_routing.md:函数原型与参数表新增 scale_alg、约束说明、autograd 约束补充 scale_alg 非 0,图模式示例的 forward() 形参与透传一并补齐(修正示例模型缺少 scale_alg 导致的 TypeError)。 - 更新 docs/zh/op_api_list.md、docs/zh/menu_aclnn_api.md 的 V5 登记,以及 moe/moe_init_routing_v4/README.md 调用说明表的 V5 行。 - 范围说明:本次进入 PR 的文档只描述 scaleAlg/scale_alg 的取值与默认行为;HIF4 相关的接口细节(quantMode=10 取值与约束、HIFLOAT4 输出形态、expandedScaleOut 的字节打包语义、平台支持范围)以及 HIF4 设计说明文档、ST 用例 csv 暂不进入本 PR,随后续文档专项统一提交。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14307 | 3 天前 | |
新增MegaMhc Co-authored-by: Vivia<liusiwei5@huawei.com> Co-authored-by: l84379646<liu.zicheng1@huawei.com> Co-authored-by: zhangzhuoran3<zhangzhuoran3@huawei.com> Co-authored-by: liweijian16<liweijian16@huawei.com> Co-authored-by: steppecat<liangyu62@huawei.com> Co-authored-by: ZhangWei1176<zhangwei1176@huawei.com> # message auto-generated for no-merge-commit merge: !13064 merge mega_mhc into master 新增MegaMhc Created-by: liweijian16 Commit-by: liweijian16;zhangzhuoran3;Vivia;l84379646;ZhangWei1176;steppecat Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增MegaMhc算子,融合rms_norm_0、MHC Post、可选rms_norm_mid、MHC Pre和rms_norm_1,计算下一层输入、新的Post/Res系数及残差状态,减少中间Tensor读写和算子下发开销。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/6161 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - [x] 算子泛化 - [x] 网络shape性能测试 - [x] 压力测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/zh/menu_torch_api.md docs/zh/menu_aclnn_api.md docs/zh/op_list.md docs/zh/op_api_list.md docs/zh/torch_api_list.md mhc/mega_mhc/README.md mhc/mega_mhc/docs/aclnnMegaMhc.md mhc/mega_mhc/docs/torchapi_mega_mhc.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13064 | 4 天前 | |
新增MegaMhc Co-authored-by: Vivia<liusiwei5@huawei.com> Co-authored-by: l84379646<liu.zicheng1@huawei.com> Co-authored-by: zhangzhuoran3<zhangzhuoran3@huawei.com> Co-authored-by: liweijian16<liweijian16@huawei.com> Co-authored-by: steppecat<liangyu62@huawei.com> Co-authored-by: ZhangWei1176<zhangwei1176@huawei.com> # message auto-generated for no-merge-commit merge: !13064 merge mega_mhc into master 新增MegaMhc Created-by: liweijian16 Commit-by: liweijian16;zhangzhuoran3;Vivia;l84379646;ZhangWei1176;steppecat Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增MegaMhc算子,融合rms_norm_0、MHC Post、可选rms_norm_mid、MHC Pre和rms_norm_1,计算下一层输入、新的Post/Res系数及残差状态,减少中间Tensor读写和算子下发开销。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/6161 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - [x] 算子泛化 - [x] 网络shape性能测试 - [x] 压力测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/zh/menu_torch_api.md docs/zh/menu_aclnn_api.md docs/zh/op_list.md docs/zh/op_api_list.md docs/zh/torch_api_list.md mhc/mega_mhc/README.md mhc/mega_mhc/docs/aclnnMegaMhc.md mhc/mega_mhc/docs/torchapi_mega_mhc.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13064 | 4 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 天前 | ||
| 19 天前 | ||
| 6 天前 | ||
| 22 天前 | ||
| 3 天前 | ||
| 1 个月前 | ||
| 9 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 4 天前 | ||
| 4 天前 |