From 8fb0109857ebb8c29a392773d957e0439294d5f8 Mon Sep 17 00:00:00 2001 From: "Xinyi Wu (i26343)" Date: Tue, 23 Jun 2026 10:54:51 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20MCTLASS=5FFused=20MoE?= =?UTF-8?q?=20=E7=AE=97=E5=AD=90=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MCTLASS_Fused MoE 算子优化.md | 365 ++++++++---------- 1 file changed, 170 insertions(+), 195 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md index 67c8bbe..b40ce99 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md @@ -1,26 +1,35 @@ -# MCTLASS\_Fused MoE 算子优化 - -# Fused MoE Baseline 入门:快速跑通最小闭环教程 +# Fused MoE 算子入门:从 Benchmark 验证到 XPU-OJ 接口提交 ## 一、教程定位 -本教程是参赛训练课程的 baseline 入门模块,主要帮助用户快速跑通 Fused MoE 的最小可运行流程。 +本教程是赛题二 **Fused MoE** 任务的“benchmark 性能基线与 XPU-OJ 提交衔接”模块,主要帮助学员跑通目标算子的 benchmark 脚本,理解原库 API、输入输出结构、性能指标和性能基线结果,并进一步读懂 XPU-OJ 题目包中的接口约定、测试数据、参考输出和精度要求。 -完成本教程后,用户应能够完成源码编译、正确性测试和 benchmark 测试,并记录一份 baseline 性能结果,为后续算子优化提供对比基准。 +需要特别说明: + +* 本教程不提供可直接提交的标准答案代码。 + +* 本教程仅提供冒烟级 starter 示例代码,用于验证环境、语言、提交链路和 `run_kernel(...)` 接口。 + +* benchmark 脚本用于建立性能基线,不是最终提交物。 + +* XPU-OJ 题包中的 `baseline()` 属于 OJ 后台参考实现,用于生成 `output_ref`,不是选手提交代码。 + +* 选手最终需要自行实现 `run_kernel(...)`,并在正确性通过后继续优化性能。 + + +完成本教程后,学员应能够跑通 benchmark 脚本,记录性能基线结果,读懂 XPU-OJ 题包,理解 OJ 的测试输入与参考实现,并完成一次冒烟级 OJ 提交。 ## 二、学习目标 完成本模块后,你将能够: -1. 理解 Fused MoE 推理算子及 int8 量化在大模型推理加速中的核心作用与优化意义; +1. 理解 Fused MoE 推理算子的基本作用、输入输出和典型应用场景; -2. 完成环境配置和 Fused MoE baseline 源码准备; +2. 跑通对应 benchmark 脚本,并记录性能基线结果; -3. 跑通 Fused MoE 的最小闭环示例; +3. 学习如何基于 Trition 与 MXMACA C++ 编写 Fused MOE 算子; -4. 理解基于 Trition 与 MXMACA C++ 写Fused MOE 算子; - -5. 完成数值正确性测试,即验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果是否数值完全一致。 +4. 完成数值正确性测试,即验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果是否数值完全一致。 * reference:基于 PyTorch 架构在 CPU 上运行的**数值基准**实现; @@ -30,7 +39,13 @@ * 要求 pybind 和 Triton 结果均与 reference 一致,鼓励参赛选手持续调优 Triton ,使其性能逼近甚至超越 pybind 性能。 -6. 输出 benchmark 结果对比表。 +5. 区分 benchmark 性能基线、OJ 参考实现和选手提交代码; + +6. 读懂对应 XPU-OJ 题包中的题目描述、接口约定、数据范围和精度要求; + +7. 完成一次冒烟级 `run_kernel(...)` 提交,确认 OJ 链路、语言环境和接口调用正常; + +8. 使用 AI Agent 辅助阅读题包、生成初版实现、定位错误并规划性能优化方向。 ## 三、适用对象 @@ -73,18 +88,18 @@ **代码准备:** -* 已获取 Fused MoE Baseline 源码。 +* 已获取 Fused MoE 源码。 -## 五、项目实践1-算力平台 baseline 源码部署 +## 五、项目实践1-算力平台进行 Benchmark 验证 -\*\*项目目标:\*\*在算力平台上拉取 Fused MoE 的 baseline 源码,快速跑通最小闭环,并记录一份 baseline 性能结果,为后续算子优化提供对比基准。 +**项目目标:**跑通 Fused MoE 算子的 benchmark 脚本,建立性能基线,为后续算子优化提供对比基准。 ### 步骤 1:检查运行环境 -\*\*目标:\*\*确认当前环境满足本模块运行要求,包括编译器、MXMACA 工具链及 Python 依赖库。 +**目标:**确认当前环境满足本模块运行要求,包括编译器、MXMACA 工具链及 Python 依赖库。 -\*\*操作:\*\*检查 Python、编译工具、MXMACA 编译器及关键 Python 包(numpy、torch、triton)是否存在。 +**操作:**检查 Python、编译工具、MXMACA 编译器及关键 Python 包(numpy、torch、triton)是否存在。 **命令示例:** @@ -98,9 +113,7 @@ which mxcc # 确认 MACA 编译器存在 python - << 'EOF' import sys deps = ["numpy", "torch", "triton"] - -missing = [ ] - +missing = [] for d in deps: try: __import__(d) @@ -112,7 +125,6 @@ if missing: else: print("[OK] numpy, torch, triton are installed.") EOF - ``` **预期结果:** @@ -123,7 +135,7 @@ EOF * /opt/maca/mxgpu\_llvm/bin/mxcc -* [OK] numpy, torch, triton are installed. +* \[OK\] numpy, torch, triton are installed. **常见问题:** @@ -136,69 +148,51 @@ EOF ### 步骤 2:进入项目目录 -\*\*目标:\*\*进入本模块所需的源码目录:https://gitlink.org.cn/metax-maca/op\_optimization/tree/master/%E5%9F%BA%E4%BA%8EAI%20Agent%E5%BC%80%E5%8F%91%E8%8C%83%E5%BC%8F%E7%9A%84%E5%9B%BD%E4%BA%A7GPU%E5%A4%A7%E6%A8%A1%E5%9E%8B%E6%8E%A8%E7%90%86%E7%AE%97%E5%AD%90%E5%BA%93%E4%BC%98%E5%8C%96%2Fbaselines%2Ffused\_moe +**目标:**进入本模块所需的源码目录。 -1. 克隆代码仓库 - - ```Bash - git clone https://gitlink.org.cn/metax-maca/op\_optimization.git - - ``` - -2. 准备fused\_moe - - -在仓库目录 `op_optimization/基于AI Agent开发范式的国产GPU大模型推理算子库优化` 下,找到 `fused_moe` 文件夹。可以将 `fused_moe` 整个目录复制到工作目录 `data/` 下。 - -**下一步操作:** 切换到 FlashInfer Baseline 项目目录。 - -\*\*操作:\*\*切换到指定项目路径。 +**操作:**切换到指定项目路径。 **命令示例:** ```apl -cd data/fused_moe # 这里需要替换成自己的项目路径 - +cd /root/Project/fused_moe # 这里需要替换成自己的项目路径 ``` **预期结果:** 终端提示符路径显示为 fused\_moe 项目路径: -* (base) root@0a5a9d0c0f06:/data/fused\_moe# +* (base) root@0a5a9d0c0f06:~/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` 脚本 **命令示例:** ```apl bash scripts/build_fused_moe_i8_tn_pybind.sh - ``` 切换 Python 环境命令示例: ```apl -[SUCCESS] /data/fused_moe/standalone/fused_moe_i8_tn/build/fused_moe_i8_tn_pybind.sh - +PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh ``` **预期结果:** 编译成功无报错,终端显示: -* \[SUCCESS\] /data/fused\_moe/standalone/fused\_moe\_i8\_tn/build/fused\_moe\_i8\_tn\_pybind.so +* \[SUCCESS\] /root/Project/fused\_moe/standalone/fused\_moe\_i8\_tn/build/fused\_moe\_i8\_tn\_ pybind.so + + 且成功生成 `fused_moe/standalone/fused_moe_i8_tn/build/fused_moe_i8_tn_pybind.cpython-310-x86_64-linux-gnu.so` 文件 - -且成功生成 `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')` | @@ -206,15 +200,15 @@ bash scripts/build_fused_moe_i8_tn_pybind.sh | `recompile with -fPIC` | 编译未开启位置无关代码 | 确保 `mxcc`/ `g++`编译参数中有 `-fPIC` | | `permission denied` | 无脚本执行权限 | `chmod +x scripts/*.sh` | | `undefined reference to Py_...` | Python 版本不匹配 | 确认编译脚本中`PYTHON_BIN`路径与当前运行的 Python 环境完全一致 | - + ### 步骤 4:正确性测试 - -\*\*目标:\*\*验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果的数值是否完全一致。 - -\*\*操作:\*\*运行 `fused_moe/scripts/run_fused_moe_i8_tn_pybind_test.sh` 脚本 - + +**目标:**验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果的数值是否一致。 + +**操作:**运行 `fused_moe/scripts/run_fused_moe_i8_tn_pybind_test.sh` 脚本 + **命令示例:** - + ```apl bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend all # 运行全部计算方式 @@ -225,80 +219,102 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend pybind 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\_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\_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\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.08748, C\[last\]=-0.33618 - + +> 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\_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\_topk3 passed: rows=384, cols=128, sample C\[0\]=-1.08748, C\[last\]=-0.33618 + **结果解释:** - + * “pybind/reference/Triton”:三种计算方式; - + * “fused\_moe\_i8\_tn\_topk1/2/3 passed”:测试算子通过数值校验,数值误差在允许范围内且无明显异常,否则会报错 FAILED; - -* ”rows=... , cols=...“:输出 Tensor 的行和列的大小; - + +* ”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` | +| `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:性能测试 - -\*\*目标:\*\*输出 benchmark 结果对比表 - -\*\*操作:\*\*运行 `fused_moe/scripts/run_fused_moe_i8_tn_benchmark.sh` 脚本 - + +**目标:**输出 benchmark 结果对比表 + +**操作:**运行 `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:设置迭代次数 - ``` - + **预期结果:** - + 编译成功无报错,输出示例如下: - -> 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\_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\_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: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\_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\_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”:三种计算方式; - + * “fused\_moe\_i8\_tn\_topk1/2/3”:分别对应选择前 1 / 2 / 3 个专家场景下的 MoE 算子; - -* “avg\_ms”:平均算子执行耗时(毫秒),这里不计算预热时间,只计算正式迭代的���间��� - -* “TOPS”:Tera Operations Per Second,本次 MoE 算子的总运算量 / 实际耗���; - + +* “avg\_ms”:平均算子执行耗时(毫秒),这里不计算预热时间,只计算正式迭代的时间; + +* “TOPS”:Tera Operations Per Second,本次 MoE 算子的总运算量 / 实际耗时; + * “warmup=5, iters=20”:预热轮数和正式迭代数。 - + -**常见问题:** +**常见错误:** | 报错 | 原因 | 解决办法 | | --- | --- | --- | @@ -310,11 +326,11 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 系统链接:[https://deeplink.org.cn/kernelswift/task](https://deeplink.org.cn/kernelswift/task) -\*\*项目目标:\*\*基于 KernelSwift 智能算子迁移系统,对 Fused MoE 算子进行在线自动调优。通过输入算子代码,一键生成适配沐曦硬件的高性能实现,高效完成算子优化与全流程追踪。 +**项目目标:**基于 KernelSwift 智能算子迁移系统,对 Fused MoE 算子进行在线自动调优。通过输入算子的 PyTorch 代码,一键生成适配沐曦硬件的高性能实现,高效完成算子优化与全流程追踪。 -### 步骤1:复用算子广场的 fused\_moe 算子进行二次优化 +### 步骤1:复用算子广场的Fused MoE 算子进行二次优化 -\*\*目标:\*\*通过提交算子广场的 fused\_moe 算子代码发起自动优化流程,实现二次优化 +**目标:**通过提交算子广场的 fused\_moe 算子代码发起自动优化流程,实现二次优化 **操作:** @@ -397,10 +413,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 return [hidden_states, w1, w2, topk_weights, topk_idx, top_k, True] def get_init_inputs(): - - return [ ] - - + return [] ``` 2. 进入新建任务页:点击左侧导航栏【新建任务】 ,进入算子提交页面。 @@ -420,15 +433,15 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 5. 提交优化任务:点击右下角 \[优化\] 按钮,系统将提交任务并进入 \[生成中\] 状态 -![image](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/mxPOG5z1vjjJ9nKa/img/904e116c-9c88-4553-9a55-3ef6b29df1fa.png) + [![image1](https://origin.picgo.net/2026/06/23/image1d46e08e5a17fd767.png)](https://www.picgo.net/image/image1.4SHrb4) 完成上述步骤将看到如下界面: -![image](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/mxPOG5z1vjjJ9nKa/img/2f72c9b1-e091-4472-a7e3-619e5ffcc7d7.png) + [![image2](https://origin.picgo.net/2026/06/23/image268924dc11f138788.png)](https://www.picgo.net/image/image2.4SHscu) ### 步骤2:任务查看与结果管理 -**目标:** 在新建优化任务后可追踪任务进度,获取优化结果 +**目标:**在新建优化任务后可追踪任务进度,获取优化结果 **操作:** @@ -441,7 +454,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 * 操作按钮:查看详情、删除任务 - ![image](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/mxPOG5z1vjjJ9nKa/img/2d4678b8-3a3d-4489-8df7-4bef3dffdd63.png) + [![image3](https://origin.picgo.net/2026/06/23/image33091601c9a68bd18.png)](https://www.picgo.net/image/image3.4SHDeY) 2. 追踪任务进度:当前任务状态为【运行中】时,点击任务列表中的【查看详情】按钮,追踪任务进度: @@ -457,11 +470,12 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 4. 性能调优:按设定的演化轮次迭代优化算子性能 + * 顶部:任务名称、创建/更新时间、适配硬件、当前轮次进度 - - ![image](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/mxPOG5z1vjjJ9nKa/img/14a88b07-c778-44ce-beef-6e8510c58daa.png) - + + [![image4](https://origin.picgo.net/2026/06/23/image403daf417d165a79f.png)](https://www.picgo.net/image/image4.4SHVpp) + 3. 获取优化结果:当前任务状态为【已完成】时,可在详情页查看优化结果: * 优化后算子代码支持一键复制 @@ -471,7 +485,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 * 可点击【Diff 对比】查看优化前后代码差异,理解性能提升逻辑 - ![image](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/mxPOG5z1vjjJ9nKa/img/182f7e0b-a35e-4687-8236-ac40acee9b60.png) + [![image5](https://origin.picgo.net/2026/06/23/image58f2b2ea36dad2ef0.png)](https://www.picgo.net/image/image5.4ScbBr) 4. 任务异常处理 @@ -487,7 +501,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 1. **环境检查** ```plaintext - 我正在算力平台部署 fused_moe_baseline 源码。 + 我正在算力平台进行 Fused MoE 的 Benchmark 验证。 需要的环境信息如下: - Python 3.12 - g++ 13.3.0 @@ -497,14 +511,12 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 请帮我确认: 1. 当前环境是否满足编译与运行要求? 2. 是否有潜在的不兼容风险(如 Python 与 libpython 版本)? - ``` 2. **运行测试** ```plaintext 请帮我运行 scripts/run_fused_moe_i8_tn_pybind_test.sh 脚本 - ``` 3. **分析结果** @@ -519,7 +531,6 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 1. 为什么 pybind 比 Triton 快这么多? 2. TOPS 指标是否可信? 3. 当前结果是否已经具备提交价值? - ``` 4. **报错检查** @@ -536,14 +547,12 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 1. 错误原因是什么? 2. 如何用 find 命令定位 libpython3.10.so? 3. 如何在 build_fused_moe_i8_tn_pybind.sh 中正确指定路径? - ``` 5. **代码理解** ```plaintext 请帮我梳理释 benchmark_fused_moe_i8_tn.py 代码整体框架 - ``` 6. **KernelSwift 系统搜索算子** @@ -551,7 +560,6 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 ```plaintext 请帮我在算子广场检索 fused_moe 算子 - ``` ## 八、常见问题与注意事项 @@ -562,7 +570,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 * 确保算力平台已正确安装 Python 和 C++、MACA 编译器及相关运行时库,避免因环境缺失导致编译失败; - * 镜像环境使用 Conda Python 作为默认运行环境,避免系统 Python 与 Conda Python 混用,防止 `Python.h`或 `libpython`路径错误。 + * 镜像环境使用 Conda Python​ 作为默认运行环境,避免系统 Python 与 Conda Python 混用,防止 `Python.h`或 `libpython`路径错误。 2. pybind 编译与链接 @@ -574,11 +582,11 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 3. 性能测试建议 - * benchmark 应在关闭其他占用 GPU 的任务后执行,避免干扰性能数据; + * benchmark 应在关闭其他占用 GPU 的任务​后执行,避免干扰性能数据; * 多次运行取平均值,避免单次抖动影响结果; - * 性能对比应基于相同随机种子、相同 shape、相同 TopK、相同 batch size的条件下进行,降低误差。 + * 性能对比应基于相同随机种子、相同 shape、相同 TopK、相同 batch size​的条件下进行,降低误差。 ### Kernel Swift 智能算子迁移系统自动调优项目: @@ -606,35 +614,24 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 * 优化失败时,可尝试更换适配硬件,或调整算子实现逻辑。 -## 九、下一步学习建议 +## 九、XPU-OJ 冒烟提交:从 Benchmark 验证到评测结果 -完成本模块后,建议继续学习以下内容: +### 9.1 教程定位 -1. \*\*研读 fused\_moe源码:\*\*理解代码的底层逻辑,可尝试修改 `build_fused_moe_i8_tn_pybind.sh`中的编译参数,观察其对 `avg_ms` 的影响; - -2. \*\*算子优化基础:\*\*了解如何分析 Kernel 性能瓶颈; - -3. \*\*性能对比分析:\*\*将 baseline 结果与优化后的结果进行对比分析,明确后续优化方向。 - - -## 十、XPU-OJ 冒烟提交:从 Baseline 到评测结果 - -### 10.1 教程定位 - -前面的 Baseline 教程主要帮助你完成三件事: +前面的Benchmark 验证教程主要帮助你完成三件事: 1. 看懂 Fused MoE 算子的输入、输出和计算逻辑; -2. 在模力方舟环境里跑通本地编译、测试和 benchmark; +2. 在模力方舟环境里跑通本地编译、测试和 benchmark 脚本; 3. 得到一组本地性能基线,方便后续判断优化是否真的有效。 需要特别说明: -* **Baseline 不是最终提交物。** +* Benchmark 不是最终提交物。 -* **XPU-OJ 才是最终评测入口。** +* XPU-OJ 才是最终评测入口。 * XPU-OJ 不会直接运行前面的 benchmark 脚本,而是会调用你提交代码里的 `run_kernel(...)` 函数。 @@ -643,18 +640,18 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 | 内容 | 作用 | | --- | --- | -| Baseline | 帮你理解算子和建立性能基线 | +| Benchmark | 帮你理解算子和建立性能基线 | | Agent | 帮你读代码、写初版、定位错误、迭代优化 | | XPU-OJ | 按统一测试数据评测你的 `run_kernel(...)` | | Candidate | 每一版可提交、可复现的代码结果 | 完成本节后,你应该能完成一次最小 OJ 提交,确认自己的提交链路是通的。 -### 10.2 学习目标 +### 9.2 学习目标 完成本模块后,你将能够: -1. 理解 Baseline benchmark 和 XPU-OJ 提交之间的区别; +1. 理解 benchmark 和 XPU-OJ 提交之间的区别; 2. 找到 Fused MoE GEMM 题目的接口约定; @@ -665,13 +662,13 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 5. 根据 OJ 返回的 `Wrong Answer`、`Runtime Error`、`Accepted` 等状态判断下一步动作。 -### 10.3 适用对象 +### 9.3 适用对象 本模块适合已经完成以下准备的参赛者: * 已经进入模力方舟赛事镜像; -* 已经上传或准备好 Fused MoE baseline 源码; +* 已经上传或准备好 Fused MoE 源码; * 已经可以在终端里运行基础命令; @@ -682,9 +679,9 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 如果你还没有做过 GPU kernel 优化,也可以先照着本节完成一次冒烟提交。这里的目标不是马上拿高分,而是先确认“我能提交、OJ 能调用我的函数、反馈能回来”。 -### 10.4 前置准备 +### 9.4 前置准备 -#### 10.4.1 代码准备 +#### 9.4.1 代码准备 建议在工作目录下保留一个候选版本目录,例如: @@ -701,7 +698,7 @@ oj/problem_1_fused_moe/solution001.py 真正提交时,只需要把这个文件里的内容复制到 XPU-OJ 提交框。 -#### 10.4.2 账号准备 +#### 9.4.2 账号准备 XPU-OJ 账号由组委会统一发放。登录入口: @@ -711,9 +708,9 @@ https://xpuoj.com/ 如果登录后看不到比赛或题目,请联系助教或赛事运营确认账号是否已经加入对应比赛或用户组。 -### 10.5 知识预备 +### 9.5 知识预备 -#### 10.5.1 什么是 OJ +#### 9.5.1 什么是 OJ OJ 可以理解为“自动评测机”。 @@ -734,7 +731,7 @@ OJ 可以理解为“自动评测机”。 所以,OJ 不是让你提交 benchmark 日志,也不是让你提交本地运行截图,而是让你提交一份符合接口约定的代码。 -#### 10.5.2 什么是 Candidate +#### 9.5.2 什么是 Candidate Candidate 就是一次可复现的候选方案。 @@ -750,7 +747,7 @@ Candidate 就是一次可复现的候选方案。 这样后续多次打榜时,不会忘记哪一版代码对应哪一次提交结果。 -### 10.6 项目实践:Fused MoE GEMM OJ 冒烟提交 +### 9.6 项目实践:Fused MoE GEMM OJ 冒烟提交 本节以当前 XPU-OJ 题目 **1. Fused MoE GEMM** 为例。 @@ -882,39 +879,28 @@ oj/problem_1_fused_moe/solution001.py #### 步骤 4:提交到 XPU-OJ -1. 打开 XPU-OJ: - - ```text - https://xpuoj.com/ - ``` +1. 打开 XPU-OJ: ```texthttps://xpuoj.com/``` 2. 使用组委会发放的账号登录; -3. 进入比赛页面; +3. 进入比赛页面; [![image6](https://origin.picgo.net/2026/06/23/image6047f2ac4bd2a0f08.png)](https://www.picgo.net/image/image6.4ScJM4) - [![image](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/mxPOG5z1vjjJ9nKa/img/f9078ee6-9850-4817-8183-8cab717b613e.png)](https://www.picgo.net/image/image.13ku6N) - -4. 找到题目: - - ```text - 1. Fused MoE GEMM - ``` +4. 找到题目: ```text1. Fused MoE GEMM``` 5. 点击题目进入详情页; -6. 在提交区域选择本题支持的语言,例如: +6. 在提交区域选择本题支持的语言,例如: ```textTriton / Triton Maca``` - ```text - Triton / Triton Maca - ``` + +```plaintext +具体名称以页面下拉框为准。 +``` + +1. 将 `solution001.py` 中的代码复制到提交框; - 具体名称以页面下拉框为准。 +2. 点击提交; -7. 将 `solution001.py` 中的代码复制到提交框; - -8. 点击提交; - -9. 等待评测结果返回。 +3. 等待评测结果返回。 #### 步骤 5:查看 OJ 结果 @@ -979,7 +965,6 @@ oj/problem_1_fused_moe/solution001.py ```python torch.allclose(out_target.float(), out_ref.float(), rtol=0.0, atol=1e-2) - ``` 也就是说,OJ 允许很小的数值误差,但不是随便差一点都能过。 @@ -994,26 +979,23 @@ git status --short git add oj/problem_1_fused_moe/solution001.py git commit -m "candidate 001 fused moe i8 tn oj smoke" git tag candidate-001-oj-smoke - ``` 查看最近候选版本: ```bash git log --oneline --decorate -5 - ``` 如果下一轮要继续优化,可以复制一份新文件: ```bash cp oj/problem_1_fused_moe/solution001.py oj/problem_1_fused_moe/solution002.py - ``` 然后让 Agent 基于 `solution002.py` 继续改。 -### 10.7 Agent 使用说明 +### 9.7 Agent 使用说明 本模块中,Agent 主要用来做三件事: @@ -1030,7 +1012,6 @@ cp oj/problem_1_fused_moe/solution001.py oj/problem_1_fused_moe/solution002.py 第一步:先写一个能过正确性的最小版本。 第二步:提交 OJ,看是否 AC。 第三步:AC 后再优化性能。 - ``` 可以使用下面的 Prompt: @@ -1051,7 +1032,6 @@ cp oj/problem_1_fused_moe/solution001.py oj/problem_1_fused_moe/solution002.py 7. 不要添加 torch.Tensor 类型注解 8. 不要依赖外部文件 9. 请输出完整可复制提交的 Python 代码 - ``` 如果 OJ 返回 `Wrong Answer`,可以继续问: @@ -1066,7 +1046,6 @@ OJ 返回 Wrong Answer。 4. 是否把结果写入 out,且 dtype 与 out 保持一致。 请给出最小修改建议。 - ``` 如果 OJ 返回 `Runtime Error`,可以问: @@ -1078,10 +1057,9 @@ OJ 返回 Runtime Error。 请先判断是函数签名、import、RestrictedPython 限制、dtype、shape 还是 GPU 算子调用问题。 只给出最小修复方案。 - ``` -### 10.8 常见问题 +### 9.8 常见问题 #### Q1:为什么本地能跑,OJ 上却 Runtime Error? @@ -1092,14 +1070,12 @@ OJ 返回 Runtime Error。 ```python def silu(x: torch.Tensor) -> torch.Tensor: ... - ``` 这种类型注解可能触发: ```text Access to torch.Tensor is not allowed - ``` 处理方式:去掉 `torch.Tensor` 类型注解。 @@ -1147,11 +1123,11 @@ Access to torch.Tensor is not allowed 不要只看单次结果。每轮都记录,后面才知道 Agent 的修改到底有没有带来收益。 -### 10.9 从 Baseline 到参赛作品的路径回顾 +### 9.9 从 Benchmark 验证到参赛作品的路径回顾 建议按下面顺序推进: -1. 跑通 baseline benchmark,理解算子输入输出; +1. 跑通 benchmark 脚本,理解算子输入输出; 2. 阅读 XPU-OJ 题目页面,确认 `run_kernel(...)` 接口; @@ -1169,6 +1145,5 @@ Access to torch.Tensor is not allowed 一句话总结: ```text -Baseline 用来学习,OJ 用来评分,Candidate 用来管理每一轮结果。 - +Benchmark 验证代码用来学习,OJ 用来评分,Candidate 用来管理每一轮结果。 ``` \ No newline at end of file From 72318881008e7309206ed7069c8058947c4f32dd Mon Sep 17 00:00:00 2001 From: "Xinyi Wu (i26343)" Date: Tue, 23 Jun 2026 11:01:19 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20MCTLASS=5FFused=20MoE?= =?UTF-8?q?=20=E7=AE=97=E5=AD=90=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MCTLASS_Fused MoE 算子优化.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md index b40ce99..31f5b8b 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md @@ -143,7 +143,7 @@ EOF | 报错 | 原因 | 解决办法 | | --- | --- | --- | | `g++:command not found` | 未安装 C++ 编译工具 | `apt update && apt install -y build-essential` | -| `Python 3.6.x/ Python 3.7.x` | Python 版本过低 | `conda install python=3.12` (推荐3.10+) | +| `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:进入项目目录 From c721c656c5efc34bf12adc273fe65c14e4f52008 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Tue, 23 Jun 2026 11:09:35 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MCTLASS_Fused MoE 算子优化.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md index 31f5b8b..5668f6a 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md @@ -245,17 +245,19 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference **结果解释:** -* “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` | @@ -437,7 +439,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 完成上述步骤将看到如下界面: - [![image2](https://origin.picgo.net/2026/06/23/image268924dc11f138788.png)](https://www.picgo.net/image/image2.4SHscu) + [![image2](https://origin.picgo.net/2026/06/23/image268924dc11f138788.png)](https://www.picgo.net/image/image2.4SHscu) ### 步骤2:任务查看与结果管理 From 1c091f2cb927c7a58605326768004f1d453173da Mon Sep 17 00:00:00 2001 From: wu_xy Date: Tue, 23 Jun 2026 11:11:30 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MCTLASS_Fused MoE 算子优化.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md index 5668f6a..f07a447 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md @@ -23,27 +23,27 @@ 完成本模块后,你将能够: -1. 理解 Fused MoE 推理算子的基本作用、输入输出和典型应用场景; +1. 理解 Fused MoE 推理算子的基本作用、输入输出和典型应用场景。 -2. 跑通对应 benchmark 脚本,并记录性能基线结果; +2. 跑通对应 benchmark 脚本,并记录性能基线结果。 -3. 学习如何基于 Trition 与 MXMACA C++ 编写 Fused MOE 算子; +3. 学习如何基于 Trition 与 MXMACA C++ 编写 Fused MOE 算子。 4. 完成数值正确性测试,即验证 reference 计算、pybind 计算、Triton 计算这三种方式计算结果是否数值完全一致。 - * reference:基于 PyTorch 架构在 CPU 上运行的**数值基准**实现; + * reference:基于 PyTorch 架构在 CPU 上运行的**数值基准**实现。 - * pybind:将 MXMACA C++ 算子编译并封装为 Python 可调用的动态库,**实现复杂且迁移成本高**; + * pybind:将 MXMACA C++ 算子编译并封装为 Python 可调用的动态库,**实现复杂且迁移成本高**。 - * Triton:基于 Python 编写的高效 GPU Kernel,可利用 Agent 自动调优,**开发效率高、易于迁移**; + * Triton:基于 Python 编写的高效 GPU Kernel,可利用 Agent 自动调优,**开发效率高、易于迁移**。 * 要求 pybind 和 Triton 结果均与 reference 一致,鼓励参赛选手持续调优 Triton ,使其性能逼近甚至超越 pybind 性能。 -5. 区分 benchmark 性能基线、OJ 参考实现和选手提交代码; +5. 区分 benchmark 性能基线、OJ 参考实现和选手提交代码。 -6. 读懂对应 XPU-OJ 题包中的题目描述、接口约定、数据范围和精度要求; +6. 读懂对应 XPU-OJ 题包中的题目描述、接口约定、数据范围和精度要求。 -7. 完成一次冒烟级 `run_kernel(...)` 提交,确认 OJ 链路、语言环境和接口调用正常; +7. 完成一次冒烟级 `run_kernel(...)` 提交,确认 OJ 链路、语言环境和接口调用正常。 8. 使用 AI Agent 辅助阅读题包、生成初版实现、定位错误并规划性能优化方向。 @@ -52,18 +52,18 @@ **本模块适合以下人员:** -* 参与基于 AI Agent 开发范式的国产 GPU 大模型推理算子库优化比赛的学生; +* 参与基于 AI Agent 开发范式的国产 GPU 大模型推理算子库优化比赛的学生。 -* 对 GPU 推理算子性能优化感兴趣的开发者; +* 对 GPU 推理算子性能优化感兴趣的开发者。 * 需要了解 Fused MoE 推理性能的研究人员。 **学习本模块前,需掌握以下基础知识:** -* Python、C++ 编程基础; +* Python、C++ 编程基础。 -* PyTorch 基础; +* PyTorch 基础。 * GPU 推理基本概念。 From 05b7888756d5db3b0f78d2ba680264dc0d7b2184 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Tue, 23 Jun 2026 11:14:39 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MCTLASS_Fused MoE 算子优化.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md index f07a447..5b1613b 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md @@ -187,11 +187,13 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh 编译成功无报错,终端显示: -* \[SUCCESS\] /root/Project/fused\_moe/standalone/fused\_moe\_i8\_tn/build/fused\_moe\_i8\_tn\_ pybind.so + * \[SUCCESS\] /root/Project/fused\_moe/standalone/fused\_moe\_i8\_tn/build/fused\_moe\_i8\_tn\_ pybind.so - 且成功生成 `fused_moe/standalone/fused_moe_i8_tn/build/fused_moe_i8_tn_pybind.cpython-310-x86_64-linux-gnu.so` 文件 + 且成功生成 `fused_moe/standalone/fused_moe_i8_tn/build/fused_moe_i8_tn_pybind.cpython-310-x86_64-linux-gnu.so` 文件 + **常见问题:** + | 报错 | 原因 | 解决办法 | | --- | --- | --- | @@ -560,9 +562,9 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 6. **KernelSwift 系统搜索算子** -```plaintext -请帮我在算子广场检索 fused_moe 算子 -``` + ```plaintext + 请帮我在算子广场检索 fused_moe 算子 + ``` ## 八、常见问题与注意事项 From c1f8e3fe12a7af1027373742d94a4d77029ba357 Mon Sep 17 00:00:00 2001 From: wu_xy Date: Tue, 23 Jun 2026 12:20:34 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MCTLASS_Fused MoE 算子优化.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md index 5b1613b..2f4ae55 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md @@ -568,7 +568,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 ## 八、常见问题与注意事项 -### 算力平台 basline 源码部署项目: +### 算力平台进行 Benchmark 验证: 1. 环境准备与依赖问题 From 70fa8117ec6de2e26b64dabef29fa026cade5add Mon Sep 17 00:00:00 2001 From: wu_xy Date: Tue, 23 Jun 2026 13:31:10 +0800 Subject: [PATCH 7/7] add --- .../MCTLASS_Fused MoE 算子优化.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md index 2f4ae55..1f33b97 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md @@ -568,7 +568,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 ## 八、常见问题与注意事项 -### 算力平台进行 Benchmark 验证: +### 8.1 算力平台进行 Benchmark 验证: 1. 环境准备与依赖问题 @@ -593,7 +593,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 * 性能对比应基于相同随机种子、相同 shape、相同 TopK、相同 batch size​的条件下进行,降低误差。 -### Kernel Swift 智能算子迁移系统自动调优项目: +### 8.2 Kernel Swift 智能算子迁移系统自动调优项目: 1. 代码规范问题