diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/FlashInfer Benchmark实战:从性能基线到XPU-OJ冒烟提交.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/FlashInfer Benchmark实战:从性能基线到XPU-OJ冒烟提交.md index 4e86652..319210d 100644 --- a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/FlashInfer Benchmark实战:从性能基线到XPU-OJ冒烟提交.md +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/FlashInfer Benchmark实战:从性能基线到XPU-OJ冒烟提交.md @@ -2,7 +2,7 @@ ## 1. 教程定位 -本教程是赛题二 FlashInfer 任务的 “benchmark 性能基线与 XPU-OJ 提交衔接” 模块,主要帮助学员跑通目标算子的 benchmark 脚本,理解原库 API、输入输出结构、性能指标和性能基线结果,并进一步读懂 XPU-OJ 题目中的接口约定、测试数据、参考输出和精度要求。 +本教程是 **沐曦 - 揭榜挂帅 - Agent推理算子库优化 - FlashInfer任务** 的 “benchmark 性能基线与 XPU-OJ 提交衔接” 模块,主要帮助学员跑通目标算子的 benchmark 脚本,理解原库 API、输入输出结构、性能指标和性能基线结果,并进一步读懂 XPU-OJ 题目中的接口约定、测试数据、参考输出和精度要求。 需要特别说明: @@ -224,7 +224,7 @@ XPU-OJ 账号由组委会统一发放,参赛者无需自行注册。 > - OJ 榜单分数与比赛最终得分属于不同分值体系。OJ 内部以各算子 baseline 为 50 分基准、硬件理论上限约 100 分;比赛性能部分满分 60 分,按排名映射; -> - FlashInfer 方向包含多个子任务,任选一种或多种提交,各子任务独立计分,取通过正确性和稳定性测试的最高成绩参与排名; +> - FlashInfer 方向包含多个子任务,任选一种或多种提交,各子任务独立计分,取通过正确性和稳定性测试的最高成绩参与排名,即 **FlashInfer 任务分数 = max{子题1分数, ..., 子题4分数}**; > - 组委会对提交内容严格审查,严禁抄袭,一经发现取消成绩。 ## 5. 知识预备 @@ -489,14 +489,14 @@ else: **选择目标题目** -FlashInfer 方向包含 **4 个可选算子题目**,每个对应独立的 benchmark 脚本、题目说明、`run_kernel(...)` 接口和数据范围。 +FlashInfer 方向包含 **4 个可选算子题目**,均属于同一比赛通道,**FlashInfer 任务分 = max{各子题得分}**。每个对应独立的 benchmark 脚本、题目说明、`run_kernel(...)` 接口和数据范围。 -| OJ 题号 | 算子类型 | 核心特点 | Benchmark 脚本 | FlashInfer API | +| OJ 题号 | OJ 题目名称 | 核心特点 | Benchmark 脚本 | FlashInfer API | |---------|---------------|----------------|----------|----------| -| **20001** | Ragged Prefill | GQA布局,Q/K/V平坦存储,causal=1 | `bench_batch_prefill_ragged.py` | `BatchPrefillWithRaggedKVCacheWrapper` | -| **20002** | Paged Prefill | KV Cache分页存储,需解析page table | `bench_batch_prefill_paged.py` | `BatchPrefillWithPagedKVCacheWrapper` | -| **20003** | MLA Paged Attention | DeepSeek MLA特有,双路Q(nope+pe)/双路Cache(ckv+kpe) |`bench_batch_mla.py` | `BatchMLAPagedAttentionWrapper` | -| **20004** | Paged Decode | 每次只1个query token,memory-bound |`bench_batch_decode.py` | `BatchDecodeWithPagedKVCacheWrapper` | +| **20001** | FlashInfer Ragged Prefill | GQA布局,Q/K/V平坦存储,causal=1 | `bench_batch_prefill_ragged.py` | `BatchPrefillWithRaggedKVCacheWrapper` | +| **20002** | FlashInfer Paged Prefill | KV Cache分页存储,需解析page table | `bench_batch_prefill_paged.py` | `BatchPrefillWithPagedKVCacheWrapper` | +| **20003** | FlashInfer MLA Paged Attention | DeepSeek MLA特有,双路Q(nope+pe)/双路Cache(ckv+kpe) |`bench_batch_mla.py` | `BatchMLAPagedAttentionWrapper` | +| **20004** | FlashInfer Paged Decode | 每次只1个query token,memory-bound |`bench_batch_decode.py` | `BatchDecodeWithPagedKVCacheWrapper` | **每个子题的接口参数、数据范围和精度要求以对应题目说明为准。** 下文以题目 **20001 Flashinfer Ragged Prefill** 为例演示从 benchmark 到 XPU-OJ 提交的完整流程。 @@ -595,17 +595,17 @@ FlashInfer 方向包含 **4 个可选算子题目**,每个对应独立的 benc #### Step 7:登录 XPU-OJ 并进入题目页面 -使用组委会统一发放的账号登录 XPU-OJ,并进入对应赛题页面。 +使用组委会统一发放的账号登录 XPU-OJ,并在 XPU-OJ 上找到比赛 **沐曦 - 揭榜挂帅 - Agent推理算子库优化 - FlashInfer任务**,进入后可见 4 个题目。 1. 打开 [*XPU-OJ*](https://xpuoj.com/) 平台,使用组委会统一发放的账号和初始密码登录 **【后续发布】**; ![OJ](https://origin.picgo.net/2026/06/16/image-20260616152804368aa0d44b72c4f9572.png) -2. 登录后进入比赛 / 题目列表页面; +2. 登录后进入比赛列表,找到 **沐曦 - 揭榜挂帅 - Agent推理算子库优化 - FlashInfer任务**; ![OJ-2](https://origin.picgo.net/2026/06/16/image-20260616152953345986ce39fda69da55.png) -3. 找到对应题目,例如 **20001 FlashInfer Ragged Prefill**; +3. 找到对应题目,例如 **Agent推理算子库优化 - FlashInfer 任务 - FlashInfer Ragged Prefill(OJ 题号 20001)** ; ![OJ-3](https://origin.picgo.net/2026/06/16/image-202606161531423833b0f0428edf2e35e.png) @@ -808,7 +808,7 @@ FlashInfer 方向包含 **4 个可选算子题目**,每个对应独立的 benc **查看所有测试用例结果:** - OJ 平台每次提交会评测所有测试用例,每个测试用例返回一组独立的 SPJ Report。建议将各组结果整理成表格,方便跟踪优化进展: + OJ 平台每次提交会评测所有测试用例,每个测试用例返回一组独立的 SPJ Report。每个子题独立计分,FlashInfer 任务总分取各子题得分的最高值。建议将各组结果整理成表格,方便跟踪优化进展: | 测试点 | batch | total_q | Baseline | User kernel | Speedup | Score | Pass | |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| @@ -855,15 +855,14 @@ FlashInfer 方向包含 **4 个可选算子题目**,每个对应独立的 benc 3. 榜单查看 — 如何阅读排行榜 - 排行榜位于 XPU-OJ 比赛页面,展示各参赛者在每个题目的 OJ 内部得分。请注意:**OJ 榜单中各题的分数与比赛最终得分不是同一体系。** 比赛最终成绩中,性能提升效果仅取你得分最高的一个任务,按该任务的 OJ 排名换算(详见 [*4.5 评分规则概要*](#45%20评分规则概要))。 + 排行榜位于 XPU-OJ 比赛 **沐曦 - 揭榜挂帅 - Agent推理算子库优化 - 排行榜** 页面,展示各参赛者在每个题目的 OJ 内部得分。请注意:**OJ 榜单中各题的分数与比赛最终得分不是同一体系。** 比赛最终成绩中,性能提升效果仅取你得分最高的一个任务,按该任务的 OJ 排名换算(详见 [*4.5 评分规则概要*](#45%20评分规则概要))。 ![ranklist](https://origin.picgo.net/2026/07/07/-2026-07-07-173642c2d1ab65ebb06d55.png) **榜单解读**: - - 6 列对应 6 个 OJ 子题:Ragged Prefill (20001)、Paged Prefill (20002)、MLA Attention (20003)、Paged Decode (20004)、FlashAttention KV Cache Decode (20005)、Fused MoE i8 tn (20006) - - - 各题分数为 OJ 内部评分(OJ baseline = 50 分),排名按 Total(各题 OJ 得分之和)降序。**比赛最终只取单一最高分任务**,而非多任务累加 + - 前 4 列为 FlashInfer 任务的 4 个子题,各子题独立计分,FlashInfer 任务得分取各子题的最高值; + - 各题分数为 OJ 内部评分(OJ baseline = 50 分),排名按 Total(各题 OJ 得分之和)降序。此为 OJ 平台汇总逻辑,比赛最终只取单一最高分任务,不做多任务累加 - 每列下方的括号数值(如 `(24)`)表示该题提交次数