测试结果文档修改

This commit is contained in:
Yuliang Feng (i26389) 2026-06-24 15:01:07 +08:00
parent 180213653b
commit b65388c77e
10 changed files with 56 additions and 12 deletions

View File

@ -25,7 +25,7 @@
### 1.0 性能基线解读:为什么本教程基于 KV Cache 做基准测试
### 1.1 什么是性能基线(baseline)
### 1.1 什么是性能基线(benchmark)
> 性能基线 是在引入任何优化代码前,系统处于初始可用状态时的参考数据。它是衡量后续所有优化收益的"锚点"。记录内容通常包括:执行时间、吞吐量、带宽、显存占用。
@ -114,9 +114,9 @@
### 1.4 为什么要记录性能基线结果
> 性能基线(baseline)是优化前的参考性能数据,记录 性能基线 的意义在于:
> 性能基线(benchmark)是优化前的参考性能数据,记录 性能基线 的意义在于:
* **量化优化收益**:优化后对比 性能基线,计算加速比(speedup = baseline\_time / optimized\_time)
* **量化优化收益**:优化后对比 性能基线,计算加速比(speedup = benchmark\_time / optimized\_time)
* **防止性能回退**:代码变更后重跑 benchmark,确认没有引入性能退化
@ -199,7 +199,7 @@
* 获取目标源码(包含 `benchmark_kvcache.py` 及 OJ 题包)
* 已进入项目目录 `/data/flashattn_baseline`
* 进入项目目录 `op_optimization/基于AI\ Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/`
* 准备 Benchmark 脚本与 OJ 测试脚本
@ -225,7 +225,7 @@
* **正确性测试 :** 验证算子输出结果的数学精度是否与标准实现一致,这是绝对底线。
* **性能测试 :** 在正确的前提下,测算速度与吞吐。通过建立性能基线(baseline),才能量化后续每次代码修改带来的真实收益(加速比)。
* **性能测试 :** 在正确的前提下,测算速度与吞吐。通过建立性能基线,才能量化后续每次代码修改带来的真实收益(加速比)。
* **Benchmark (基准测试):** 在固定条件下反复运行同一任务,获取可重复的性能指标,用于建立基线、量化优化效果和定位瓶颈。
@ -255,7 +255,11 @@
* **Tensor Core:** 现代 GPU(含沐曦 C500)的矩阵乘法专用单元,要求维度对齐为 8 或 16 的倍数。
### 5.5 开源仓库参考
[GitHub - MetaX-MACA/flashattn · GitHub](https://github.com/MetaX-MACA/flashattn)
> 链接内容可供用于学习 API、算子实现思路、benchmark 方法和优化策略。选手仍需根据 XPU-OJ 题包接口**自行实现**可提交的 `run_kernel(...)`
---
## 6. 项目实践:FlashAttention KV-Cache Benchmark & OJ 评测
@ -357,7 +361,7 @@ python -c "import einops; print('einops OK')"
**预期结果:**
```Plain
baseline结果实例 benchmark_kvcache.py
benchmark结果实例 benchmark_kvcache.py
```
---
@ -556,7 +560,7 @@ benchmark 脚本 用于理解目标算子的调用方式、输入输出 shape
#### 6.8.1 题目说明(FlashAttention KV Cache Decode)
> 注意:每个子题的接口参数、数据范围和精度要求可能不同,正式要求以对应 XPU-OJ 题包为准。本节以 **FlashAttention KV Cache Decode** 为例,演示从 baseline benchmark 到 XPU-OJ 提交的完整流程。
> 注意:每个子题的接口参数、数据范围和精度要求可能不同,正式要求以对应 XPU-OJ 题包为准。本节以 **FlashAttention KV Cache Decode** 为例,演示从 benchmark 到 XPU-OJ 提交的完整流程。
* **对应 benchmark 脚本**:`op_optimization/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmarkbenchmark_kvcache.py`
@ -983,15 +987,55 @@ torch.allclose(output_t.float(), output_ref.float(), rtol=1e-2, atol=1e-2)
提交详情会显示状态、总得分、时间、内存、编译信息以及各测试点结果。
![image](https://origin.picgo.net/2026/06/23/imageba30dbcea3e96f38.png)
![image](https://origin.picgo.net/2026/06/24/image158f29857ec8755e.png)
**单测试点查看:**
![image](https://origin.picgo.net/2026/06/23/image073f38d8acbf295c.png)
**单测试点查看:** 直接点击测试点可以看到测试点的详细检查器信息
![image](https://origin.picgo.net/2026/06/24/imaged28bd6c2aa18a143.png)
在单测试点详情中,**检查器信息**SPJ Report会展示该测试点中的详细性能评估结果以下是检查器中每行的意思
- **Config**`batch=1, seqlen_k=1024, seqlen_q=1, heads=8, kv_heads=8, headdim=128, page_size=16, causal=0`
测试用例的参数配置,定义了算子运行的具体场景(如批量大小、序列长度、注意力头数等),用于复现测试环境。
- **Baseline**`0.120000 ms`
基准算子的执行时间(参考实现,优化前的版本),作为性能对比的标准。
- **User kernel**`0.564000 ms`
你提交的算子的实际运行耗时。
- **Hardware bound**`0.037287 ms`
硬件限制的理论最小耗时理想情况下算子受GPU硬件能达到的最快速度若为0表示该场景下硬件未成为瓶颈或基准/你提交的算子已接近硬件极限。
- **Speedup vs base**`0.213 x`
**加速比**:你的算子相对于基准的加速倍数。计算方式为 `Baseline时间 / 你的算子执行时间`
- 当加速比 > 1 时,表示你的算子比基准快(性能提升)
- 当加速比 < 1 表示你的算子比基准慢性能下降
- 当前 `0.213 x` 意味着你的算子比基准慢了约4.7倍1/0.213 ≈ 4.7),需要优化。
- **Score ratio**`0.135722 (13.57%)`
**得分比例**反映你的算子性能与基准的差距。根据评测系统当你的算子与基准等速时T_k = T_b得分为50分当达到硬件理论下限时T_k = T_h得分为100分。当前 `13.57%` 表示你的算子性能还有很大提升空间得分约为13分满分100分
- **Display score**`13 / 100`
**最终得分**由Score ratio映射而来的百分制分数。
- 满分100分分数越高表示性能越好
- 当前 `13分` 表示你的算子性能还有很大提升空间
- **Pass**`OK`
测试用例的通过状态OK表示算子功能正确输出与预期一致若为FAIL则表示功能错误
通过这些信息你可以快速定位算子的性能瓶颈如User kernel时间远大于Baseline或确认功能是否正确从而针对性优化代码。
**榜单查看**
![image](https://origin.picgo.net/2026/06/23/image4035d30ecf0356f4.png)
![image](https://origin.picgo.net/2026/06/24/image6f3c0164de8a994e.png)
在榜单页面,你可以查看所有参赛者的排名情况:
- **总得分**各题目得分的总和如“FlashInfer Ragged Prefill”“FlashAttention KV Cache Decode”等6个题目的分数相加排名按总得分从高到低排序。
- **个人排名**:页面顶部会显示“我的排名”和“我的总分”,方便快速了解自己在所有参赛者中的位置。
- **各题目得分**:表格中每列对应一个题目的得分(部分题目可能显示耗时等额外信息),帮助你分析自己在不同算子优化任务上的表现。
**优化思路: **
通过榜单,你可以对比自己与他人的得分差距,针对性地优化未达标的题目,提升总排名。
**优化思路:**
- **算子融合**将矩阵乘、Scale、Softmax 等独立步骤合并为单个内核避免中间结果在全局显存HBM中的反复读写。
- **并行策略调整**:在 Decode 阶段采用 Split-K如 Flash-Decoding将长 KV 序列分块分配给多个线程块并行计算,解决单 Query 并行度极低的问题。
- **在线 Softmax**:引入局部最大值和局部求和动态缩放历史累加器,实现单遍计算,完美契合算子融合需求并保证数值稳定。