← 返回资料站  /  AI for AI
基准 评测基准

TritonBench: Benchmarking Large Language Model Capabilities for Generating Triton Operators

TritonBench:评测 LLM 写 Triton 算子的第一个系统基准
一句话清华 THUNLP 提出的首个 Triton 算子生成基准:184 个 GitHub 真实算子(TritonBench-G)+ 166 个 PyTorch 接口对齐算子(TritonBench-T),除功能正确性外还在 A100 上测 speedup 和 GPU efficiency;最强模型(GPT-o1 / DeepSeek-R1)在 G 通道 execution accuracy 也只有 24% 左右,说明 LLM 离可用的 kernel 生成还很远。

这是什么

Triton 是 OpenAI 推出的 Python-like GPU kernel DSL,现在是 LLM 训练/推理栈里手写 kernel 的主流选择(FlashAttention 变体、各种 fused op 大量用 Triton 写)。但 LLM 生成 Triton 代码的能力此前没有系统评测——已有的 KernelBench 面向 CUDA/torch 编译,而 Triton 有自己的一套 block-level 编程模型和坑。

TritonBench 提供两个评测通道:TritonBench-G 从 95 个 100+ star 的 GitHub 仓库里人工清洗出 184 个真实 Triton 算子(补 wrapper、去重、分 d1-d5 五档难度),考察'照真实需求写算子';TritonBench-T 则是 166 个与 PyTorch 接口对齐的算子(含算子融合场景),考察'把 PyTorch 语义翻译成高效 Triton'。两个通道都带可执行的测试代码(平均每算子 3.6 个测试分支,用随机 tensor 做输入)。

与常规代码基准最大的差别是它不止测对错:对能跑对的算子,还在 A100 上测相对参考实现的 Speed Up,以及按专家标注的 memory bytes / FLOPs 算出实测吞吐占 A100 理论峰值的比例(GPU Efficiency)。ACL 2025 主会,S2 引用 78,是后续 Triton 代码生成工作(KernelLLM、各种 RL for kernel 工作)普遍引用的基线。

整体流程:左边是两通道的构建——TritonBench-G 从 GitHub 爬取+过滤+人工修复并做质量评级,TritonBench-T 按 PyTorch 算子统计采样并构造融合算子;右边是评测的三层:CodeBLEU 相似度 → Call/Execution 正确性 → Speed Up 与 GPU Efficiency 性能测量。
整体流程:左边是两通道的构建——TritonBench-G 从 GitHub 爬取+过滤+人工修复并做质量评级,TritonBench-T 按 PyTorch 算子统计采样并构造融合算子;右边是评测的三层:CodeBLEU 相似度 → Call/Execution 正确性 → Speed Up 与 GPU Efficiency 性能测量。

机制与做法

两个通道的构建

G 通道:爬 100+ star 的 Triton 相关仓库(95 个仓库、845 个 Python 文件),LLM prompt 过滤出 250 个含 Triton 代码的文件,再人工逐个修复缺失组件、拆分多算子文件、给纯 kernel 补 wrapper,用 CodeBERTScore 去重,最后为每个算子写自然语言 instruction(功能、函数名、输入输出示例,均经人工校验)。难度由 LLM 初标 + 两名专家复核,统计上 func 数/参数数/行数/token 数随难度单调上升。

T 通道:从 PyTorch 算子统计里采样,人工写出与 PyTorch 接口对齐的 Triton 参考实现,并额外构造 common/uncommon 算子的融合(fusion)组合——这是 Triton 相对 PyTorch 的主要收益来源(省掉中间读写)。另附 8k 条过滤/合成的 GitHub 训练语料(train_crawl 4024 + train_synth 4133),供微调或 RAG 用。

G 通道 184 个人写参考算子自身的 GPU efficiency 分布:平均仅 43%,19.6% 的算子低于 10%,只有 27.7% 超过 70%——专业程序员写的 Triton kernel 也普遍没打满硬件,'跑赢 reference'不等于接近最优。
G 通道 184 个人写参考算子自身的 GPU efficiency 分布:平均仅 43%,19.6% 的算子低于 10%,只有 27.7% 超过 70%——专业程序员写的 Triton kernel 也普遍没打满硬件,'跑赢 reference'不等于接近最优。

五个指标,重点在性能

评测链条:CodeBLEU 相似度(仅 G 通道)→ Call Accuracy(能否无报错跑起来)→ Execution Accuracy(输出与参考一致)→ 对跑对的算子测 Speed Up(t_ref/t_gen)和 GPU Efficiency(实测 GB/s、TFLOPS 占 A100 理论峰值的比例,取两者峰值)。

一个有意思的副产品:他们对 184 个人写的 G 通道参考算子本身也算了 GPU efficiency,平均只有 43.0%,19.6% 的算子低于 10%——专业 Triton 程序员写的 kernel 也大量没榨干硬件,说明这事本身就难,也提示'超过参考实现'并不等于'接近最优'。

