diff --git a/基于AI Agent开发范式的国产GPU大模型推理算子库优化/START_HERE.md b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/START_HERE.md new file mode 100644 index 0000000..db9d466 --- /dev/null +++ b/基于AI Agent开发范式的国产GPU大模型推理算子库优化/START_HERE.md @@ -0,0 +1,116 @@ +# START HERE — 赛题二:AI Agent 驱动 GPU 算子优化 + +## 比赛任务 + +将三个开源推理算子库的核心算子迁移至沐曦国产 GPU(MACA 软件栈),并完成性能优化。借助 AI Agent 完成代码理解、迁移适配、性能调优与测试验证。 + +三个方向,任选其一或多个: + +| 方向 | 任务 | 技术约束 | +|------|------|---------| +| **FlashInfer** | 将 BatchPrefill / BatchDecode / MLA 等 Attention Kernel 迁移至 MACA 平台并完成性能优化。重点调优维度:headdim、seqlen、page_size | MACA C++,BF16,headdim 64/128/256,seqlen 1K–180K | +| **FlashAttention** | 将 `flash_attn_with_kvcache` 接口迁移至 MACA 平台并完成性能优化。重点调优维度:headdim(高优 128/256/512)、seqlen | MACA C++,BF16,headdim 32–512,page_size=16 | +| **Fused MoE** | 将 INT8 量化 MoE 算子迁移至 MACA 平台并完成性能优化。重点调优维度:token 路由、专家计算、访存路径 | Tilelang / Triton / MACA C,INT8 W8A8,真实模型 shape | + +## 提交物 + +提交一个压缩包至 opensource@metax-tech.com,截止 **2026 年 9 月 5 日**。压缩包内包含: + +**可运行代码。** 按对应方向的任务要求完成算子实现。提交至 XPU-OJ 平台,通过正确性测试后进入性能排名。正确性测试为硬性门槛,未通过的作品不参与排名。 + +**Agent 工作流。** 证明 AI Agent 参与了优化过程。Agent 对话日志、Skill 脚本、prompt 模板、自动化工作流脚本均可。评审方将按照提交记录重跑流程,复现程度直接影响得分。 + +**Benchmark 对比报告与演示 PPT。** 说明优化方案、性能提升幅度、Agent 在流程各环节的参与方式。 + +## 评分构成 + +100 分制,三个维度: + +- **性能提升(60 分)**:相比 baseline,在延迟、吞吐、Token/s、显存占用等维度的提升 +- **Agent 可复现(20 分)**:功能能复现得 5 分;性能复现达提交标称的 60% 以上得 10 分,80% 以上得 15 分,90% 以上得 20 分 +- **文档质量(20 分)**:技术报告、README、运行说明、演示视频、答辩材料的完备程度 + +## 推进流程 + +**第一步:获取算力。** 赛事提供曦云 C500 在线算力,无需自备硬件。在沐曦开发者社区领取算力券,于模力方舟平台租用实例,选择镜像 `PyTorch-Agent / 2.8.0 / Python 3.12 / maca 3.7.2.1`。详见 [模力方舟快速使用 SOP](../模力方舟快速使用SOP.md)。 + +**第二步:部署 Agent。** 推荐安装 OpenCode,通过模力方舟 API 接入 MiniMax-M2.7 模型。部署后执行 `mx-smi` 确认 Agent 可操作当前环境。详见 [模力方舟 Agent 部署准备教程](模力方舟Agent部署准备教程.md)。 + +**第三步:环境验证与冒烟提交。** 课程材料不提供可直接提交的 baseline 源代码或标准答案代码;仅提供冒烟级示例代码,用于验证功能、环境、语言和 `run_kernel(...)` 接口。选手需根据 XPU-OJ 题包接口自行实现 `run_kernel(...)`,并可参考 FlashInfer、FlashAttention、vLLM、Triton、TileLang、MCTLASS 等开源仓库或官方文档,组合完成算子实现与性能优化。 + +先跑通冒烟示例,确认编译、测试、OJ 提交链路正常,再记录首次 benchmark 性能数据作为后续优化对比基准。 + +- FlashInfer → [FlashInfer 关键算子迁移与优化](FlashInfer关键算子迁移与优化.md) · [冒烟代码](operator_task_package/flashinfer_task_package/starter/%E7%A4%BA%E4%BE%8B%E5%86%92%E7%83%9F%E4%BB%A3%E7%A0%81.md) +- FlashAttention → [FlashAttention 关键算子迁移与优化](FlashAttention关键算子迁移与优化.md) +- Fused MoE → [MCTLASS Fused MoE 算子优化](MCTLASS_Fused%20MoE%20算子优化.md) + +可参考的开源仓库: + +- [MetaX-MACA/flashattn](https://github.com/MetaX-MACA/flashattn) +- [MetaX-MACA/McFlashInfer](https://github.com/MetaX-MACA/McFlashInfer) +- [MetaX-MACA/mcTriton](https://github.com/MetaX-MACA/mcTriton) + +**第四步:迭代优化。** 每轮仅修改一处代码,修改后执行 build → test → benchmark 并记录结果,验证无误后再进入下一轮。保存每轮 Agent Prompt、代码改动、OJ 结果和性能变化,形成可复现的 Agent/Skill 优化流程。详见 [Agent 使用说明](Agent说明.md)。 + +**第五步:OJ 提交。** 将 `run_kernel(...)` 按对应题包接口规范整理,提交至 XPU-OJ。先确保正确性通过,再优化性能冲榜。 + +- FlashAttention 提交指南:[operator_task_package/flashattn_task_package/guide.md](operator_task_package/flashattn_task_package/guide.md) +- FlashInfer 题包:[operator_task_package/flashinfer_task_package/](operator_task_package/flashinfer_task_package/)(含四个子问题,各自有独立接口约定) + +## 相关文档 + +| 需求 | 对应文档 | +|------|---------| +| 比赛规则、评分标准、提交方式全文 | [基于 AI Agent 开发范式的国产 GPU 大模型算子推理库优化方案](基于AI%20Agent开发范式的国产GPU大模型算子推理库优化方案.md) | +| 算力环境配置与 Agent 部署 | [模力方舟 Agent 部署准备教程](模力方舟Agent部署准备教程.md) | +| FlashInfer API 与核心概念(Paged KV Cache、Ragged Tensor、MLA) | [赛题说明](赛题说明.md) Track 1 部分 | +| FlashInfer 冒烟示例与 benchmark | [FlashInfer 关键算子迁移与优化](FlashInfer关键算子迁移与优化.md) | +| FlashAttention 冒烟示例与 benchmark | [FlashAttention 关键算子迁移与优化](FlashAttention关键算子迁移与优化.md) | +| Fused MoE 冒烟示例与 benchmark | [MCTLASS Fused MoE 算子优化](MCTLASS_Fused%20MoE%20算子优化.md) | +| Agent 使用方式与 prompt 模板 | [Agent 说明](Agent说明.md) | +| XPU-OJ 提交流程 | [FlashAttention OJ guide](operator_task_package/flashattn_task_package/guide.md) · [FlashInfer 题包](operator_task_package/flashinfer_task_package/) | +| 模力方舟操作 | [模力方舟快速使用 SOP](../模力方舟快速使用SOP.md) | + +## 备忘 + +- 报名:2026 年 5 月 30 日 – 6 月 30 日,[挑战杯官网](https://2026.tiaozhanbei.net/) +- 作品提交截止:2026 年 9 月 5 日 +- 团队上限 10 人,指导教师上限 3 人 +- 统一开发与评测镜像:`PyTorch-Agent / 2.8.0 / Python 3.12 / maca 3.7.2.1` +- Benchmark 须使用整张单卡(64 GB),日常开发建议 16–32 GB +- 正确性测试为硬性门槛,未通过的作品不参与性能排名 + +## 常见问题 + +**Q:课程材料是否提供可直接提交的 baseline 代码?** + +A:不提供。课程材料仅提供冒烟级示例代码,用于验证环境、语言、提交链路和 `run_kernel(...)` 接口。选手需根据 XPU-OJ 题包接口自行实现算子,并可参考 FlashInfer、FlashAttention、vLLM、Triton、TileLang、MCTLASS 等开源仓库。 + +**Q:Benchmark 性能基线、OJ 参考实现和选手提交代码之间是什么关系?** + +A:三者不同。(1) benchmark 脚本用于建立性能基线,理解目标 API 的调用方式和性能表现;(2) OJ 题包中的 `baseline()` 是后台参考实现,用于生成 `output_ref`,不是选手提交代码;(3) 选手需要自行实现 `run_kernel(...)` 并提交至 OJ。 + +**Q:精度误差要求是多少?** + +A:正式精度要求以对应 OJ 题包中的 `testcase_config.py` 和题面说明为准。不同算子的容差可能不同,不可统一设为一个固定值。当前各题包的容差示例: + +| 题包 | rtol | atol | +|------|------|------| +| FlashInfer Ragged Prefill(20001) | 1e-2 | 1e-2 | +| FlashInfer Paged Prefill(20002) | 1e-2 | 1e-2 | +| FlashInfer MLA Paged Attention(20003) | 1e-2 | 1e-2 | +| FlashInfer Paged Decode(20004) | 1e-2 | 1e-2 | +| FlashAttention KV Cache Decode | 1e-2 | 1e-2 | +| Fused MoE i8 tn | 0.0 | 1e-2 | + +**Q:登录 XPU-OJ 后看不到题目?** + +A:七月份组委会统一发放 XPU-OJ 账号,请确认使用的是组委会发放的账号而非自行注册账号。如仍无法看到题目,联系助教或赛事运营确认账号权限。 + +**Q:OJ 得分怎么算?** + +A:以各算子 baseline 性能为基准(约 50 分),硬件理论上限约 100 分。评测程序统计作品在目标测试集上的延迟、吞吐、显存占用、稳定性等维度的综合表现,按加权平均计算最终得分。测试点时间为 iter 平均时间。详见 [XPU-OJ 代码评测指南](https://xpuoj.com/d/2)。 + +**Q:排行榜怎么排?** + +A:每个任务单独计分,一个任务一个榜。两个赛题在 XPU-OJ 的榜单得分规则一致。多次提交取最好一次有效提交。正确性测试不通过的作品不计入排行榜。