文件最后提交记录最后更新时间
aclnnGroupedMatmulWeightNz与aclnnQuantGroupedMatmulInplaceAdd接口doc与头文件注释修正 Co-authored-by: fengxingpan1<fengxingpan@h-partners.com> # message auto-generated for no-merge-commit merge: !5317 merge log into master aclnnGroupedMatmulWeightNz与aclnnQuantGroupedMatmulInplaceAdd接口doc与头文件注释修正 Created-by: fengxingpan1 Commit-by: fengxingpan1 Merged-by: cann-robot Description: ## 描述 gmm/grouped_matmul/docs/aclnnGroupedMatmulWeightNz.md 动态量化(mx量化)场景不为空的参数支持的数据类型组合的表格中缺少biaOptional的描述 gmm/quant_grouped_matmul_inplace_add/docs/aclnnQuantGroupedMatmulInplaceAdd.md 动态量化(T-C量化)场景支持的输入类型 这里缺少T-T量化字样 gmm/grouped_matmul/op_api/aclnn_grouped_matmul_weight_nz.h weight支持的数据类型FLOAT4_E2M1重复 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2435 ## 测试 审查通过 ## 文档更新 gmm/grouped_matmul/docs/aclnnGroupedMatmulWeightNz.md gmm/quant_grouped_matmul_inplace_add/docs/aclnnQuantGroupedMatmulInplaceAdd.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!531718 天前
更新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 个月前
【QuantGroupedMatmulInplaceAdd】支持输入为hifloat8的pertensor-pertensor 量化 Co-authored-by: fengxingpan1<fengxingpan@h-partners.com> # message auto-generated for no-merge-commit merge: !4153 merge qgmmia into master 【QuantGroupedMatmulInplaceAdd】支持输入为hifloat8的pertensor-pertensor 量化 Created-by: fengxingpan1 Commit-by: fengxingpan1 Merged-by: cann-robot Description: ## 描述 QuantGroupedMatmulInplaceAdd算子增加hif8输入T-T量化场景支持自定义数据类型训练,增加了使用低阶API实现的纯cube模板 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2040 ## 测试 测试用例精度通过,融合算子性能相比两个单算子性能之和得到优化 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!41531 个月前
refactor(gmm): move fallback sources to op_graph Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !3247 merge master into master refactor(gmm): move fallback sources to op_graph Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 本次改动对部分 GMM 模块的目录结构进行了统一整理,核心目标是将 op_apiop_host 中独立出来,并将图侧 fallback_*.cpp 移动到同级 op_graph 目录。 本次涉及模块如下: - grouped_matmul - grouped_matmul_add - grouped_matmul_finalize_routing - grouped_matmul_swiglu_quant_v2 - quant_grouped_matmul_inplace_add 具体改动包括: 1. 将以下模块中的 op_host/op_api 调整为同级 op_api: - grouped_matmul - grouped_matmul_add - grouped_matmul_finalize_routing - grouped_matmul_swiglu_quant_v2 - quant_grouped_matmul_inplace_add 2. 将以下模块中的 fallback_*.cppop_host 移动到同级 op_graph: - grouped_matmul - grouped_matmul_finalize_routing - grouped_matmul_swiglu_quant_v2 - quant_grouped_matmul_inplace_add 3. 修改对应 op_host/CMakeLists.txt,适配独立后的 op_api 目录: - 增加 OP_API_INDEPENDENT ON - 增加 OP_API_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../op_api 4. 同步修正相关引用关系: - 更新 UT 中受影响的 include 路径 - 更新 classify_rule.yamlgrouped_matmulop_api 路径 - 修正 gmm/grouped_matmul/op_api/aclnn_grouped_matmul.cppgrouped_matmul_host_util.h 的相对 include 路径 - 删除迁移过程中新增的 CMake 说明性注释,保持脚本整洁 本次改动以目录整理和构建适配为主,不涉及算子功能逻辑变更。 ## 关联Issue 关联 Issue:#1421 ## 测试 已完成以下检查: - 检查相关模块目录结构,确认迁移后 op_apiop_graph 布局符合预期 - 检查旧路径残留,确认相关模块中不再保留旧的 op_host/op_api 目录引用 - 检查 fallback_*.cpp 已从 op_host 移动到对应 op_graph - 检查 CMakeLists.txt、UT 路径和 classify_rule.yaml 已同步更新 ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!32472 个月前
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 天前
Revert: [GMM][QGMMIA]算子tilingData注册方式修改 Co-authored-by: Hu1L1<chenshujian5@huawei.com> # message auto-generated for no-merge-commit merge: !5849 merge revert-mr-5456-1779679827345-auto into master Revert: [GMM][QGMMIA]算子tilingData注册方式修改 Created-by: Hu1L1 Commit-by: Hu1L1 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Revert 回退 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2528 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:回退代码 See merge request: cann/ops-transformer!58498 天前
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 天前
同步GMM代码 Co-authored-by: Hu1L1<chenshujian5@huawei.com> # message auto-generated for no-merge-commit merge: !546 merge move_all into master 同步GMM代码 Created-by: Hu1L1 Commit-by: Hu1L1 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5465 个月前
log Co-authored-by: fengxingpan1<fengxingpan@h-partners.com> # message auto-generated for no-merge-commit merge: !4818 merge log into master log Created-by: fengxingpan1 Commit-by: fengxingpan1 Merged-by: cann-robot Description: ## 描述 QuantGroupedMatmulInplaceAdd算子增加hif8输入T-T量化场景文档说明 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2040 ## 测试 审查通过 ## 文档更新 gmm/quant_grouped_matmul_inplace_add/docs/aclnnQuantGroupedMatmulInplaceAdd.md gmm/quant_grouped_matmul_inplace_add/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:注释修改 See merge request: cann/ops-transformer!48181 个月前
README.md

QuantGroupedMatmulInplaceAdd

产品支持情况

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

参数说明

TODO

功能说明

  • 算子功能:在micro-batch训练场景,需要做micro-batch的梯度累计,会存在大量GroupedMatMul后接InplaceAdd的融合场景。QuantGroupedMatmulInplaceAdd算子将上述算子融合起来,提高网络性能。实现分组矩阵乘计算和加法计算,基本功能为矩阵乘和加法的组合,如T-C量化场景下yi[m,n]=(x1i[m,ki]×x2i[ki,n])∗scale2i[n]∗scale1i+yi[m,n],i=1...gy_i[m,n]=(x1_i[m,k_i] \times x2_i[k_i,n]) * scale2_i[n] * scale1_i + y_i[m,n], i=1...g,其中g为分组个数,m/ki/nm/k_i/n为对应的维度。

    相较于GroupedMatmulV4接口,此接口变化:

    • 输入输出参数类型均为aclTensor。
    • 在GroupedMatMul计算结束后增加了InplaceAdd计算。
    • 仅支持量化场景(1.mx量化;2.T-C量化;3.T-T量化)。量化方式请参见量化介绍
    • 仅支持x1、x2是FLOAT8_E5M2、FLOAT8_E4M3FN、HIFLOAT8的输入。
  • 计算公式:

    • mx量化:

    yi[m,n]=∑j=0kLoops−1((∑k=0gsK−1(x1Slicei∗x2Slicei))∗(scale1i[m,j]∗scale2i[j,n]))+yi[m,n] y_i[m,n] = \sum_{j=0}^{kLoops-1} ((\sum_{k=0}^{gsK-1} (x1Slice_i * x2Slice_i)) * (scale1_i[m, j] * scale2_i[j, n])) + y_i[m,n]

    其中,gsK代表K轴的量化的block size即32,x1Sliceix1Slice_i代表x1ix1_i第m行长度为gsK的向量,x2Sliceix2Slice_i代表x2ix2_i第n列长度为gsK的向量,K轴均从j∗gsKj*gsK起始切片,j的取值范围[0, kLoops), kLoops=ceil(KiK_i / gsK),支持最后的切片长度不足gsK。

    • T-T/T-C量化:

    yi=(x1i×x2i)∗scale2i∗scale1i+yi y_i=(x1_i\times x2_i) * scale2_i * scale1_i + y_i

约束说明

  • x1和x2的每一维大小在32字节对齐后都应小于int32的最大值2147483647,且内轴大小需小于2097152。
    • 动态量化(T-T/T-C量化)场景支持的输入类型为:

      • 不为空的参数支持的数据类型组合要满足下表:

        x1 x2 scale2 scale1Optional yRef
        HIFLOAT8 HIFLOAT8 FLOAT32 FLOAT32 FLOAT32
      • scale1Optional/scale2要满足以下约束(其中g为matmul组数即分组数):

        参数 shape限制
        scale1Optional 2维tensor或1维tensor,shape为(g, 1)或(g,)
        scale2 pertensor场景:2维tensor或1维tensor,shape为(g, 1)或(g,);perchannel场景:2维tensor,shape为(g, N)
    • 动态量化(mx量化)场景支持的数据类型为:

      • 数据类型组合要满足下表:

        x1 x2 scale2 scale1Optional yRef
        FLOAT8_E5M2/FLOAT8_E4M3FN FLOAT8_E5M2/FLOAT8_E4M3FN FLOAT8_E8M0 FLOAT8_E8M0 FLOAT32
      • scale1Optional/scale2要满足以下约束(其中g为matmul组数即分组数,g_i为第i个分组(下标从0开始)):

        参数 shape限制
        scale1Optional 3维tensor,shape为((K / 64) + g, M, 2),scale_i起始地址偏移为((K_0 + K_1 + ...+ K_{i-1})/ 64 + g_i) * M * 2,即scale_0的起始地址偏移为0,scale_1的起始地址偏移为(K_0 / 64 + 1) * M * 2, scale_2的起始地址偏移为((K_0 + K_1) / 64 + 2) * M * 2, 依此类推
        scale2 3维tensor,shape为((K / 64) + g, N, 2), 起始地址偏移与scale1Optional同理

调用说明

调用方式 调用样例 说明
aclnn调用 [test_aclnn_quant_grouped_matmul_inplace_add] 通过接口方式调用QuantGroupedMatmulInplaceAdd算子。
图模式调用 [test_geir_quant_grouped_matmul_inplace_add] 通过构图方式调用QuantGroupedMatmulInplaceAdd算子。