From d3338b5a261bc29cb34fea7cce0a68ea15640275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E6=B2=90=E5=B7=9D?= Date: Tue, 23 Jun 2026 17:39:51 +0800 Subject: [PATCH] update structure --- .../MCTLASS_Fused MoE 算子优化.md | 95 ++++--------------- 1 file changed, 18 insertions(+), 77 deletions(-) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md index 360fd97..5be24f7 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/MCTLASS_Fused MoE 算子优化.md @@ -155,14 +155,11 @@ EOF **命令示例:** ```apl -cd /root/Project/fused_moe # 这里需要替换成自己的项目路径 +#克隆代码仓库 +git clone https://gitlink.org.cn/metax-maca/op_optimization.git +#切换到fused moe目录下benchmark项目 +cd op_optimization/基于AI\ Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/fused_moe_task_package/benchmark ``` - -**预期结果:** - -终端提示符路径显示为 fused\_moe 项目路径: - -* (base) root@0a5a9d0c0f06:~/Project/fused\_moe# ### 步骤 3:pybind 编译 @@ -326,79 +323,23 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2 | 终端长时间无输出 | Kernel 死锁或 MACA 驱动异常 | 减小测试 shape;重启容器或设备 | | avg\_ms 异常抖动(±50%) | 其他进程占用 GPU | 关闭其他占用显存的进程,单机单任务运行 | -## 六、XPU-OJ 冒烟提交:从 Benchmark 验证到评测结果 +## 六、XPU-OJ 冒烟提交 -### 6.1 教程定位 +### 6.1 目标 -前面的Benchmark 验证教程主要帮助你完成三件事: +在完成前文的本地验证后,本节将带你把实现提交到 XPU-OJ,并确认评测环境能够正确调用 `run_kernel(...)`。 -1. 看懂 Fused MoE 算子的输入、输出和计算逻辑; - -2. 在模力方舟环境里跑通本地编译、测试和 benchmark 脚本; - -3. 得到一组本地性能基线,方便后续判断优化是否真的有效。 - +完成本节后,你应能够完成一次最小 OJ 提交,查看评测结果,并据此进入正确性修复或后续性能优化。 -需要特别说明: +本节的冒烟提交只用于验证函数接口、索引逻辑和提交流程;性能优化请在正确性通过后再进行。 -* Benchmark 不是最终提交物。 - -* XPU-OJ 才是最终评测入口。 - -* XPU-OJ 不会直接运行前面的 benchmark 脚本,而是会调用你提交代码里的 `run_kernel(...)` 函数。 - +### 6.2 前置准备 -简单理解: - -| 内容 | 作用 | -| --- | --- | -| Benchmark | 帮你理解算子和建立性能基线 | -| Agent | 帮你读代码、写初版、定位错误、迭代优化 | -| XPU-OJ | 按统一测试数据评测你的 `run_kernel(...)` | -| Candidate | 每一版可提交、可复现的代码结果 | - -完成本节后,你应该能完成一次最小 OJ 提交,确认自己的提交链路是通的。 - -### 6.2 学习目标 - -完成本模块后,你将能够: - -1. 理解 benchmark 和 XPU-OJ 提交之间的区别; - -2. 找到 Fused MoE GEMM 题目的接口约定; - -3. 准备一个可以提交到 OJ 的 `run_kernel(...)` 文件; - -4. 在 XPU-OJ 页面提交代码并查看结果; - -5. 根据 OJ 返回的 `Wrong Answer`、`Runtime Error`、`Accepted` 等状态判断下一步动作。 - - -### 6.3 适用对象 - -本模块适合已经完成以下准备的参赛者: - -* 已经进入模力方舟赛事镜像; - -* 已经上传或准备好 Fused MoE 源码; - -* 已经可以在终端里运行基础命令; - -* 已经配置好 Agent 工具,例如 OpenCode; - -* 已经拿到组委会发放的 XPU-OJ 账号。 - - -如果你还没有做过 GPU kernel 优化,也可以先照着本节完成一次冒烟提交。这里的目标不是马上拿高分,而是先确认“我能提交、OJ 能调用我的函数、反馈能回来”。 - -### 6.4 前置准备 - -#### 6.4.1 代码准备 +#### 6.2.1 代码准备 建议在工作目录下保留一个候选版本目录,例如: ```bash -cd /data/fusedmoe_v2.1 mkdir -p oj/problem_1_fused_moe ``` @@ -410,7 +351,7 @@ oj/problem_1_fused_moe/solution001.py 真正提交时,只需要把这个文件里的内容复制到 XPU-OJ 提交框。 -#### 6.4.2 账号准备 +#### 6.2.2 账号准备 XPU-OJ 账号由组委会统一发放。登录入口: @@ -420,9 +361,9 @@ https://xpuoj.com/ 如果登录后看不到比赛或题目,请联系助教或赛事运营确认账号是否已经加入对应比赛或用户组。 -### 6.5 知识预备 +### 6.3 知识预备 -#### 6.5.1 什么是 OJ +#### 6.3.1 什么是 OJ OJ 可以理解为“自动评测机”。 @@ -443,7 +384,7 @@ OJ 可以理解为“自动评测机”。 所以,OJ 不是让你提交 benchmark 日志,也不是让你提交本地运行截图,而是让你提交一份符合接口约定的代码。 -#### 6.5.2 什么是 Candidate +#### 6.3.2 什么是 Candidate Candidate 就是一次可复现的候选方案。 @@ -459,7 +400,7 @@ Candidate 就是一次可复现的候选方案。 这样后续多次打榜时,不会忘记哪一版代码对应哪一次提交结果。 -### 6.6 项目实践:Fused MoE GEMM OJ 冒烟提交 +### 6.4 项目实践:Fused MoE GEMM OJ 冒烟提交 本节以当前 XPU-OJ 题目 **1. Fused MoE GEMM** 为例。 @@ -707,7 +648,7 @@ cp oj/problem_1_fused_moe/solution001.py oj/problem_1_fused_moe/solution002.py 然后让 Agent 基于 `solution002.py` 继续改。 -### 6.7 Agent 使用说明 +### 6.5 Agent 使用说明 本模块中,Agent 主要用来做三件事: @@ -1149,4 +1090,4 @@ Benchmark 验证代码用来学习,OJ 用来评分,Candidate 用来管理每 * 提交任务前确认目标硬件支持的算子类型; * 优化失败时,可尝试更换适配硬件,或调整算子实现逻辑。 - \ No newline at end of file +