文件最后提交记录最后更新时间
feat: add mhc_sinkhorn_backward and mhc_sinkhorn_common modules Co-authored-by: liuxiao222<liuxiao222@huawei.com> # message auto-generated for no-merge-commit merge: !4583 merge sinkhorn_backward_push into master feat: add mhc_sinkhorn_backward and mhc_sinkhorn_common modules Created-by: liuxiao222 Commit-by: liuxiao222 Merged-by: cann-robot Description: ## 描述 新增MhcSinkHornBackward反向算子支持训练场景。 新增MhcSinkHornCommon模块实现MhcSinkHorn正反向公共tiling逻辑 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2057 ## 测试 开发白盒用例自测通过,门槛用例测试通过 ## 文档更新 更新了op_api_list.md文件 更新了op_list.md文件 更新了mhc/mhc_sinkhorn_backward/README.md文件 更新了aclnnMhcSinkhornBackward.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!45831 个月前
mhc_sinkhorn_backward perf optimization Co-authored-by: liuxiao222<liuxiao222@huawei.com> # message auto-generated for no-merge-commit merge: !5377 merge master into master mhc_sinkhorn_backward perf optimization Created-by: liuxiao222 Commit-by: liuxiao222 Merged-by: cann-robot Description: ## 描述 1.公共计算逻辑外提,减少vec计算 1.优化broadcast的写法,消除循环中的同步阻塞,提高指令并行度 ## 关联的Issue 关联issue:https://gitcode.com/cann/ops-transformer/issues/2467 ## 测试 批跑白盒用例,网络用例 精度pss,性能达标 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!537717 天前
common目录整改 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !4870 merge feature/common_dir_fix_v2 into master common目录整改 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 本次修改对 common/ 目录进行整理,分为两个阶段: - **Phase 1**: 将 common/include/kernel/ 重命名为 common/include/op_kernel/ - **Phase 2**: 将 common/include/tiling_base/common/src/tiling_base/ 合并到 common/include/op_host/common/src/op_host/ 相应的 CMake 配置和所有 #include 路径引用已同步更新。 影响范围: - 351 个文件修改(include 路径更新) - 8 个文件重命名(tiling_base → op_host) - 2 个 CMakeLists.txt 修改 + 多个 tests 目录 CMakeLists.txt 更新 ## 关联的Issue Closes #2246 ## 测试 - 编译验证通过:bash build.sh --pkg --soc=ascend910b --ops=all_gather_matmul_v2 -j16 - 编译产物成功生成 .run 包 ## 文档更新 无 ## 类型标签 - [x] ♻️ 重构 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!487026 天前
mhc_sinkhorn_backward perf optimization Co-authored-by: liuxiao222<liuxiao222@huawei.com> # message auto-generated for no-merge-commit merge: !5377 merge master into master mhc_sinkhorn_backward perf optimization Created-by: liuxiao222 Commit-by: liuxiao222 Merged-by: cann-robot Description: ## 描述 1.公共计算逻辑外提,减少vec计算 1.优化broadcast的写法,消除循环中的同步阻塞,提高指令并行度 ## 关联的Issue 关联issue:https://gitcode.com/cann/ops-transformer/issues/2467 ## 测试 批跑白盒用例,网络用例 精度pss,性能达标 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!537717 天前
feat: add mhc_sinkhorn_backward and mhc_sinkhorn_common modules Co-authored-by: liuxiao222<liuxiao222@huawei.com> # message auto-generated for no-merge-commit merge: !4583 merge sinkhorn_backward_push into master feat: add mhc_sinkhorn_backward and mhc_sinkhorn_common modules Created-by: liuxiao222 Commit-by: liuxiao222 Merged-by: cann-robot Description: ## 描述 新增MhcSinkHornBackward反向算子支持训练场景。 新增MhcSinkHornCommon模块实现MhcSinkHorn正反向公共tiling逻辑 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2057 ## 测试 开发白盒用例自测通过,门槛用例测试通过 ## 文档更新 更新了op_api_list.md文件 更新了op_list.md文件 更新了mhc/mhc_sinkhorn_backward/README.md文件 更新了aclnnMhcSinkhornBackward.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!45831 个月前
feat: add mhc_sinkhorn_backward and mhc_sinkhorn_common modules Co-authored-by: liuxiao222<liuxiao222@huawei.com> # message auto-generated for no-merge-commit merge: !4583 merge sinkhorn_backward_push into master feat: add mhc_sinkhorn_backward and mhc_sinkhorn_common modules Created-by: liuxiao222 Commit-by: liuxiao222 Merged-by: cann-robot Description: ## 描述 新增MhcSinkHornBackward反向算子支持训练场景。 新增MhcSinkHornCommon模块实现MhcSinkHorn正反向公共tiling逻辑 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2057 ## 测试 开发白盒用例自测通过,门槛用例测试通过 ## 文档更新 更新了op_api_list.md文件 更新了op_list.md文件 更新了mhc/mhc_sinkhorn_backward/README.md文件 更新了aclnnMhcSinkhornBackward.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!45831 个月前
feat: add mhc_sinkhorn_backward and mhc_sinkhorn_common modules Co-authored-by: liuxiao222<liuxiao222@huawei.com> # message auto-generated for no-merge-commit merge: !4583 merge sinkhorn_backward_push into master feat: add mhc_sinkhorn_backward and mhc_sinkhorn_common modules Created-by: liuxiao222 Commit-by: liuxiao222 Merged-by: cann-robot Description: ## 描述 新增MhcSinkHornBackward反向算子支持训练场景。 新增MhcSinkHornCommon模块实现MhcSinkHorn正反向公共tiling逻辑 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2057 ## 测试 开发白盒用例自测通过,门槛用例测试通过 ## 文档更新 更新了op_api_list.md文件 更新了op_list.md文件 更新了mhc/mhc_sinkhorn_backward/README.md文件 更新了aclnnMhcSinkhornBackward.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!45831 个月前
README.md

