forked from metax-maca/op_optimization
update structure
This commit is contained in:
parent
0d8217a1c1
commit
d3338b5a26
|
|
@ -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 用来管理每
|
|||
* 提交任务前确认目标硬件支持的算子类型;
|
||||
|
||||
* 优化失败时,可尝试更换适配硬件,或调整算子实现逻辑。
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue