文件最后提交记录最后更新时间
sc debug Co-authored-by: zdy1205<zhaodeyang@hisilicon.com> # message auto-generated for no-merge-commit merge: !3900 merge master into master sc debug Created-by: zdy1205 Commit-by: zdy1205 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/1811 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!39001 个月前
combineAddRmsNorm算子资料与示例代码修改 Co-authored-by: jiangxiuhan1<jiangxiuhan@huawei.com> # message auto-generated for no-merge-commit merge: !1420 merge master into master combineAddRmsNorm算子资料与示例代码修改 Created-by: jiangxiuhan1 Commit-by: jiangxiuhan1 Merged-by: cann-robot Description: ## 描述 combineAddRmsNormV2资料修改,修改示例代码,增加产品支持,并按照资料文档最新模板修改 ## 关联的Issue 问题单:DTS2026020909685 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!14203 个月前
C++ rule warning eliminate Co-authored-by: OblivionZHU<zhujun116@huawei.com> # message auto-generated for no-merge-commit merge: !6038 merge master into master C++ rule warning eliminate Created-by: OblivionZHU Commit-by: OblivionZHU Merged-by: cann-robot Description: ## 描述 distribute_barrier、moe_distribute_combine_add_rms_norm、moe_distribute_dispatch_v2、moe_distribute_combine_v2等算子C++语言告警整改 ## 关联的Issue [Requirement|需求建议]: mc2仓库代码有许多C++使用不规范的地方,需要修正 2789 ## 测试 二级冒烟、静态检查、本地测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!60383 天前
将mc2下的算子中gen_task包含3-8包编译部分的内容删除 Co-authored-by: hid81635372<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2793 merge gen_task into master 将mc2下的算子中gen_task包含3-8包编译部分的内容删除 Created-by: hid81635372 Commit-by: hid81635372 Merged-by: cann-robot Description: ## 描述 将gen_task中废弃的3-8包编译部分内容删除 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1477 ## 测试 回黄编译transformer包通过,编译legacy包通过,产物检查无异常,MC2的A2、A3、A5二级冒烟已过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!27932 个月前
distribute barrier 与 combine_add_rms_norm C++语言规则告警清理 Co-authored-by: lcttie<luchentao@huawei.com> # message auto-generated for no-merge-commit merge: !5480 merge master into master distribute barrier 与 combine_add_rms_norm C++语言规则告警清理 Created-by: lcttie Commit-by: lcttie Merged-by: cann-robot Description: ## 描述 distribute barrier 与 combine_add_rms_norm C++语言告警清理(未使用头文件、函数的参数修饰符调整) ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2533 ## 测试 本地编译、黄区编排、二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!548014 天前
op kernel of mc2Context Co-authored-by: OblivionZHU<zhujun116@huawei.com> # message auto-generated for no-merge-commit merge: !2131 merge master into master op kernel of mc2Context Created-by: OblivionZHU Commit-by: OblivionZHU Merged-by: cann-robot Description: ## 描述 更新kernel侧代码,新增接口和必选输入用于传递context信息,在kernel内部增加对新路径的判断并获取context信息。 ## 关联的Issue 关联Issue #1030需求建议: 新增动态获取context输入的方法,以便实时更新 ## 测试 静态检查、蓝区冒烟、二级冒烟、线下RDV。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!21312 个月前
新增UT用例,提升ut覆盖率 Co-authored-by: lixiawei<lixiawei2@h-partners.com> # message auto-generated for no-merge-commit merge: !5649 merge add_ut_case_0515 into master 新增UT用例,提升ut覆盖率 Created-by: lixiawei Commit-by: lixiawei Merged-by: cann-robot Description: ## 描述 新增UT用例,提升ut覆盖率 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2585 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: ## AI检视意见 总结 本次提交新增约 2118 行 UT 测试代码,覆盖了多个算子的 tiling、InferShape、InferDataType、op_api 等测试维度,测试设计合理,包含了合法场景、非法参数、空指针、空张量、非连续内存、dtype 不匹配等多种边界场景。 发现的问题均为测试代码自身健壮性问题,不涉及生产代码安全风险,建议按优先级酌情处理。 报告生成时间 2026-05-20 报告状态 已完成检视,待确认修复优先级 See merge request: cann/ops-transformer!56497 天前
mc2新特性开发 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !500 merge feature_mc2 into master mc2新特性开发 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5005 个月前
doc Tools扫描问题修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !3415 merge master into master doc Tools扫描问题修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools扫描问题修改 See merge request: cann/ops-transformer!34152 个月前
README.md

MoeDistributeCombineAddRmsNorm

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品 ×
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

