文件最后提交记录最后更新时间
moe类部分算子OP_LOGE接口调整 Co-authored-by: lizexin<lizexin2@huawei.com> # message auto-generated for no-merge-commit merge: !5052 merge feat-error-code into master 【代码优化】moe类部分算子OP_LOGE接口整改 Created-by: Lizexin312 Commit-by: lizexin Merged-by: cann-robot Description: ## 描述 对moe部分算子的OP_LOGE进行可维测性整改,涉及如下算子: moe_compute_expert_tokens moe_finalize_routing_v2 moe_finalize_routing_v2_grad moe_gating_top_k_softmax_v2 moe_gating_top_k_softmax moe_gating_top_k moe_init_routing_quant_v2 moe_init_routing_v2 moe_init_routing_v2_grad moe_init_routing_v3 moe_re_routing ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 编译、冒烟 ## 文档更新 NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:日志整改 See merge request: cann/ops-transformer!50525 天前
MoeReRouting支持HIF8 + FP4 Co-authored-by: wuxiyuan<wuxiyuan@huawei.com> # message auto-generated for no-merge-commit merge: !4649 merge fp4 into master MoeReRouting支持HIF8 + FP4 Created-by: wuxiyuan Commit-by: wuxiyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> MoeReRouting支持HIF8 + FP4 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2079 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!46491 个月前
moe类部分算子OP_LOGE接口调整 Co-authored-by: lizexin<lizexin2@huawei.com> # message auto-generated for no-merge-commit merge: !5052 merge feat-error-code into master 【代码优化】moe类部分算子OP_LOGE接口整改 Created-by: Lizexin312 Commit-by: lizexin Merged-by: cann-robot Description: ## 描述 对moe部分算子的OP_LOGE进行可维测性整改,涉及如下算子: moe_compute_expert_tokens moe_finalize_routing_v2 moe_finalize_routing_v2_grad moe_gating_top_k_softmax_v2 moe_gating_top_k_softmax moe_gating_top_k moe_init_routing_quant_v2 moe_init_routing_v2 moe_init_routing_v2_grad moe_init_routing_v3 moe_re_routing ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 编译、冒烟 ## 文档更新 NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:日志整改 See merge request: cann/ops-transformer!50525 天前
MoeReRouting支持HIF8 + FP4 Co-authored-by: wuxiyuan<wuxiyuan@huawei.com> # message auto-generated for no-merge-commit merge: !4649 merge fp4 into master MoeReRouting支持HIF8 + FP4 Created-by: wuxiyuan Commit-by: wuxiyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> MoeReRouting支持HIF8 + FP4 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2079 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!46491 个月前
MoeReRouting支持HIF8 + FP4 Co-authored-by: wuxiyuan<wuxiyuan@huawei.com> # message auto-generated for no-merge-commit merge: !4649 merge fp4 into master MoeReRouting支持HIF8 + FP4 Created-by: wuxiyuan Commit-by: wuxiyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> MoeReRouting支持HIF8 + FP4 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2079 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!46491 个月前
更新license Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge lic into master 更新license Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新license <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5685 个月前
MoeReRouting算子约束资料补充 Co-authored-by: wuxiyuan<wuxiyuan@huawei.com> # message auto-generated for no-merge-commit merge: !5394 merge master into master MoeReRouting算子约束资料补充 Created-by: wuxiyuan Commit-by: wuxiyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> MoeReRouting算子资料补充对于输出参数 expert_token_num 类型的限制。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2468 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了MoeReRouting算子的README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!539418 天前
README.md

MoeReRouting

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Kirin X90 处理器系列产品
Kirin 9030 处理器系列产品

功能说明

  • 算子功能:MoE网络中,进行AlltoAll操作从其他卡上拿到需要算的token后,将token按照专家顺序重新排列。

  • 计算公式:
    通过双重求和计算当前token在源位置的偏移量:

    SrcOffset=∑i=0cur_rank(∑j=0cur_expertexpert_token_num_per_rank(i,j))SrcOffset = \sum_{i=0}^{cur\_rank} \left( \sum_{j=0}^{cur\_expert} {expert\_token\_num\_per\_rank}(i,j) \right)

    通过双重求和计算当前token在目标位置的偏移量:

    DstOffset=∑j=0cur_expert(∑i=0cur_rankexpert_token_num_per_rank(i,j))DstOffset = \sum_{j=0}^{cur\_expert} \left( \sum_{i=0}^{cur\_rank} {expert\_token\_num\_per\_rank}(i,j) \right)

    • SrcOffset指当前需要移动的token源偏移,根据输入expert_token_num_per_rank的值进行计算。
    • DstOffset指当前需要移动的token目的偏移。
    • cur_rank是expert_token_num_per_rank的纵轴索引,表示该token原本在的卡。
    • cur_expert是expert_token_num_per_rank的横轴索引,表示该token由卡上专家cur_expert计算。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
tokens 输入 表示待重新排布的token。 通用:FLOAT16、BF16、INT8
Ascend 950PR/Ascend 950DT:FLOAT16、BF16、INT8、FLOAT8_E5M2、FLOAT8_E4M3FN、HIFLOAT8、FLOAT4_E2M1、FLOAT4_E1M2
ND
expert_token_num_per_rank 输入 表示每张卡上各个专家处理的token数,对应公式中的`expert_token_num_per_rank`。 INT32、INT64 ND
per_token_scales 可选输入 表示每个token对应的scale,需要随token同样进行重新排布。 通用:FLOAT
Ascend 950PR/Ascend 950DT:FLOAT、FLOAT8_E8M0
ND
permute_tokens 输出 表示重新排布后的token。 通用:FLOAT16、BF16、INT8
Ascend 950PR/Ascend 950DT:FLOAT16、BF16、INT8、FLOAT8_E5M2、FLOAT8_E4M3FN、HIFLOAT8、FLOAT4_E2M1、FLOAT4_E1M2
ND
permute_per_token_scales 输出 表示重新排布后的per_token_scales。 通用:FLOAT
Ascend 950PR/Ascend 950DT:FLOAT、FLOAT8_E8M0
ND
permute_token_idx 输出 表示每个token在原排布方式的索引。 INT32 ND
expert_token_num 输出 表示每个专家处理的token数。 INT32、INT64 ND
expert_token_num_type 可选属性 表示输出expert_token_num的模式。0为cumsum模式,1为count模式,默认值为1。 INT64 -
idx_type 可选属性 表示输出permute_token_idx的索引类型。0为gather索引,1为scatter索引,默认值为0。 INT64 -
  • Kirin X90/Kirin 9030 处理器系列产品: 不支持BFLOAT16。

约束说明

  • Tensor中shape使用的变量说明:
    • A:表示token个数,取值要求Sum(expert_token_num_per_rank)=A。
    • H:表示token长度,取值要求 0 < H < 16384。
    • N:表示卡数,取值无限制。
    • E:表示卡上的专家数,取值无限制。
  • 输入值域限制
    • expert_token_num_type,即输出expert_token_num的模式。0为cumsum模式,1为count模式,默认值为1。当前只支持为1。
    • idx_type,即输出permute_token_idx的索引类型。0为gather索引,1为scatter索引,默认值为0。Ascend 950PR/Ascend 950DT支持0或1,其余产品仅支持0。
  • 输出类型限制
    • expert_token_num类型应与输入的expert_token_num_per_rank类型保持一致。