文件最后提交记录最后更新时间
add fused operator finalRouting Co-authored-by: slj02<songlijie1@huawei.com> # message auto-generated for no-merge-commit merge: !5941 merge feat/FinalRouting into master add fused operator finalRouting Created-by: slj02 Commit-by: slj02 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增最终路由算子FinalRouting 对于每个Token t: $$ out[t] = \sum_{e} \big(in[token\_table[t, e]] \cdot score\_table[t, e]\big) $$ ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#2692](https://gitcode.com/cann/ops-transformer/issues/2692) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本中测试了NPU和CPU的计算结果对比 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> PR中包含一个README.md新增 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59412 天前
add fused operator finalRouting Co-authored-by: slj02<songlijie1@huawei.com> # message auto-generated for no-merge-commit merge: !5941 merge feat/FinalRouting into master add fused operator finalRouting Created-by: slj02 Commit-by: slj02 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增最终路由算子FinalRouting 对于每个Token t: $$ out[t] = \sum_{e} \big(in[token\_table[t, e]] \cdot score\_table[t, e]\big) $$ ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#2692](https://gitcode.com/cann/ops-transformer/issues/2692) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本中测试了NPU和CPU的计算结果对比 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> PR中包含一个README.md新增 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59412 天前
add fused operator finalRouting Co-authored-by: slj02<songlijie1@huawei.com> # message auto-generated for no-merge-commit merge: !5941 merge feat/FinalRouting into master add fused operator finalRouting Created-by: slj02 Commit-by: slj02 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增最终路由算子FinalRouting 对于每个Token t: $$ out[t] = \sum_{e} \big(in[token\_table[t, e]] \cdot score\_table[t, e]\big) $$ ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#2692](https://gitcode.com/cann/ops-transformer/issues/2692) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本中测试了NPU和CPU的计算结果对比 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> PR中包含一个README.md新增 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59412 天前
add fused operator finalRouting Co-authored-by: slj02<songlijie1@huawei.com> # message auto-generated for no-merge-commit merge: !5941 merge feat/FinalRouting into master add fused operator finalRouting Created-by: slj02 Commit-by: slj02 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增最终路由算子FinalRouting 对于每个Token t: $$ out[t] = \sum_{e} \big(in[token\_table[t, e]] \cdot score\_table[t, e]\big) $$ ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#2692](https://gitcode.com/cann/ops-transformer/issues/2692) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本中测试了NPU和CPU的计算结果对比 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> PR中包含一个README.md新增 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59412 天前
README.md

算子名称:FinalRouting

产品支持情况

产品 是否支持
Atlas A2 训练系列产品

功能说明

  • 算子功能:用于MoE模型的最终路由阶段,将各个Expert计算的结果按照评分加权合并,得到每个Token的最终输出,完成MoE的Combine阶段。

  • 计算公式: 对于每个Token t

out[t]=∑e(in[token_table[t,e]]⋅score_table[t,e])out[t] = \sum_{e} \big(in[token\_table[t, e]] \cdot score\_table[t, e]\big)

其中,仅当 token_table[t, e] >= 0 时参与计算。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
blockDim 输入 AI CORE的数量,比如:Ascend910B是40。 int64_t -
in 输入 expert输出张量, shape为(expert_num*token_num, hidden_size) BFLOAT16 ND
token_table 输入 token到expert的映射表, shape为(token_num, expert_num) int32_t ND
score_table 输入 每个token在每个expert的评分,shape为(token_num, expert_num) BFLOAT16 ND
out 输出 加权合并后的输出张量,shape为(token_num, hidden_size) BFLOAT16 ND

约束说明

  • token_table中小于0的值表示该expert对此token无效

调用说明

torch.ops.npu_ops_transformer_ext.final_routing(block_dim, input, token_table,score_table, output)