**算子功能:当存在TP域通信时,先进行ReduceScatterV通信,再进行AllToAllV通信,最后将接收的数据整合(乘权重再相加);当不存在TP域通信时,进行AllToAllV通信,最后将接收的数据整合(乘权重再相加),之后完成Add + RmsNorm融合。

计算公式

rsOut=ReduceScatterV(expandX)ataOut=AllToAllV(rsOut)combineOut=Sum(expertScales∗ataOut+expertScales∗sharedExpertX)x=combineOut+residualXy=xRMS(x)∗gamma,whereRMS(x)=1H∑i=1Hxi2+normEpsrsOut = ReduceScatterV(expandX)\\ ataOut = AllToAllV(rsOut)\\ combineOut = Sum(expertScales * ataOut + expertScales * sharedExpertX)\\ x = combineOut + residualX\\ y = \frac{x}{RMS(x)} * gamma,\quad\text{where}RMS(x) = \sqrt{\frac{1}{H}\sum_{i=1}^{H}x_{i}^{2}+normEps}

注意该接口必须与aclnnMoeDistributeDispatchV2配套使用,相当于按MoeDistributeDispatchV2算子收集数据的路径原路返还。

参数说明

参数名 输入/输出 描述 使用说明 数据类型 数据格式 维度 非连续
expandX 输入 根据expertIds进行扩展过的token特征。 要求为2D Tensor,shape为 (max(tpWorldSize, 1) * A , H)。 BFLOAT16 ND 2
expertIds 输入 每个token的topK个专家索引。 要求为2D Tensor,shape为 (Bs, K)。 INT32 ND 2
assistInfoForCombine 输入 对应aclnnMoeDistributeDispatchV2中的assistInfoForCombineOut输出。 要求为1D Tensor,shape为 (A * 128, )。 INT32 ND 1
epSendCounts 输入 对应aclnnMoeDistributeDispatchV2中的epRecvCounts输出。 要求为1D Tensor,shape为 (epWorldSize * max(tpWorldSize, 1) * localExpertNum, )。 INT32 ND 1
expertScales 输入 每个token的topK个专家的权重。 要求为2D Tensor,shape为 (Bs, K)。 FLOAT32 ND 2
residualX 输入 AddRmsNorm中Add的右矩阵。 要求为3D Tensor,shape为 (Bs,1,H)。 BFLOAT16 ND 3
gamma 输入 RmsNorm中的gamma输入。 要求为1D Tensor,shape为 (H, )。 BFLOAT16 ND 1
tpSendCountsOptional 输入 对应aclnnMoeDistributeDispatchV2中的tpRecvCounts输出。 有TP域通信需传参,无TP域通信传空指针;有TP域通信时为1D Tensor,shape为 (tpWorldSize, )。 INT32 ND -
xActiveMaskOptional 输入 表示token是否参与通信。
  • 可传有效数据或空指针,默认所有token参与通信,1D时shape为(BS, ),2D时shape为(BS, K)。
  • 各卡BS不一致时所有token需有效。
BOOL ND -
activationScaleOptional 输入 预留参数。 当前版本不支持,传空指针即可。 - ND - -
weightScaleOptional 输入 预留参数。 当前版本不支持,传空指针即可。 - ND - -
groupListOptional 输入 预留参数。 当前版本不支持,传空指针即可。 - ND - -
expandScalesOptional 输入 对应aclnnMoeDistributeDispatchV2中的expandScales输出;预留参数。 当前版本不支持,传空指针即可。 - ND - -
sharedExpertXOptional 输入 表示共享专家计算后的Token。 可传有效数据或空指针,2D时shape为(Bs, H),3D时shape为(Bs, 1, H)) BFLOAT16 ND -
groupEp 输入 EP通信域名称(专家并行通信域)。 字符串长度范围为[1, 128),不能和groupTp相同。 STRING ND - -
epWorldSize 输入 EP通信域大小。 - INT64 ND - -
epRankId 输入 EP域本卡Id。 取值范围[0, epWorldSize),同一个EP通信域中各卡的epRankId不重复。 INT64 ND - -
moeExpertNum 输入 MoE专家数量。 满足moeExpertNum % (epWorldSize - sharedExpertRankNum) = 0。 INT64 ND - -
groupTp 输入 TP通信域名称(数据并行通信域)。 不能和groupEp相同。 STRING ND - -
tpWorldSize 输入 TP通信域大小。 取值范围[0, 2],0和1表示无TP域通信,有TP域通信时仅支持2。 INT64 ND - -
tpRankId 输入 TP域本卡Id。 取值范围[0, 1],同一个TP通信域中各卡的tpRankId不重复;无TP域通信时传0即可。 INT64 ND - -
expertShardType 输入 表示共享专家卡分布类型。 当前仅支持传0,表示共享专家卡排在MoE专家卡前面 INT64 ND - -
sharedExpertNum 输入 表示共享专家数量。 当前版本不支持,传0即可。 INT64 ND - -
sharedExpertRankNum 输入 表示共享专家卡数量。 当前版本不支持,传0即可。 INT64 ND - -
globalBS 输入 EP域全局的batch size大小。
  • 各rank Bs一致时,globalBS = Bs * epWorldSize 或 0。
  • 各rank Bs不一致时,globalBS = maxBs * epWorldSize(maxBs为单卡Bs最大值)。