MhcSinkhornBackward

产品支持情况

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

功能说明

  • 算子功能:MhcSinkhornBackward是MhcSinkhorn的反向算子。mHC(Manifold-Constrained Hyper-Connections)架构中的MhcSinkhorn算子对输入矩阵做sinkhorn变换得到双随机矩阵Hres\mathbf{H}_{\text{res}},输出的双随机矩阵的所有元素≥0、每一行之和为1且每一列之和为1 (具有范数保持、组合封闭性和凸组合几何解释三大特性)。对mHC架构中双随机矩阵Hres\mathbf{H}_{\text{res}}矩阵的梯度进行sinkhorn变换的反向计算得到输入Hres′\mathbf{H}'_{\text{res}}的梯度。

  • 计算公式:

    • Sinkhorn-Knopp算法在正向计算中通过 num_iters\mathbf{num\_iters} 次迭代归一化实现双随机投影,在反向传播的迭代计算中:

    • num_iters−1\mathbf{num\_iters}-1 次迭代:

      dot_prod2i+1=∑dim⁡=−2,keepdim=True(gradcurr ⋅ norm_out2i+1),gradcurr←gradcurr−dot_prod2i+1sum_out2i+1,dot_prod2i=∑dim⁡=−1,keepdim=True(gradcurr ⋅ norm_out2i),gradcurr←gradcurr−dot_prod2isum_out2i,\begin{aligned} \mathbf{dot\_prod}_{2i+1} &= \sum_{\dim=-2,\text{keepdim}=\text{True}} (\mathbf{grad}_{curr}\ {⋅}\ \mathbf{norm\_out}_{2i+1}), \\ \mathbf{grad}_{curr} &← \frac{\mathbf{grad}_{curr} - \mathbf{dot\_prod}_{2i+1}}{\mathbf{sum\_out}_{2i+1}}, \\ \mathbf{dot\_prod}_{2i} &= \sum_{\dim=-1,\text{keepdim}=\text{True}} (\mathbf{grad}_{curr}\ {⋅}\ \mathbf{norm\_out}_{2i}), \\ \mathbf{grad}_{curr} &← \frac{\mathbf{grad}_{curr} - \mathbf{dot\_prod}_{2i}}{\mathbf{sum\_out}_{2i}}, \\ \end{aligned}

    • 最后一次迭代:

      dot_prod1=∑dim⁡=−2,keepdim=True(gradcurr ⋅ norm_out1),gradcurr←gradcurr−dot_prod1sum_out1,dot_prod0=∑dim⁡=−1,keepdim=True(gradcurr ⋅ norm_out0),gradinput←(gradcurr−dot_prod0) ⋅ norm_out0\begin{aligned} \mathbf{dot\_prod}_{1} &= \sum_{\dim=-2,\text{keepdim}=\text{True}} (\mathbf{grad}_{curr}\ {⋅}\ \mathbf{norm\_out}_{1}), \\ \mathbf{grad}_{curr} &← \frac{\mathbf{grad}_{curr} - \mathbf{dot\_prod}_{1}}{\mathbf{sum\_out}_{1}}, \\ \mathbf{dot\_prod}_{0} &= \sum_{\dim=-1,\text{keepdim}=\text{True}} (\mathbf{grad}_{curr}\ {⋅}\ \mathbf{norm\_out}_{0}), \\ \mathbf{grad}_{input} &← ({\mathbf{grad}_{curr} - \mathbf{dot\_prod}_{0}})\ {⋅}\ \mathbf{norm\_out}_{0} \\ \end{aligned}

    • 其中:gradcurr\mathbf{grad}_\text{curr} 为初始梯度,gradinput\mathbf{grad}_\text{input} 为输出梯度,norm_outk\mathbf{norm\_out}_\text{k}为第kk次归一化方向向量,sum_outk\mathbf{sum\_out}_\text{k} 为对应的缩放系数。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
grad_y 输入 Sinkhorn变换输出的H_res的梯度。 FLOAT32 ND
norm 输入 Sinkhorn变换正向计算保存的中间norm结果。 FLOAT32 ND
sum 输入 Sinkhorn变换正向计算保存的中间sum结果。 FLOAT32 ND
grad_input 输出 Sinkhorn变换的输入的H_res的梯度。 FLOAT32 ND

约束说明

  • 输入 grad_y 仅支持 3 维 (T,n,n) 或 4 维 (B,S,n,n)。
  • 输入 norm 仅支持 1 维 (2*num_iters*n*align_n*B*S) 或 (2*num_iters*n*align_n*T) 。
  • 输入 sum 仅支持 1 维 (2*num_iters*align_n*B*S) 或 (2*num_iters*align_n*T) 。
  • num_iters:取值范围 1~100,超出则报参数无效。
  • n:仅支持 4、6或8。
  • align_n:固定取值为 8。

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_mhc_sinkhorn_backward 通过aclnnMhcSinkhornBackward接口方式调用MhcSinkhornBackward算子。