From 386069526a605ff1a4ac4611403de4ed722520ea Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 14:30:06 +0800 Subject: [PATCH 01/15] =?UTF-8?q?MCTLASS=20/=20Fused=20MoE=20=E7=AE=97?= =?UTF-8?q?=E5=AD=90=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E5=8F=82=E8=80=83?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../赛题说明.md | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md index a710761..9098d59 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md @@ -28,6 +28,38 @@ 聚焦 MoE 模型中的稀疏专家计算,优化 Fused MoE 算子的执行效率。 -参考知识:待更新 +参考知识: + +**1、混合专家模型 MoE** + +参考链接:[https://huggingface.co/blog/zh/moe](https://huggingface.co/blog/zh/moe) + +混合专家模型(Mixed Expert Models,简称 MoE)是一种稀疏激活的模型结构。与稠密模型不同,MoE 在前向计算时只激活部分参数,从而在相近的计算预算下,获得更大的模型容量和更快的收敛速度。这也是当前大模型扩展参数规模的主流路径之一。 + +MoE 是一种基于 Transformer 架构的模型,由两个关键部分组成: + +* **稀疏 MoE 层**:这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干“专家”(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是 MoE 层本身,从而形成层级式的 MoE 结构。 + +* **门控网络或路由**:这个部分用于决定哪些令牌 (token) 被发送到哪个专家。例如,在下图中,“More”这个令牌可能被发送到第二个专家,而“Parameters”这个令牌被发送到第一个专家。有时,一个令牌甚至可以被发送到多个专家。令牌的路由方式是 MoE 使用中的一个关键点,因为路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。 + + +![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/r4mlQ5b7084Ndlxo/img/fe41ddaa-b2b2-4b30-bcdb-452c3ecfb138.png) + +MoE 的主要优势体现在预训练和训练阶段的算力效率上,但在推理阶段带来了新的**挑战**: + +* **显存占用高**:尽管每个 Token 只激活部分专家,但所有专家的参数仍需常驻显存。例如 Mixtral 8×7B 的实际参数量接近 47B,而非 8×7B 的简单叠加,因为除 FFN 外的大多数参数在各专家间是共享的。 + +* **计算不均衡**:不同专家接收的 Token 数量可能不同,导致计算负载不均,容易形成局部瓶颈。 + +* **访存压力大**:专家权重、Token 路由、Permute / Unpermute 都会带来额外的显存读写,而不仅仅是计算量的减少。 + + +因此,在推理阶段对 MoE 算子进行系统级优化​具有非常重要的意义,在不改变模型行为和数值精度的前提下,通过更合理的调度、融合与访存优化,缓解稀疏性带来的碎片化和内存压力。 + +**2、INT8 模型量化** + +参考链接:[https://www.cnblogs.com/chentiao/p/18315901](https://www.cnblogs.com/chentiao/p/18315901) + +INT8 量化是一种用于减少模型大小和计算复杂度的方法,特别是在深度学习模型中。它通过将浮点数(通常是 FP32)转换为 8 位整数 (INT 8),从而减少内存使用和提高计算效率。 教程链接:Fused MoE Baseline 入门:快速跑通最小闭环教程 From fd6540c9bf3626e9ad1512a1dc4aaff58b1c87bf Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 14:36:18 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E5=9B=BE=E7=89=87=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../赛题说明.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md index 9098d59..e9e75e7 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/赛题说明.md @@ -43,7 +43,7 @@ MoE 是一种基于 Transformer 架构的模型,由两个关键部分组成 * **门控网络或路由**:这个部分用于决定哪些令牌 (token) 被发送到哪个专家。例如,在下图中,“More”这个令牌可能被发送到第二个专家,而“Parameters”这个令牌被发送到第一个专家。有时,一个令牌甚至可以被发送到多个专家。令牌的路由方式是 MoE 使用中的一个关键点,因为路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。 -![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/r4mlQ5b7084Ndlxo/img/fe41ddaa-b2b2-4b30-bcdb-452c3ecfb138.png) +![image.png](https://origin.picgo.net/2026/06/04/image552fe46f30dca5fb8.png) MoE 的主要优势体现在预训练和训练阶段的算力效率上,但在推理阶段带来了新的**挑战**: From 4203f897b3d17d78cb0267682af994daab7c04a5 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 14:52:57 +0800 Subject: [PATCH 03/15] =?UTF-8?q?fused=5Fmoe=E6=95=99=E7=A8=8B=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...入门:快速跑通最小闭环教程.md | 74 ++----------------- 1 file changed, 8 insertions(+), 66 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index a26e6bd..1541e65 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -57,30 +57,7 @@ **环境准备:** -* 已进入赛事专属镜像环境: - - 1. 获取算力券:[https://developer.metax-tech.com/activities/6](https://developer.metax-tech.com/activities/6) - - 2. 兑换算力和登录平台:[https://ai.gitee.com/](https://ai.gitee.com/) - - 进入 【费用中心】— 【算力券】,点击右上角 【兑换】。 - - ![image.png](https://origin.picgo.net/2026/06/04/image104df0b48e859950a.png) - - 3. 租用算力:点击顶部导航栏【算力市场】,选择【沐曦】,租用算力,建议优先选16G /32G 显存,如下图: - - ![image.png](https://origin.picgo.net/2026/06/04/image2e973eb9c33b02661.png) - - 4. 创建实例:如图安装专属镜像 - - ![image.png](https://origin.picgo.net/2026/06/04/image37ae95373fa3e2cc5.png) - - 5. 项目创作:进入我的算力容器,刚创建的实例默认开机状态,点击工具-lab开始项目创作,不用时记得关机! - - -![image.png](https://origin.picgo.net/2026/06/04/image4db7649869ff4db84.png) - -小提示:也可以用本地 AI coding 工具 ssh 连接云服务器(能实现和AI对话即可) +* 已进入赛事专属镜像环境。 **工具准备:** @@ -94,45 +71,10 @@ **代码准备:** * 已获取 Fused MoE Baseline 源码。 - -## 五、知识预备 +## 五、项目实践1-算力平台 baseline 源码部署 -### 混合专家模型 MoE  - -参考链接:[https://huggingface.co/blog/zh/moe](https://huggingface.co/blog/zh/moe) - -混合专家模型(Mixed Expert Models,简称 MoE)是一种稀疏激活的模型结构。与稠密模型不同,MoE 在前向计算时只激活部分参数,从而在相近的计算预算下,获得更大的模型容量和更快的收敛速度。这也是当前大模型扩展参数规模的主流路径之一。 - -MoE 是一种基于 Transformer 架构的模型,由两个关键部分组成: - -* **稀疏 MoE 层:**这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干“专家”(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是 MoE 层本身,从而形成层级式的 MoE 结构。 - -* **门控网络或路由:** 这个部分用于决定哪些令牌 (token) 被发送到哪个专家。例如,在下图中,“More”这个令牌可能被发送到第二个专家,而“Parameters”这个令牌被发送到第一个专家。有时,一个令牌甚至可以被发送到多个专家。令牌的路由方式是 MoE 使用中的一个关键点,因为路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。 - - -![image.png](https://origin.picgo.net/2026/06/04/image552fe46f30dca5fb8.png) - -MoE 的主要优势体现在预训练和训练阶段的算力效率上,但在推理阶段带来了新的**挑战**: - -* **显存占用高:**尽管每个 Token 只激活部分专家,但所有专家的参数仍需常驻显存。例如 Mixtral 8×7B 的实际参数量接近 47B,而非 8×7B 的简单叠加,因为除 FFN 外的大多数参数在各专家间是共享的。 - -* **计算不均衡:**不同专家接收的 Token 数量可能不同,导致计算负载不均,容易形成局部瓶颈。 - -* **访存压力大:**专家权重、Token 路由、Permute / Unpermute 都会带来额外的显存读写,而不仅仅是计算量的减少。 - - -因此,在推理阶段对 MoE 算子进行系统级优化​具有非常重要的意义,在不改变模型行为和数值精度的前提下,通过更合理的调度、融合与访存优化,缓解稀疏性带来的碎片化和内存压力。 - -### INT8 模型量化: - -参考链接:[https://www.cnblogs.com/chentiao/p/18315901](https://www.cnblogs.com/chentiao/p/18315901) - -INT8 量化是一种用于减少模型大小和计算复杂度的方法,特别是在深度学习模型中。它通过将浮点数(通常是 FP32)转换为 8 位整数 (INT 8),从而减少内存使用和提高计算效率。 - -## 六、项目实践1-算力平台 baseline 源码部署 - -**项目目标:**在算力平台上拉取 fused\_moe 的 baseline 源码,快速跑通最小闭环,完成 pybind 接口对接、正确性验证和 benchmark 测试,并记录一份 baseline 性能结果,为后续算子优化提供对比基准。 +**项目目标:**在算力平台上拉取 Fused MoE 的 baseline 源码,快速跑通最小闭环,并记录一份 baseline 性能结果,为后续算子优化提供对比基准。 ### 步骤 1:检查运行环境 @@ -346,7 +288,7 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh * “fused\_moe\_i8\_tn\_topk1/2/3”:分别对应选择前 1 / 2 / 3 个专家场景下的 MoE 算子; - * “avg\_ms”:平均算子执行耗时(毫秒),这里不计算预热时间,只计算正式迭代的时间; + * “avg\_ms”:平均算子执行耗时(毫秒),这里不计算预热时间,只计算正式迭代的时间��� * “TOPS”:Tera Operations Per Second,本次 MoE 算子的总运算量 / 实际耗时; @@ -361,11 +303,11 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh | 终端长时间无输出 | Kernel 死锁或 MACA 驱动异常 | 减小测试 shape;重启容器或设备 | | avg\_ms 异常抖动(±50%) | 其他进程占用 GPU | 关闭其他占用显存的进程,单机单任务运行 | -## 七、项目实践2-Kernel Swift 智能算子迁移系统自动调优 +## 六、项目实践2-Kernel Swift 智能算子迁移系统自动调优 系统链接:[https://deeplink.org.cn/kernelswift/task](https://deeplink.org.cn/kernelswift/task) -**项目目标:**基于 KernelSwift 智能算子迁移系统,对 fused\_moe 算子进行在线自动调优。通过输入标准 PyTorch 代码,一键生成适配沐曦硬件的高性能实现;并利用算子广场复用与可视化管理功能,高效完成算子优化与全流程追踪。 +**项目目标:**基于 KernelSwift 智能算子迁移系统,对 Fused MoE 算子进行在线自动调优。通过输入算子代码,一键生成适配沐曦硬件的高性能实现,高效完成算子优化与全流程追踪。 ### 步骤1:复用算子广场的 fused\_moe 算子进行二次优化 @@ -535,7 +477,7 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh --- -## 八、Agent使用说明 +## 七、Agent使用说明 在本模块中,Agent可以帮助你完成以下任务: @@ -603,7 +545,7 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh 请帮我在算子广场检索 fused_moe 算子 ``` -## 九、常见问题与注意事项 +## 八、常见问题与注意事项 ### 算力平台 basline 源码部署项目: From 6e6419fdb47b65cbbfab27a957b479f1f65877aa Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 14:58:55 +0800 Subject: [PATCH 04/15] Fused MoE --- ...Baseline入门:快速跑通最小闭环教程.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index 1541e65..4aad44a 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -71,6 +71,7 @@ **代码准备:** * 已获取 Fused MoE Baseline 源码。 + ## 五、项目实践1-算力平台 baseline 源码部署 @@ -288,7 +289,7 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh * “fused\_moe\_i8\_tn\_topk1/2/3”:分别对应选择前 1 / 2 / 3 个专家场景下的 MoE 算子; - * “avg\_ms”:平均算子执行耗时(毫秒),这里不计算预热时间,只计算正式迭代的时间��� + * “avg\_ms”:平均算子执行耗时(毫秒),这里不计算预热时间,只计算正式迭代的���间��� * “TOPS”:Tera Operations Per Second,本次 MoE 算子的总运算量 / 实际耗时; @@ -414,11 +415,11 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh 5. 提交优化任务:点击右下角 \[优化\] 按钮,系统将提交任务并进入 \[生成中\] 状态 -![image.png](https://origin.picgo.net/2026/06/04/image659a3f15b96be22c1.png) + ![image.png](https://origin.picgo.net/2026/06/04/image659a3f15b96be22c1.png) -完成上述步骤将看到如下界面: + 完成上述步骤将看到如下界面: -![image.png](https://origin.picgo.net/2026/06/04/image75c4ccf75e90cf428.png) + ![image.png](https://origin.picgo.net/2026/06/04/image75c4ccf75e90cf428.png) ### 步骤2:任务查看与结果管理 @@ -473,9 +474,7 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh * 任务失败:查看错误日志,常见原因包括代码不符合规范、测试用例错误、硬件适配问题,修改后重新提交任务; * 排队时间长:可调整提交时间,或联系平台管理员确认资源状态。 - ---- ## 七、Agent使用说明 From 925a3de34a11fb1a576f7f7716d034bd121780d0 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:06:31 +0800 Subject: [PATCH 05/15] =?UTF-8?q?fused=5Fmoe=E6=95=99=E7=A8=8B=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...入门:快速跑通最小闭环教程.md | 149 +++++++++--------- 1 file changed, 75 insertions(+), 74 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index 4aad44a..cac3326 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -59,6 +59,7 @@ * 已进入赛事专属镜像环境。 + **工具准备:** * 已准备 Agent 工具; @@ -173,127 +174,127 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh 且成功生成 `fused_moe/standalone/fused_moe_i8_tn/build/fused_moe_i8_tn_pybind.cpython-310-x86_64-linux-gnu.so` 文件 - **常见问题:** +**常见问题:** - | 报错 | 原因 | 解决办法 | - | --- | --- | --- | - | `Python.h: No such file or directory` | Python 头文件路径未找到 | 确认 `PYTHON_BIN` 路径正确,脚本自动探测 `sysconfig.get_path('include')` | - | `libpython3.x.so: cannot find` | 链接时找不到 Python 库 | 1、执行 `find $CONDA_PREFIX -name "libpython3*.so*"`查找绝对路径
2、将该路径赋值给 `LIBPYTHON_PATH` | - | `recompile with -fPIC` | 编译未开启位置无关代码 | 确保 `mxcc`/ `g++`编译参数中有 `-fPIC` | - | `permission denied` | 无脚本执行权限 | `chmod +x scripts/*.sh` | - | `undefined reference to Py_...` | Python 版本不匹配 | 确认编译脚本中`PYTHON_BIN`路径与当前运行的 Python 环境完全一致 | +| 报错 | 原因 | 解决办法 | +| --- | --- | --- | +| `Python.h: No such file or directory` | Python 头文件路径未找到 | 确认 `PYTHON_BIN` 路径正确,脚本自动探测 `sysconfig.get_path('include')` | +| `libpython3.x.so: cannot find` | 链接时找不到 Python 库 | 1、执行 `find $CONDA_PREFIX -name "libpython3*.so*"`查找绝对路径
2、将该路径赋值给 `LIBPYTHON_PATH` | +| `recompile with -fPIC` | 编译未开启位置无关代码 | 确保 `mxcc`/ `g++`编译参数中有 `-fPIC` | +| `permission denied` | 无脚本执行权限 | `chmod +x scripts/*.sh` | +| `undefined reference to Py_...` | Python 版本不匹配 | 确认编译脚本中`PYTHON_BIN`路径与当前运行的 Python 环境完全一致 | - ### 步骤 4:正确性测试 +### 步骤 4:正确性测试 - **目标:**验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果的数值是否完全一致。 +**目标:**验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果的数值是否完全一致。 - **操作:**运行 `fused_moe/scripts/run_fused_moe_i8_tn_pybind_test.sh` 脚本 +**操作:**运行 `fused_moe/scripts/run_fused_moe_i8_tn_pybind_test.sh` 脚本 - **命令示例:** +**命令示例:** - ```apl - bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend all # 运行全部计算方式 +```apl +bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend all # 运行全部计算方式 - # --backend:选择计算方式 - # 只测 pybind: - bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend pybind - # 只测 triton: - bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend triton - # 只测 reference: - bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference - ``` +# --backend:选择计算方式 +# 只测 pybind: +bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend pybind +# 只测 triton: +bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend triton +# 只测 reference: +bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference +``` - **预期结果:** +**预期结果:** - 编译成功无报错,输出示例如下: +编译成功无报错,输出示例如下: - > pybind:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.69531, C\[last\]=-0.44531 +> pybind:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.69531, C\[last\]=-0.44531 - > pybind:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.57813, C\[last\]=-0.49805 +> pybind:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.57813, C\[last\]=-0.49805 - > pybind:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.08594, C\[last\]=-0.33594 +> pybind:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.08594, C\[last\]=-0.33594 - > reference:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.6934, C\[last\]=-0.4451 +> reference:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.6934, C\[last\]=-0.4451 - > reference:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.5768, C\[last\]=-0.4975 +> reference:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.5768, C\[last\]=-0.4975 - > reference:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.0875, C\[last\]=-0.3362 +> reference:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.0875, C\[last\]=-0.3362 - > triton:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.69337, C\[last\]=-0.44513 +> triton:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.69337, C\[last\]=-0.44513 - > triton:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.57678, C\[last\]=-0.49749 +> triton:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.57678, C\[last\]=-0.49749 - > triton:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.08748, C\[last\]=-0.33618 +> triton:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.08748, C\[last\]=-0.33618 - **结果解释:** +**结果解释:** - * “pybind/reference/Triton”:三种计算方式; +* “pybind/reference/Triton”:三种计算方式; - * “fused\_moe\_i8\_tn\_topk1/2/3 passed”:测试算子通过数值校验,数值误差在允许范围内且无明显异常,否则会报错 FAILED; +* “fused\_moe\_i8\_tn\_topk1/2/3 passed”:测试算子通过数值校验,数值误差在允许范围内且无明显异常,否则会报错 FAILED; - * ”rows=... , cols=...“:输出 Tensor 的行和列的大小; +* ”rows=... , cols=...“:输出 Tensor 的行和列的大小; - * ”sample C\[0\]=... , C\[last\]=...“:首尾采样值,用于辅助定位数值偏差,不作为精度判定依据。 +* ”sample C\[0\]=... , C\[last\]=...“:首尾采样值,用于辅助定位数值偏差,不作为精度判定依据。 - **常见问题:** +**常见问题:** - | 报错 | 原因 | 解决办法 | - | --- | --- | --- | - | `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so`已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` | - | `FAILED: max abs diff too large` | 数值误差超过阈值 | 检查 scale 是否应用位置错误;确认 TopK 索引与权重是否一致 | - | `FAILED: shape mismatch` | 输出张量形状不一致 | 检查 Token Permute / Unpermute 逻辑;确认 expert 维度对齐 | - | `FAILED: NaN or Inf detected` | 溢出或未初始化内存 | 检查 INT8 乘加是否溢出;确认 GEMM 输出是否反量化 | - | 终端长时间无输出 | Kernel 死锁或 Launch 失败 | 减小测试 shape;检查是否触发 MACA 硬件限制 | +| 报错 | 原因 | 解决办法 | +| --- | --- | --- | +| `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so`已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` | +| `FAILED: max abs diff too large` | 数值误差超过阈值 | 检查 scale 是否应用位置错误;确认 TopK 索引与权重是否一致 | +| `FAILED: shape mismatch` | 输出张量形状不一致 | 检查 Token Permute / Unpermute 逻辑;确认 expert 维度对齐 | +| `FAILED: NaN or Inf detected` | 溢出或未初始化内存 | 检查 INT8 乘加是否溢出;确认 GEMM 输出是否反量化 | +| 终端长时间无输出 | Kernel 死锁或 Launch 失败 | 减小测试 shape;检查是否触发 MACA 硬件限制 | - ### 步骤5:性能测试 +### 步骤5:性能测试 - **目标:**输出 benchmark 结果对比表 +**目标:**输出 benchmark 结果对比表 - **操作:**运行 `fused_moe/scripts/run_fused_moe_i8_tn_benchmark.sh` 脚本 +**操作:**运行 `fused_moe/scripts/run_fused_moe_i8_tn_benchmark.sh` 脚本 - **命令示例:** +**命令示例:** - ```apl - bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 20 - # --backend:选择计算方式 - # --warmup:设置预热次数 - # --iters:设置迭代次数 - ``` +```apl +bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 20 +# --backend:选择计算方式 +# --warmup:设置预热次数 +# --iters:设置迭代次数 +``` - **预期结果:** +**预期结果:** - 编译成功无报错,输出示例如下: +编译成功无报错,输出示例如下: - > pybind:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=0.308978, TOPS=0.027149, warmup=5, iters=20 +> pybind:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=0.308978, TOPS=0.027149, warmup=5, iters=20 - > pybind:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=0.304500, TOPS=0.055098, warmup=5, iters=20 +> pybind:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=0.304500, TOPS=0.055098, warmup=5, iters=20 - > pybind:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=0.297775, TOPS=0.042256, warmup=5, iters=20 +> pybind:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=0.297775, TOPS=0.042256, warmup=5, iters=20 - > reference:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=1685.43, TOPS=0.000005, warmup=5, iters=20 +> reference:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=1685.43, TOPS=0.000005, warmup=5, iters=20 - > reference:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=3384.52, TOPS=0.000005, warmup=5, iters=20 +> reference:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=3384.52, TOPS=0.000005, warmup=5, iters=20 - > reference:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=2532.14, TOPS=0.000005, warmup=5, iters=20 +> reference:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=2532.14, TOPS=0.000005, warmup=5, iters=20 - > triton:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=19.013421, TOPS=0.000441, warmup=5, iters=20 +> triton:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=19.013421, TOPS=0.000441, warmup=5, iters=20 - > triton:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=16.745914, TOPS=0.001002, warmup=5, iters=20 +> triton:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=16.745914, TOPS=0.001002, warmup=5, iters=20 - > triton:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=19.630328, TOPS=0.000641, warmup=5, iters=20 +> triton:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=19.630328, TOPS=0.000641, warmup=5, iters=20 - **结果解释:** +**结果解释:** - * “pybind/reference/Triton”:三种计算方式; +* “pybind/reference/Triton”:三种计算方式; - * “fused\_moe\_i8\_tn\_topk1/2/3”:分别对应选择前 1 / 2 / 3 个专家场景下的 MoE 算子; +* “fused\_moe\_i8\_tn\_topk1/2/3”:分别对应选择前 1 / 2 / 3 个专家场景下的 MoE 算子; - * “avg\_ms”:平均算子执行耗时(毫秒),这里不计算预热时间,只计算正式迭代的���间��� +* “avg\_ms”:平均算子执行耗时(毫秒),这里不计算预热时间,只计算正式迭代的���间��� - * “TOPS”:Tera Operations Per Second,本次 MoE 算子的总运算量 / 实际耗时; +* “TOPS”:Tera Operations Per Second,本次 MoE 算子的总运算量 / 实际耗时; - * “warmup=5, iters=20”:预热轮数和正式迭代数。 +* “warmup=5, iters=20”:预热轮数和正式迭代数。 **常见错误:** @@ -456,7 +457,7 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh * 顶部:任务名称、创建/更新时间、适配硬件、当前轮次进度 -![image.png](https://origin.picgo.net/2026/06/04/image9e9b23d9b25ddfe25.png) + ![image.png](https://origin.picgo.net/2026/06/04/image9e9b23d9b25ddfe25.png) 3. 获取优化结果:当前任务状态为【已完成】时,可在详情页查看优化结果: From 50e9a1f8babc746bdb5aba9efa101603971ac311 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:14:19 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E6=8E=92=E7=89=88=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...入门:快速跑通最小闭环教程.md | 46 ++++++++----------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index cac3326..d4f6133 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -57,11 +57,13 @@ **环境准备:** + * 已进入赛事专属镜像环境。 **工具准备:** + * 已准备 Agent 工具; * 已配置 Token / API Key; @@ -71,6 +73,7 @@ **代码准备:** + * 已获取 Fused MoE Baseline 源码。 @@ -129,6 +132,7 @@ EOF | `Python 3.6.x/ Python 3.7.x` | Python 版本过低 | `conda install python=3.12` (推荐3.10+) | | `ModuleNotFoundError: numpy` | 当前 Python 缺少依赖 | `pip install numpy torch triton` | + ### 步骤 2:进入项目目录 **目标:**进入本模块所需的源码目录。 @@ -186,9 +190,9 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh ### 步骤 4:正确性测试 -**目标:**验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果的数值是否完全一致。 +**目标:** 验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果的数值是否完全一致。 -**操作:**运行 `fused_moe/scripts/run_fused_moe_i8_tn_pybind_test.sh` 脚本 +**操作:** 运行 `fused_moe/scripts/run_fused_moe_i8_tn_pybind_test.sh` 脚本 **命令示例:** @@ -208,22 +212,16 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference 编译成功无报错,输出示例如下: -> pybind:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.69531, C\[last\]=-0.44531 - -> pybind:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.57813, C\[last\]=-0.49805 - +> pybind:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.69531, C\[last\]=-0.44531 +> pybind:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.57813, C\[last\]=-0.49805 > pybind:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.08594, C\[last\]=-0.33594 -> reference:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.6934, C\[last\]=-0.4451 - -> reference:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.5768, C\[last\]=-0.4975 - +> reference:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.6934, C\[last\]=-0.4451 +> reference:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.5768, C\[last\]=-0.4975 > reference:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.0875, C\[last\]=-0.3362 -> triton:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.69337, C\[last\]=-0.44513 - -> triton:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.57678, C\[last\]=-0.49749 - +> triton:fused\_moe\_i8\_tn\_topk1 passed: rows=256, cols=128, sample C\[0\]=0.69337, C\[last\]=-0.44513 +> triton:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.57678, C\[last\]=-0.49749 > triton:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.08748, C\[last\]=-0.33618 **结果解释:** @@ -249,9 +247,9 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference ### 步骤5:性能测试 -**目标:**输出 benchmark 结果对比表 +**目标:** 输出 benchmark 结果对比表 -**操作:**运行 `fused_moe/scripts/run_fused_moe_i8_tn_benchmark.sh` 脚本 +**操作:** 运行 `fused_moe/scripts/run_fused_moe_i8_tn_benchmark.sh` 脚本 **命令示例:** @@ -267,21 +265,15 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 编译成功无报错,输出示例如下: > pybind:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=0.308978, TOPS=0.027149, warmup=5, iters=20 - > pybind:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=0.304500, TOPS=0.055098, warmup=5, iters=20 - > pybind:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=0.297775, TOPS=0.042256, warmup=5, iters=20 > reference:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=1685.43, TOPS=0.000005, warmup=5, iters=20 - -> reference:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=3384.52, TOPS=0.000005, warmup=5, iters=20 - +> reference:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=3384.52, TOPS=0.000005, warmup=5, iters=20 > reference:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=2532.14, TOPS=0.000005, warmup=5, iters=20 -> triton:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=19.013421, TOPS=0.000441, warmup=5, iters=20 - +> triton:fused\_moe\_i8\_tn\_topk1 benchmark: avg\_ms=19.013421, TOPS=0.000441, warmup=5, iters=20 > triton:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=16.745914, TOPS=0.001002, warmup=5, iters=20 - > triton:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=19.630328, TOPS=0.000641, warmup=5, iters=20 **结果解释:** @@ -416,7 +408,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 5. 提交优化任务:点击右下角 \[优化\] 按钮,系统将提交任务并进入 \[生成中\] 状态 - ![image.png](https://origin.picgo.net/2026/06/04/image659a3f15b96be22c1.png) + ![image.png](https://origin.picgo.net/2026/06/04/image659a3f15b96be22c1.png) 完成上述步骤将看到如下界面: @@ -424,7 +416,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 ### 步骤2:任务查看与结果管理 -**目标:**在新建优化任务后可追踪任务进度,获取优化结果 +**目标:** 在新建优化任务后可追踪任务进度,获取优化结果 **操作:** @@ -457,7 +449,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 * 顶部:任务名称、创建/更新时间、适配硬件、当前轮次进度 - ![image.png](https://origin.picgo.net/2026/06/04/image9e9b23d9b25ddfe25.png) + ![image.png](https://origin.picgo.net/2026/06/04/image9e9b23d9b25ddfe25.png) 3. 获取优化结果:当前任务状态为【已完成】时,可在详情页查看优化结果: From 617bdcc720f6bbbe7a5f233845f564a8f75b88c7 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:15:21 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E6=8E=92=E7=89=88=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...aseline入门:快速跑通最小闭环教程.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index d4f6133..8c1be30 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -83,9 +83,9 @@ ### 步骤 1:检查运行环境 -**目标:**确认当前环境满足本模块运行要求,包括编译器、MXMACA 工具链及 Python 依赖库。 +**目标:** 确认当前环境满足本模块运行要求,包括编译器、MXMACA 工具链及 Python 依赖库。 -**操作:**检查 Python、编译工具、MXMACA 编译器及关键 Python 包(numpy、torch、triton)是否存在。 +**操作:** 检查 Python、编译工具、MXMACA 编译器及关键 Python 包(numpy、torch、triton)是否存在。 **命令示例:** @@ -135,9 +135,9 @@ EOF ### 步骤 2:进入项目目录 -**目标:**进入本模块所需的源码目录。 +**目标:** 进入本模块所需的源码目录。 -**操作:**切换到指定项目路径。 +**操作:** 切换到指定项目路径。 **命令示例:** @@ -154,9 +154,9 @@ cd /root/Project/fused_moe # 这里需要替换成自己的项目路径 ### 步骤 3:pybind 编译 -**目标:**将用 C++ 编写的 fused\_moe 算子编译为 Python 可调用的 pybind 模块。 +**目标:** 将用 C++ 编写的 fused\_moe 算子编译为 Python 可调用的 pybind 模块。 -**操作:**运行 `fused_moe/scripts/build_fused_moe_i8_tn_pybind.sh` 脚本 +**操作:** 运行 `fused_moe/scripts/build_fused_moe_i8_tn_pybind.sh` 脚本 **命令示例:** From 639db1adae01c2ea3a8e9d10947d5b7f8b6f04df Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:18:47 +0800 Subject: [PATCH 08/15] =?UTF-8?q?fused=5Fmoe=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...入门:快速跑通最小闭环教程.md | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index 8c1be30..ce6b91a 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -83,9 +83,9 @@ ### 步骤 1:检查运行环境 -**目标:** 确认当前环境满足本模块运行要求,包括编译器、MXMACA 工具链及 Python 依赖库。 +**目标:**确认当前环境满足本模块运行要求,包括编译器、MXMACA 工具链及 Python 依赖库。 -**操作:** 检查 Python、编译工具、MXMACA 编译器及关键 Python 包(numpy、torch、triton)是否存在。 +**操作:**检查 Python、编译工具、MXMACA 编译器及关键 Python 包(numpy、torch、triton)是否存在。 **命令示例:** @@ -135,9 +135,9 @@ EOF ### 步骤 2:进入项目目录 -**目标:** 进入本模块所需的源码目录。 +**目标:**进入本模块所需的源码目录。 -**操作:** 切换到指定项目路径。 +**操作:**切换到指定项目路径。 **命令示例:** @@ -154,9 +154,9 @@ cd /root/Project/fused_moe # 这里需要替换成自己的项目路径 ### 步骤 3:pybind 编译 -**目标:** 将用 C++ 编写的 fused\_moe 算子编译为 Python 可调用的 pybind 模块。 +**目标:**将用 C++ 编写的 fused\_moe 算子编译为 Python 可调用的 pybind 模块。 -**操作:** 运行 `fused_moe/scripts/build_fused_moe_i8_tn_pybind.sh` 脚本 +**操作:**运行 `fused_moe/scripts/build_fused_moe_i8_tn_pybind.sh` 脚本 **命令示例:** @@ -178,6 +178,7 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh 且成功生成 `fused_moe/standalone/fused_moe_i8_tn/build/fused_moe_i8_tn_pybind.cpython-310-x86_64-linux-gnu.so` 文件 + **常见问题:** | 报错 | 原因 | 解决办法 | @@ -190,9 +191,9 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh ### 步骤 4:正确性测试 -**目标:** 验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果的数值是否完全一致。 +**目标:**验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果的数值是否完全一致。 -**操作:** 运行 `fused_moe/scripts/run_fused_moe_i8_tn_pybind_test.sh` 脚本 +**操作:**运行 `fused_moe/scripts/run_fused_moe_i8_tn_pybind_test.sh` 脚本 **命令示例:** @@ -224,6 +225,7 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference > triton:fused\_moe\_i8\_tn\_topk2 passed: rows=512, cols=128, sample C\[0\]=-0.57678, C\[last\]=-0.49749 > triton:fused\_moe\_i8\_tn\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.08748, C\[last\]=-0.33618 + **结果解释:** * “pybind/reference/Triton”:三种计算方式; @@ -247,9 +249,9 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference ### 步骤5:性能测试 -**目标:** 输出 benchmark 结果对比表 +**目标:**输出 benchmark 结果对比表 -**操作:** 运行 `fused_moe/scripts/run_fused_moe_i8_tn_benchmark.sh` 脚本 +**操作:**运行 `fused_moe/scripts/run_fused_moe_i8_tn_benchmark.sh` 脚本 **命令示例:** @@ -276,6 +278,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 > triton:fused\_moe\_i8\_tn\_topk2 benchmark: avg\_ms=16.745914, TOPS=0.001002, warmup=5, iters=20 > triton:fused\_moe\_i8\_tn\_topk3 benchmark: avg\_ms=19.630328, TOPS=0.000641, warmup=5, iters=20 + **结果解释:** * “pybind/reference/Triton”:三种计算方式; From 0489ac69b49468e973afc80af6e7e2b16fa63d2d Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:21:57 +0800 Subject: [PATCH 09/15] =?UTF-8?q?fused=5Fmoe=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Baseline入门:快速跑通最小闭环教程.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index ce6b91a..3392498 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -180,7 +180,8 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh **常见问题:** - + + | 报错 | 原因 | 解决办法 | | --- | --- | --- | | `Python.h: No such file or directory` | Python 头文件路径未找到 | 确认 `PYTHON_BIN` 路径正确,脚本自动探测 `sysconfig.get_path('include')` | @@ -236,9 +237,11 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference * ”sample C\[0\]=... , C\[last\]=...“:首尾采样值,用于辅助定位数值偏差,不作为精度判定依据。 + **常见问题:** + | 报错 | 原因 | 解决办法 | | --- | --- | --- | | `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so`已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` | @@ -290,9 +293,10 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 * “TOPS”:Tera Operations Per Second,本次 MoE 算子的总运算量 / 实际耗时; * “warmup=5, iters=20”:预热轮数和正式迭代数。 - + + +**常见问题:** -**常见错误:** | 报错 | 原因 | 解决办法 | | --- | --- | --- | From 749537aed3af269b11743aba00632923e98c356f Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:24:50 +0800 Subject: [PATCH 10/15] =?UTF-8?q?fused=5Fmoe=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...入门:快速跑通最小闭环教程.md | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index 3392498..18e1546 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -236,19 +236,17 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference * ”rows=... , cols=...“:输出 Tensor 的行和列的大小; * ”sample C\[0\]=... , C\[last\]=...“:首尾采样值,用于辅助定位数值偏差,不作为精度判定依据。 - - -**常见问题:** - -| 报错 | 原因 | 解决办法 | -| --- | --- | --- | -| `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so`已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` | -| `FAILED: max abs diff too large` | 数值误差超过阈值 | 检查 scale 是否应用位置错误;确认 TopK 索引与权重是否一致 | -| `FAILED: shape mismatch` | 输出张量形状不一致 | 检查 Token Permute / Unpermute 逻辑;确认 expert 维度对齐 | -| `FAILED: NaN or Inf detected` | 溢出或未初始化内存 | 检查 INT8 乘加是否溢出;确认 GEMM 输出是否反量化 | -| 终端长时间无输出 | Kernel 死锁或 Launch 失败 | 减小测试 shape;检查是否触发 MACA 硬件限制 | + **常见问题:** + + | 报错 | 原因 | 解决办法 | + | --- | --- | --- | + | `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so`已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` | + | `FAILED: max abs diff too large` | 数值误差超过阈值 | 检查 scale 是否应用位置错误;确认 TopK 索引与权重是否一致 | + | `FAILED: shape mismatch` | 输出张量形状不一致 | 检查 Token Permute / Unpermute 逻辑;确认 expert 维度对齐 | + | `FAILED: NaN or Inf detected` | 溢出或未初始化内存 | 检查 INT8 乘加是否溢出;确认 GEMM 输出是否反量化 | + | 终端长时间无输出 | Kernel 死锁或 Launch 失败 | 减小测试 shape;检查是否触发 MACA 硬件限制 | ### 步骤5:性能测试 From 2fe36e904d4c83e2cc4cd0610f02ea91fa5d9b5a Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:26:45 +0800 Subject: [PATCH 11/15] =?UTF-8?q?fused=5Fmoe=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ne入门:快速跑通最小闭环教程.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index 18e1546..a6c3546 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -238,15 +238,16 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference * ”sample C\[0\]=... , C\[last\]=...“:首尾采样值,用于辅助定位数值偏差,不作为精度判定依据。 - **常见问题:** +**常见问题:** - | 报错 | 原因 | 解决办法 | - | --- | --- | --- | - | `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so`已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` | - | `FAILED: max abs diff too large` | 数值误差超过阈值 | 检查 scale 是否应用位置错误;确认 TopK 索引与权重是否一致 | - | `FAILED: shape mismatch` | 输出张量形状不一致 | 检查 Token Permute / Unpermute 逻辑;确认 expert 维度对齐 | - | `FAILED: NaN or Inf detected` | 溢出或未初始化内存 | 检查 INT8 乘加是否溢出;确认 GEMM 输出是否反量化 | - | 终端长时间无输出 | Kernel 死锁或 Launch 失败 | 减小测试 shape;检查是否触发 MACA 硬件限制 | +| 报错 | 原因 | 解决办法 | +| --- | --- | --- | +| `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so`已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` | +| `FAILED: max abs diff too large` | 数值误差超过阈值 | 检查 scale 是否应用位置错误;确认 TopK 索引与权重是否一致 | +| `FAILED: shape mismatch` | 输出张量形状不一致 | 检查 Token Permute / Unpermute 逻辑;确认 expert 维度对齐 | +| `FAILED: NaN or Inf detected` | 溢出或未初始化内存 | 检查 INT8 乘加是否溢出;确认 GEMM 输出是否反量化 | +| 终端长时间无输出 | Kernel 死锁或 Launch 失败 | 减小测试 shape;检查是否触发 MACA 硬件限制 | + ### 步骤5:性能测试 From 922744d06f84834b64cd7b594fab1c8e7bbfdf12 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:31:19 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Fused MoE Baseline入门:快速跑通最小闭环教程.md | 1 + 1 file changed, 1 insertion(+) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index a6c3546..c97bd1b 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -239,6 +239,7 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference **常见问题:** + | 报错 | 原因 | 解决办法 | | --- | --- | --- | From ca4555201f87e732444c4143369589409334d4bc Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:35:06 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ne入门:快速跑通最小闭环教程.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index c97bd1b..674009a 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -237,18 +237,17 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference * ”sample C\[0\]=... , C\[last\]=...“:首尾采样值,用于辅助定位数值偏差,不作为精度判定依据。 - + **常见问题:** - -| 报错 | 原因 | 解决办法 | -| --- | --- | --- | -| `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so`已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` | -| `FAILED: max abs diff too large` | 数值误差超过阈值 | 检查 scale 是否应用位置错误;确认 TopK 索引与权重是否一致 | -| `FAILED: shape mismatch` | 输出张量形状不一致 | 检查 Token Permute / Unpermute 逻辑;确认 expert 维度对齐 | -| `FAILED: NaN or Inf detected` | 溢出或未初始化内存 | 检查 INT8 乘加是否溢出;确认 GEMM 输出是否反量化 | -| 终端长时间无输出 | Kernel 死锁或 Launch 失败 | 减小测试 shape;检查是否触发 MACA 硬件限制 | +| 报错 | 原因 | 解决办法 | +| :--- | :--- | :--- | +| `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so` 已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` | +| `FAILED: max abs diff too large` | 数值误差超过阈值 | 检查 scale 是否应用位置错误;确认 TopK 索引与权重是否一致 | +| `FAILED: shape mismatch` | 输出张量形状不一致 | 检查 Token Permute / Unpermute 逻辑;确认 expert 维度对齐 | +| `FAILED: NaN or Inf detected` | 溢出或未初始化内存 | 检查 INT8 乘加是否溢出;确认 GEMM 输出是否反量化 | +| 终端长时间无输出 | Kernel 死锁或 Launch 失败 | 减小测试 shape;检查是否触发 MACA 硬件限制 | ### 步骤5:性能测试 From 687be79b79aa09ca6c7b001024bb7fb9cb4b45c2 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:39:57 +0800 Subject: [PATCH 14/15] =?UTF-8?q?fused=5Fmoe=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...入门:快速跑通最小闭环教程.md | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index 674009a..5cd10d9 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -53,29 +53,22 @@ ## 四、前置准备 -开始实战前,请确认你已经完成以下准备: +**开始实战前,请确认你已经完成以下准备:** **环境准备:** - * 已进入赛事专属镜像环境。 - **工具准备:** - -* 已准备 Agent 工具; - -* 已配置 Token / API Key; - -* 已确认 Agent 可以正常调用模型。 - +* 已准备 Agent 工具; +* 已配置 Token / API Key; +* 已确认 Agent 可以正常调用模型。 **代码准备:** +* 已获取 Fused MoE Baseline 源码。 -* 已获取 Fused MoE Baseline 源码。 - ## 五、项目实践1-算力平台 baseline 源码部署 @@ -113,6 +106,7 @@ else: EOF ``` + **预期结果:** * Python 3.12.11 @@ -145,6 +139,7 @@ EOF cd /root/Project/fused_moe # 这里需要替换成自己的项目路径 ``` + **预期结果:** 终端提示符路径显示为 fused\_moe 项目路径: @@ -170,6 +165,7 @@ bash scripts/build_fused_moe_i8_tn_pybind.sh PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh ``` + **预期结果:** 编译成功无报错,终端显示: @@ -209,7 +205,8 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend triton # 只测 reference: bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference ``` - + + **预期结果:** 编译成功无报错,输出示例如下: @@ -264,6 +261,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 # --iters:设置迭代次数 ``` + **预期结果:** 编译成功无报错,输出示例如下: From 7bf35ae1ae0bd391573fc44008b52633a402eb16 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Fri, 5 Jun 2026 15:42:19 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E5=9B=BE=E7=89=87=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...d MoE Baseline入门:快速跑通最小闭环教程.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md index 5cd10d9..6d3b3ee 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/Fused MoE Baseline入门:快速跑通最小闭环教程.md @@ -537,9 +537,9 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 6. **KernelSwift 系统搜索算子** -```plaintext -请帮我在算子广场检索 fused_moe 算子 -``` + ```plaintext + 请帮我在算子广场检索 fused_moe 算子 + ``` ## 八、常见问题与注意事项