From b65388c77edfc4ad6ed80a7b804315ff37248bea Mon Sep 17 00:00:00 2001 From: "Yuliang Feng (i26389)" Date: Wed, 24 Jun 2026 15:01:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=BB=93=E6=9E=9C=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashAttention关键算子迁移与优化.md | 68 +++++++++++++++---- .../benchmark_kvcache_headdim128.csv | 0 .../benchmark_kvcache_headdim160.csv | 0 .../benchmark_kvcache_headdim192.csv | 0 .../benchmark_kvcache_headdim224.csv | 0 .../benchmark_kvcache_headdim256.csv | 0 .../benchmark_kvcache_headdim32.csv | 0 .../benchmark_kvcache_headdim512.csv | 0 .../benchmark_kvcache_headdim64.csv | 0 .../benchmark_kvcache_headdim96.csv | 0 10 files changed, 56 insertions(+), 12 deletions(-) rename 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/{baseline结果实例 => benchmark结果实例}/benchmark_kvcache_headdim128.csv (100%) rename 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/{baseline结果实例 => benchmark结果实例}/benchmark_kvcache_headdim160.csv (100%) rename 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/{baseline结果实例 => benchmark结果实例}/benchmark_kvcache_headdim192.csv (100%) rename 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/{baseline结果实例 => benchmark结果实例}/benchmark_kvcache_headdim224.csv (100%) rename 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/{baseline结果实例 => benchmark结果实例}/benchmark_kvcache_headdim256.csv (100%) rename 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/{baseline结果实例 => benchmark结果实例}/benchmark_kvcache_headdim32.csv (100%) rename 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/{baseline结果实例 => benchmark结果实例}/benchmark_kvcache_headdim512.csv (100%) rename 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/{baseline结果实例 => benchmark结果实例}/benchmark_kvcache_headdim64.csv (100%) rename 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/{baseline结果实例 => benchmark结果实例}/benchmark_kvcache_headdim96.csv (100%) diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/FlashAttention关键算子迁移与优化.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/FlashAttention关键算子迁移与优化.md index 1aa5524..f233a90 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/FlashAttention关键算子迁移与优化.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/FlashAttention关键算子迁移与优化.md @@ -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**:引入局部最大值和局部求和动态缩放历史累加器,实现单遍计算,完美契合算子融合需求并保证数值稳定。 diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim128.csv b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim128.csv similarity index 100% rename from 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim128.csv rename to 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim128.csv diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim160.csv b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim160.csv similarity index 100% rename from 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim160.csv rename to 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim160.csv diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim192.csv b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim192.csv similarity index 100% rename from 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim192.csv rename to 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim192.csv diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim224.csv b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim224.csv similarity index 100% rename from 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim224.csv rename to 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim224.csv diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim256.csv b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim256.csv similarity index 100% rename from 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim256.csv rename to 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim256.csv diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim32.csv b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim32.csv similarity index 100% rename from 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim32.csv rename to 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim32.csv diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim512.csv b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim512.csv similarity index 100% rename from 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim512.csv rename to 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim512.csv diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim64.csv b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim64.csv similarity index 100% rename from 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim64.csv rename to 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim64.csv diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim96.csv b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim96.csv similarity index 100% rename from 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/baseline结果实例/benchmark_kvcache_headdim96.csv rename to 基于AI Agent开发范式的国产GPU大模型推理算子库优化/operator_task_package/flashattn_task_package/benchmark/benchmark结果实例/benchmark_kvcache_headdim96.csv