文件最后提交记录最后更新时间
doc tools 工具扫描问题修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !3405 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!34052 个月前
[example更新]放开GMM&&GMMSwigluQuant算子的CI example Co-authored-by: weinachuan<weinachuan@huawei.com> # message auto-generated for no-merge-commit merge: !5381 merge fix-example into master [example更新]放开GMM&&GMMSwigluQuant算子的CI example Created-by: Wei_NaChuan Commit-by: weinachuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 放开GMM&&GMMSwigluQuant算子的CI example ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#2438](https://gitcode.com/cann/ops-transformer/issues/2438) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!538118 天前
init 7 个月前
【重构】Grouped_matmul_swiglu_quant算子 搬移opapi目录迁移至ophost外 Co-authored-by: Wei_NaChuan<weinachuan1@huawei.com> # message auto-generated for no-merge-commit merge: !3500 merge move-opapi into master 【重构】Grouped_matmul_swiglu_quant算子 搬移opapi目录迁移至ophost外 Created-by: Wei_NaChuan Commit-by: Wei_NaChuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将opapi目录从ophost中搬出并独立 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#1685](https://gitcode.com/cann/ops-transformer/issues/1685) 1685 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ![image.png](https://raw.gitcode.com/user-images/assets/7673863/7f1e5d25-038c-4e63-9685-158f027c95bb/image.png 'image.png') ![image.png](https://raw.gitcode.com/user-images/assets/7673863/4f4daf88-9e22-45c9-958f-319a0415a458/image.png 'image.png') ![image.png](https://raw.gitcode.com/user-images/assets/7673863/4d8177bc-b1f2-467e-92f3-361a613a1f03/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!35001 个月前
同步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 个月前
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 天前
fix gmmsq sync Co-authored-by: Wei_NaChuan<weinachuan1@huawei.com> # message auto-generated for no-merge-commit merge: !1257 merge fix-gmmsq-sync into master fix gmmsq sync Created-by: Wei_NaChuan Commit-by: Wei_NaChuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复grouped_matmul_swiglu_quant算子中A8W4场景的同步问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#631](https://gitcode.com/cann/ops-transformer/issues/631) [#630](https://gitcode.com/cann/ops-transformer/issues/630) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ![image.png](https://raw.gitcode.com/user-images/assets/7673863/96e42a94-6c28-4bf1-8335-e7f61a2ba77e/image.png 'image.png') 执行失败用例超时,单跑通过 ![image.png](https://raw.gitcode.com/user-images/assets/7673863/77652cd5-b8f8-4924-9ab1-0aa4d7a01c8a/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!12573 个月前
整改st目录下的atk用例统一目录格式 Co-authored-by: yue-ma<mayue54@huawei.com> # message auto-generated for no-merge-commit merge: !5166 merge master into master 整改st目录下的atk用例统一目录格式 Created-by: yue-ma Commit-by: yue-ma Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 整改st目录下的atk用例统一目录格式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1538 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!516620 天前
同步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 个月前
Wsl_transform资料修改 Co-authored-by: wang_shuli<wangshuli6@h-partners.com> # message auto-generated for no-merge-commit merge: !3489 merge master into master Wsl_transform资料修改 Created-by: wang_shuli Commit-by: wang_shuli Merged-by: cann-robot Description: ## 描述 之前没有注意到图灵的一些资料是有误的,对kirin是否支持一些数据类型添加了说明,现发现存在一定问题,进行排查修改 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1554 ## 测试 ## 文档更新 更新了README.md文件。 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!34891 个月前
README.md

GroupedMatmulSwigluQuant

产品支持情况

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

