forked from metax-maca/op_optimization
修正 fused_moe 教程
This commit is contained in:
parent
72bebcf3d4
commit
8628b5b38c
|
|
@ -297,15 +297,16 @@ bash scripts/run_fused_moe_i8_tn_pybind_test.sh --backend reference
|
|||
|
||||
|
||||
**常见问题:**
|
||||
|
||||
| **报错** | **原因** | **解决办法** |
|
||||
| --- | --- | --- |
|
||||
| `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` 已生成;<br>执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` |
|
||||
| `FAILED: max abs diff too large` | 数值误差超过阈值 | 检查 scale 是否应用位置错误;<br>确认 TopK 索引与权重是否一致 |
|
||||
| `FAILED: shape mismatch` | 输出张量形状不一致 | 检查 Token Permute / Unpermute 逻辑;<br>确认 expert 维度对齐 |
|
||||
| `FAILED: NaN or Inf detected` | 溢出或未初始化内存 | 检查 INT8 乘加是否溢出;<br>确认 GEMM 输出是否反量化 |
|
||||
| 终端长时间无输出 | Kernel 死锁或 Launch 失败 | 减小测试 shape;<br>检查是否触发 MACA 硬件限制 |
|
||||
|
||||
|
||||
|
||||
#### Step 5:性能测试
|
||||
|
||||
|
|
@ -360,14 +361,12 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2
|
|||
|
||||
|
||||
**常见错误:**
|
||||
|
||||
|
||||
| **报错** | **原因** | **解决办法** |
|
||||
| --- | --- | --- |
|
||||
| `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so`已生成;执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` |
|
||||
| 终端长时间无输出 | Kernel 死锁或 MACA 驱动异常 | 减小测试 shape;重启容器或设备 |
|
||||
| avg\_ms 异常抖动(±50%) | 其他进程占用 GPU | 关闭其他占用显存的进程,单机单任务运行 |
|
||||
|
||||
| 报错 | 原因 | 解决办法 |
|
||||
| :--- | :--- | :--- |
|
||||
| `ModuleNotFoundError: fused_moe_i8_tn_pybind` | pybind 模块未编译或未加入 `PYTHONPATH` | 回到步骤 3,确认 `.so` 已生成;<br>执行 `export PYTHONPATH=/root/Project/fused_moe:$PYTHONPATH` |
|
||||
| 终端长时间无输出 | Kernel 死锁或 MACA 驱动异常 | 减小测试 shape;重启容器或设备 |
|
||||
| avg_ms 异常抖动(±50%) | 其他进程占用 GPU | 关闭其他占用显存的进程,单机单任务运行 |
|
||||
|
||||
|
||||
### 6.2 在 XPU-OJ 平台进行提交
|
||||
|
|
@ -381,8 +380,8 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2
|
|||
**操作:**
|
||||
|
||||
1. 厘清 Benchmark 和 XPU-OJ 的区别:
|
||||
|
||||
赛事镜像中的 Benchmark 脚本用于理解目标算子的调用方式、输入输出 shape 和性能基线;XPU-OJ 题包用于定义最终评测接口、数据范围、参考输出和精度要求。
|
||||
|
||||
赛事镜像中的 Benchmark 脚本用于理解目标算子的调用方式、输入输出 shape 和性能基线;XPU-OJ 题包用于定义最终评测接口、数据范围、参考输出和精度要求。
|
||||
|
||||
| 维度 | Benchmark 脚本 | XPU-OJ 提交 |
|
||||
| :--- | :--- | :--- |
|
||||
|
|
@ -396,17 +395,17 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2
|
|||
|
||||
2. 理解完成 benchmark 验证并成功建立性能基线后,需要完成以下转换:
|
||||
|
||||
* 从 benchmark 脚本中理解目标 API;
|
||||
a. 从 benchmark 脚本中理解目标 API;
|
||||
|
||||
* 在对应 OJ 平台【题目描述】中查看 `run_kernel(...)` 接口;
|
||||
b. 在对应 OJ 平台【题目描述】中查看 `run_kernel(...)` 接口;
|
||||
|
||||
* 对照 OJ 平台【题目描述】中的输入 shape、数据范围和精度要求;
|
||||
c. 对照 OJ 平台【题目描述】中的输入 shape、数据范围和精度要求;
|
||||
|
||||
* 编写自己的 `run_kernel(...)`;
|
||||
d. 编写自己的 `run_kernel(...)`;
|
||||
|
||||
* 在 OJ 平台提交`run_kernel(...)`,先通过正确性;
|
||||
e. 在 OJ 平台提交`run_kernel(...)`,先通过正确性;
|
||||
|
||||
* 正确性通过后,再对比 benchmark 耗时 / OJ 耗时继续优化。
|
||||
f. 正确性通过后,再对比 benchmark 耗时 / OJ 耗时继续优化。
|
||||
|
||||
|
||||
#### Step 7:登录 XPU-OJ 平台并进入题目页面
|
||||
|
|
|
|||
Loading…
Reference in New Issue