主要实验设置

基线覆盖两类:通用大模型直接推理(GPT-4o、Claude-3.5-Sonnet、Qwen2.5-72B、DeepSeek-R1、GPT-o1),以及 7B 级代码模型(Qwen2.5-Coder、DeepSeek-Coder)在 8k Triton 语料上 SFT 后再测。zero-shot 和 one-shot(BM25 从训练语料检索最相近示例)各测一遍。

关键结果

实证核查

有水分基准本身是真实、开源、可跑的,数据和评测脚本齐全(GitHub + HF),也被后续工作广泛当基线;但评测 harness 和参考 kernel 的质量问题不少:第三方复现 T 通道分数明显低于论文、exec 判定用 stdout 字符串比对、参考 kernel 被查出 24 个内存越界 bug,作者对这些 issue 基本没有回应(仓库 2025-06 后停止更新)。用它做研究建议直接用社区修复版数据。
论文报告 DeepSeek-R1 在 TritonBench-T zero-shot Call Accuracy 53.01%。
issue #8 里两位独立用户用仓库自带的 R1 输出(LLM_generated/Bench_T_general_purpose/output_DeepSeek-R1.jsonl)跑官方 EVAL/eval_T/0_call_acc.py,分别得到 37.9% 和 38.55%,与论文差约 15 个点;issue 开着无作者答复。
Execution Accuracy 衡量'输出与参考算子一致'。
issue #7 指出实现上是 subprocess 跑两个 .py 文件后直接比较 stdout 字符串(compare_python_files 里 output1 == output2),对打印格式、非确定性输出很脆弱;issue #5/#6 还报告了 Triton-T 测试的 leakage / 损坏问题,第三方(tcapelle)手工修复后另发了 HF 数据集 tcapelle/TritonBench_T_verified。
G 通道的 184 个参考算子经过'严格人工检查和调试'。
issue #12 用内存安全 sanitizer 扫 data/TritonBench_G_v1,人工确认 24 个真阳性内存越界/data race bug(涉及 apply_penalty.py、attention_fwd_triton1.py、chunk_gla_fwd.py 等),另有 #10/#11 两个具体 data race 修复请求,均未合并回应。
TritonBench will be available at github.com/thunlp/TritonBench(数据 + 评测脚本 + 各模型输出)。
属实:仓库含 G/T 两通道数据、Alpaca 格式指令、8k 训练语料、全部基线模型的生成输出和评测脚本,HF 上有官方数据集 collection(LiShangZ/tritonbench_g / tritonbench_t,见 issue #1);但 last push 2025-06-14,上述质量 issue 长期挂着,维护基本停滞。

与我们方向的关系

对课题组做'LLM 写 kernel / AI for systems'方向,这是比 KernelBench 更贴近现役训练栈的评测对象:Triton 是 vLLM、TorchInductor、各家训练框架 fused kernel 的通用 DSL。它的两通道设计(真实需求 vs PyTorch 语义翻译)和'正确性 + speedup + 占理论峰值比例'的三层指标,可以直接搬到自己的 kernel 生成/优化 agent 评测里。

两个可借鉴的教训:一是基准里连人写参考算子平均 GPU efficiency 都只有 43%,做'beat reference'类 RL reward 时要意识到 reference 本身水位不高;二是它暴露的坑(stdout 比对判等、参考 kernel 内存越界、复现分数对不上)正是自建 kernel 评测时最容易犯的错——判等应该在 tensor 层面做 allclose,参考实现要过 sanitizer。若要实际使用,优先考虑社区修复版 TritonBench_T_verified。

阅读笔记

复现注意:triton 固定 3.1.0、torch>=2.5.1,且要手改 eval 脚本里的 py_interpreter 路径;efficiency 评测依赖专家标注的 bytes/FLOPs,换 GPU(非 A100)需要改理论峰值。注意与 Meta/PyTorch 官方的 pytorch-labs/tritonbench(kernel 性能 benchmark 套件,非 LLM 评测)重名,搜索时别混。

材料清单

TeX 源码
已存档:Raw/tritonbench/source/
代码仓库github.com/thunlp/TritonBench
138★ · 最近推送 2025-06-14
HF 数据集(官方)huggingface.co/collections/LiShangZ/tritonbench-67c0016bc8a8654cfd612a1a
tritonbench_g / tritonbench_t 官方 collection
HF 数据集(社区修复版)huggingface.co/datasets/tcapelle/TritonBench_T_verified
第三方修复 T 通道测试问题后的版本(见 issue #5)
复现讨论github.com/thunlp/TritonBench/issues/8
T 通道 Call Accuracy 复现值(~38%)与论文(53%)不符的 issue

同类条目