INT64 ND - -
outDtype 输入 用于指定输出x的数据类型,预留参数 当前版本不支持,传0即可。 INT64 ND - -
commQuantMode 输入 通信量化类型。 当前版本不支持,传0即可。 INT64 ND - -
groupListType 输入 group List格式,预留参数。 当前版本不支持,传0即可。 INT64 ND - -
commAlg 输入 表示通信亲和内存布局算法。 预留字段,当前版本不支持,传入空指针即可。 STRING ND - -
normEps 输入 用于防止AddRmsNorm除0错误。 可取值为1e-6。 FLOAT ND - -
yOut 输出 RmsNorm后的输出结果。 要求为3D Tensor。 BFLOAT16 ND 3 -
rstdOut 输出 RmsNorm后的输出结果。 要求为3D Tensor,shape为(Bs,1,1)。 FLOAT32 ND 3
xOut 输出 Add后的输出结果。 要求为3D Tensor,shape为 (Bs, 1,H)。 BFLOAT16 ND 3 -
workspaceSize 输出 返回需要在Device侧申请的workspace大小。 - - - - -
executor 输出 返回op执行器,包含了算子的计算流程。 - - - - -

约束说明

  • aclnnMoeDistributeDispatchV2接口与aclnnMoeDistributeCombineAddRmsNorm接口必须配套使用,具体参考调用示例。

  • 调用接口过程中使用的groupEp、epWorldSize、moeExpertNum、groupTp、tpWorldSize、expertShardType、sharedExpertNum、sharedExpertRankNum、globalBs参数取值所有卡需保持一致,网络中不同层中也需保持一致,且和aclnnMoeDistributeDispatchV2对应参数也保持一致。

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:该场景下单卡包含双DIE(简称为“晶粒”或“裸片”),因此参数说明里的“本卡”均表示单DIE。

  • 参数说明里shape格式说明:

    • A:表示本卡需要分发的最大token数量,取值范围如下:
      • 对于共享专家,要满足A = Bs * epWorldSize * sharedExpertNum / sharedExpertRankNum。
      • 对于MoE专家,当globalBs为0时,要满足A >= Bs * epWorldSize * min(localExpertNum, K);当globalBs非0时,要满足A >= globalBs * min(localExpertNum, K)。
    • H:表示hidden size隐藏层大小,取值范围为[1024, 8192]。
    • Bs:表示batch sequence size,即本卡最终输出的token数量,取值范围为0 < Bs ≤ 512。
    • K:表示选取topK个专家,取值范围为0 < K ≤ 16同时满足0 < K ≤ moeExpertNum。
    • localExpertNum:表示本卡专家数量。
      • 对于共享专家卡,localExpertNum = 1
      • 对于MoE专家卡,localExpertNum = moeExpertNum / (epWorldSize - sharedExpertRankNum),localExpertNum > 1时,不支持TP域通信。
  • HCCL_BUFFSIZE: 调用本接口前需检查HCCL_BUFFSIZE环境变量取值是否合理,该环境变量表示单个通信域占用内存大小,单位MB,不配置时默认为200MB。要求 >= 2且满足1024 ^ 2 * (HCCL_BUFFSIZE - 2) / 2 >= (BS * 2 * (H + 128) * (epWorldSize * localExpertNum + K + 1)),localExpertNum需使用MoE专家卡的本卡专家数。

  • 通信域使用约束:

    • 一个模型中的aclnnMoeDistributeCombineAddRmsNorm和aclnnMoeDistributeDispatchV2仅支持相同EP通信域,且该通信域中不允许有其他算子。
    • 一个模型中的aclnnMoeDistributeCombineAddRmsNorm和aclnnMoeDistributeDispatchV2仅支持相同TP通信域或都不支持TP通信域,有TP通信域时该通信域中不允许有其他算子。

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_moe_distribute_combine_add_rms_norm.cpp 通过aclnnMoeDistributeCombineAddRmsNorm接口方式调用moe_distribute_combine_add_rms_norm算子。