赛题二更新 #22

Merged
Beckylu merged 1 commits from beckylu-dev into master 2026-06-11 17:10:52 +08:00
3 changed files with 66 additions and 43 deletions

View File

@ -218,7 +218,6 @@
* **性能测试 :**在正确的前提下,测算速度与吞吐。通过建立 **Baseline基线**才能量化后续每次代码修改带来的真实收益(加速比)。
* **Benchmark 基准测试**在固定条件下反复运行同一任务,获取可重复的性能指标,用于建立基线、量化优化效果和定位瓶颈。
### 关键指标
@ -339,8 +338,15 @@ python -c "import einops; print('einops OK')"
**目标:** 进入本模块所需的项目目录。
1. 将flashattn\_baseline压缩文件进行解压并将解压文件加入JupyterLab。
1. 克隆代码仓库
```Bash
git clone https://gitlink.org.cn/metax-maca/op_optimization.git
```
2. 准备flashattn_baseline
在仓库目录 `op_optimization/基于AI Agent开发范式的国产GPU大模型推理算子库优化` 下,找到 `flashattn_baseline` 文件夹。可以将 `flashattn_baseline` 整个目录复制到工作目录 `data/` 下。
![flashattn baseline extract](https://origin.picgo.net/2026/06/04/flashattn-baseline-extract66d40632f4253973.png)
@ -349,7 +355,7 @@ python -c "import einops; print('einops OK')"
**命令示例:**
```Bash
cd flashattn_baseline
cd data/flashattn_baseline
ls -la
```

View File

@ -40,13 +40,10 @@
* 首次登录需要先进行注册(使用邮箱或者手机号进行注册)
* 登录成功后进行第二步-邮箱验证,填入自己的邮箱。
* 登录成功后进行第二步-邮箱验证,填入自己的邮箱。
* 第三步,提交申请。
* 获得兑换码
@ -145,9 +142,19 @@ prefill = 并行处理用户输入decode = 逐个生成回答 token
### Step 2进入项目目录
**目标:** 进入本模块所需的源码目录[flashinfer_baseline](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%2Fflashinfer_baseline)。
**目标:** 进入本模块所需的源码目录[flashinfer_baseline](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%2Fflashinfer_baseline)。
**操作:** 切换到 FlashInfer Baseline 项目目录。
1. 克隆代码仓库
```Bash
git clone https://gitlink.org.cn/metax-maca/op_optimization.git
```
2. 准备flashinfer_baseline
在仓库目录 `op_optimization/基于AI Agent开发范式的国产GPU大模型推理算子库优化` 下,找到 `flashinfer_baseline` 文件夹。可以将 `flashinfer_baseline` 整个目录复制到工作目录 `data/` 下。
**下一步操作:** 切换到 FlashInfer Baseline 项目目录。
**命令示例:**

View File

@ -27,7 +27,7 @@
* Triton基于 Python 编写的高效 GPU Kernel可利用 Agent 自动调优**开发效率高、易于迁移**
* 要求 pybind  Triton 结果均与 reference 一致鼓励参赛选手持续调优 Triton 使其性能逼近甚至超越 pybind 性能。
6. 输出 benchmark 结果对比表。
@ -131,20 +131,31 @@ EOF
**目标:**进入本模块所需的源码目录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 /root/Project/fused_moe # 这里需要替换成自己的项目路径
cd data/fused_moe # 这里需要替换成自己的项目路径
```
**预期结果:**
终端提示符路径显示为 fused\_moe 项目路径
* (base) root@0a5a9d0c0f06:~/Project/fused\_moe#
* (base) root@0a5a9d0c0f06:/data/fused_moe#
### 步骤 3pybind 编译
@ -162,15 +173,14 @@ bash scripts/build_fused_moe_i8_tn_pybind.sh
切换 Python 环境命令示例
```apl
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.sh
```
**预期结果:**
编译成功无报错,终端显示:
* \[SUCCESS\] /root/Project/fused\_moe/standalone/fused\_moe\_i8\_tn/build/fused\_moe\_i8\_tn\_ pybind.so
* \[SUCCESS] /data/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` 文件
@ -185,9 +195,9 @@ PYTHON_BIN=/path/to/python 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` 脚本
@ -214,24 +224,24 @@ 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/reference/Triton”三种计算方式
* “fused\_moe\_i8\_tn\_topk1/2/3 passed”测试算子通过数值校验数值误差在允许范围内且无明显异常否则会报错 FAILED
* ”rows=... , cols=...“输出 Tensor 的行和列的大小
* ”sample C\[0\]=... , C\[last\]=...“:首尾采样值,用于辅助定位数值偏差,不作为精度判定依据。
@ -245,9 +255,9 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference
| `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` 脚本
@ -260,8 +270,8 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2
# --warmup设置预热次数
# --iters设置迭代次数
```
**预期结果:**
编译成功无报错,输出示例如下:
@ -269,26 +279,26 @@ 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\_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”平均算子执行耗时毫秒这里不计算预热时间只计算正式迭代的<E4BBA3><E79A84><EFBFBD><EFBFBD><E997B4><EFBFBD>
* “TOPS”Tera Operations Per Second本次 MoE 算子的总运算量 / 实际耗<E99985><E88097><EFBFBD>
* “warmup=5, iters=20”预热轮数和正式迭代数。
@ -408,7 +418,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2
* 选择适配硬件:算子需要适配的目标硬件厂商及型号,建议:沐曦
* 最大演化轮次优化算法迭代次数取值范围40-400建议默认40复杂算法可提高至100+
5. 提交优化任务:点击右下角 \[优化\] 按钮,系统将提交任务并进入 \[生成中\] 状态
@ -550,7 +560,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`路径错误。
2. pybind 编译与链接
* 若`Python.h not found`,请检查脚本中`PYTHON_INCLUDE`是否指向当前 Python  `include`目录;
@ -558,7 +568,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2
* 若`libpython not found`请直接指定 Conda 下的`**libpython3.x.so**`绝对路径,避免链接系统静态库;
* 编译 `pybind`模块时,务必开启 `-fPIC`,否则会出现 `recompile with -fPIC`错误。
3. 性能测试建议
* benchmark 应在关闭其他占用 GPU 的任务后执行避免干扰性能数据
@ -579,13 +589,13 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2
* `def get_init_inputs`表示 module init 的输入测试样例
* `def get_inputs`表示 module forward 的输入测试样例。
2. 性能优化建议
* 对于复杂算子可适当提高最大演化轮次 100-200获得更高加速比
* 优先选择算子广场中已有优化案例的算子类型,降低适配失败概率。
3. 硬件适配问题
* 提交任务前确认目标硬件支持的算子类型;