功能说明

  • 接口功能:融合GroupedMatmul 、dquant、swiglu和quant,详细解释见计算公式。

  • 计算公式:

    • 定义

      • 表示矩阵乘法。
      • 表示逐元素乘法。
      • ⌊x⌉\left \lfloor x\right \rceil 表示将x四舍五入到最近的整数。
      • Z8={x∈Z∣−128≤x≤127}\mathbb{Z_8} = \{ x \in \mathbb{Z} | −128≤x≤127 \}
      • Z32={x∈Z∣−2147483648≤x≤2147483647}\mathbb{Z_{32}} = \{ x \in \mathbb{Z} | -2147483648≤x≤2147483647 \}
    • 输入

      • X∈Z8M×KX∈\mathbb{Z_8}^{M \times K}:输入矩阵(左矩阵),M是总token 数,K是特征维度。
      • W∈Z8E×K×NW∈\mathbb{Z_8}^{E \times K \times N}:分组权重矩阵(右矩阵),E是专家个数,K是特征维度,N是输出维度。
      • bias∈Z32E×Nbias∈\mathbb{Z_{32}}^{E \times N}:矩阵乘计算的偏移值,E是专家个数,N是输出维度。
      • offset∈RE×Noffset∈\mathbb{R}^{E \times N}:per-channel非对称反量化的偏移,E是专家个数,N是输出维度。
      • w_scale∈RE×Nw\_scale∈\mathbb{R}^{E \times N}:分组权重矩阵(右矩阵)的逐通道缩放因子,E是专家个数,N是输出维度。
      • x_scale∈RMx\_scale∈\mathbb{R}^{M}:输入矩阵(左矩阵)的逐 token缩放因子,M是总token 数。
      • groupList∈NEgroupList∈\mathbb{N}^{E}:前缀和的分组索引列表。
    • 输出

      • Q∈Z8M×N/2Q∈\mathbb{Z_8}^{M \times N / 2}:量化后的输出矩阵。
      • Q_scale∈RMQ\_scale∈\mathbb{R}^{M}:量化缩放因子。
      • Q_offset∈RMQ\_offset∈\mathbb{R}^{M}:量化偏移因子。
    • 计算过程

      • 1.根据groupList[i]确定当前分组的 token ,i∈[0,Len(groupList)]i \in [0,Len(groupList)]

        例子:假设groupList=[3,4,4,6],从0开始计数。

        第0个右矩阵W[0,:,:],对应索引位置[0,3)的tokenx[0:3](共3-0=3个token),对应x_scale[0:3]w_scale[0]bias[0]offset[0]Q[0:3]Q_scale[0:3]Q_offset[0:3]

        第1个右矩阵W[1,:,:],对应索引位置[3,4)的tokenx[3:4](共4-3=1个token),对应x_scale[3:4]w_scale[1]bias[1]offset[1]Q[3:4]Q_scale[3:4]Q_offset[3:4]

        第2个右矩阵W[2,:,:],对应索引位置[4,4)的tokenx[4:4](共4-4=0个token),对应x_scale[4:4]w_scale[2]bias[2]offset[2]Q[4:4]Q_scale[4:4]Q_offset[4:4]

        第3个右矩阵W[3,:,:],对应索引位置[4,6)的tokenx[4:6](共6-4=2个token),对应x_scale[4:6]w_scale[3]bias[3]offset[3]Q[4:6]Q_scale[4:6]Q_offset[4:6]

        请注意:groupList中未指定的部分将不会参与更新。 例如groupList=[12,14,18],X的shape为[30,:]。

        则第一个输出Q的shape为[30,:],其中Q[18:,:]的部分不会进行更新和初始化,其中数据为显存空间申请时的原数据。

        同理,第二个输出Q的shape为[30],其中Q_scale[18:]的部分不会进行更新或初始化,其中数据为显存空间申请时的原数据。

        即输出的Q[:groupList[-1],:]和Q_scale[:groupList[-1]]为有效数据部分。

      • 2.根据分组确定的入参进行如下计算:

        Ci=(Xi⋅Wi)⊙x_scalei BroadCast⊙w_scalei BroadCastC_{i} = (X_{i}\cdot W_{i} )\odot x\_scale_{i\ BroadCast} \odot w\_scale_{i\ BroadCast}

        Ci,act,gatei=split(Ci)C_{i,act}, gate_{i} = split(C_{i})

        Si=Swish(Ci,act)⊙gateiS_{i}=Swish(C_{i,act})\odot gate_{i}   其中Swish(x)=x1+e−xSwish(x)=\frac{x}{1+e^{-x}}

        注:当前版本不支持biasibias_{i}offsetioffset_{i},未来版本将支持的计算公式如下: Ci=(Xi⋅Wi+biasi BroadCast)⊙x_scalei BroadCast⊙w_scalei BroadCast+offseti BroadCastC_{i} =(X_{i}\cdot W_{i} + bias_{i\ BroadCast})\odot x\_scale_{i\ BroadCast} \odot w\_scale_{i\ BroadCast}+offset_{i\ BroadCast}

      • 3.确定量化方式

        • 当量化方式为对称量化时:

          Q_scalei=max(∣Si∣)127Q\_scale_{i} = \frac{max(|S_{i}|)}{127}

          $Q_{i} = \left \lfloor \frac{S_{i}}{Q_scale_{i}}\right \rceil $

        • 当量化方式为非对称量化时:(暂不支持)

          Q_scalei=max(Si)−min(Si)255Q\_scale_{i} = \frac{max(S_{i})-min(S_{i})}{255}

          Q_offseti=−128−⌊min(Si)Q_scalei⌉Q\_offset_{i} = -128 - \left \lfloor \frac{min(S_{i})}{Q\_scale_{i}}\right \rceil

          $Q_{i} = \left \lfloor \frac{S_{i}}{ Q_scale_{i} } + Q_offset_{i}\right \rceil $

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 左矩阵,公式中的X。 INT8 ND
weight 输入 权重矩阵,公式中的W。 INT8 ND / NZ
bias 输入 矩阵乘计算的偏移值,公式中的bias。 INT32 ND
offset 输入 per-channel非对称反量化的偏移,公式中的offset。 FLOAT32 ND
weightScale 输入 右矩阵的量化因子,公式中的w_scale。 FLOAT、FLOAT16、BFLOAT16 ND
xScale 输入 左矩阵的量化因子,公式中的x_scale。 FLOAT32 ND
groupList 输入 指示每个分组参与计算的Token个数,公式中的groupList。 INT64 ND
output 输出 输出的量化因子,公式中的Q。 FLOAT ND
outputScale 输出 输出的量化因子,公式中的Q_scale。 FLOAT ND
outputOffset 输出 输出的非对称量化的偏移,公式中的Q_offset。 FLOAT ND
  • Kirin X90/Kirin 9030 处理器系列产品: 不支持BFLOAT16。

约束说明

  • N轴长度不能超过10240。
  • K轴长度不能超过65536。

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_grouped_matmul_swiglu_quant 通过接口方式调用GroupedMatmulSwigluQuant算子。