常见问题#

本节回答有关 KernelGenBench 的常见问题。

安装#

问:我需要哪个版本的 Python?#

A: Python 3.10 or higher is required.

问:我可以在仅 CPU 的机器上使用 KernelGenBench 吗?#

:不可以,KernelGenBench 需要 GPU 硬件进行内核验证。生成的 Triton 内核必须在实际的 GPU 硬件上执行。

问:为什么 vLLM 在非 NVIDIA 平台上安装失败?#

:vLLM 专为 NVIDIA GPU 设计。在非 NVIDIA 平台上,torch 和 triton 已预先安装在厂商容器镜像中。不要在这些平台上安装 vLLM —— 系统会自动使用 ATen 数据集。

问:如何为智能体赛道安装 Claude Code CLI?#

:运行 npm install -g @anthropic-ai/claude-code。您还需要通过 export ANTHROPIC_API_KEY=your_key 设置 Anthropic API 密钥。

使用#

问:LLM 赛道和智能体赛道有什么区别?#

  • LLM 赛道:测试没有执行反馈的直接内核生成。成本较低,适合比较基础模型能力。

  • 智能体赛道:测试带有执行反馈的迭代生成。成本较高但效果更好,适合生产级内核生成。

问:如何测试单个算子?#

:使用 --op-name 参数:

# LLM Track
python scripts/generate_kernel_and_verify.py --op-name aten::add --single-test

# Agent Track
cd agent_bench && bash test_ops.sh add --device-count 1

问:我应该使用哪个数据集?#

  • NVIDIA GPU:使用 KernelGenBench(210 个算子)进行完整评估

  • 非 NVIDIA 平台:使用 KernelGenBench-aten(110 个算子),系统会自动选择

  • 特定关注点:使用 KernelGenBench-vllm 进行推理内核测试,或使用 KernelGenBench-cublas 进行线性代数测试

问:完整的基准测试需要多长时间?#

  • LLM 赛道(Pass@5,210 个算子):约 6-12 小时,取决于模型和硬件

  • 智能体赛道(Claude Code,210 个算子):约 24-48 小时,取决于算子复杂度

问:如何减少评估时间?#

  1. 使用 --debug 模式(仅 8 个算子)进行测试

  2. 增加 --device-count 以进行并行验证

  3. 使用较小的数据集(如用 KernelGenBench-aten 替代完整数据集)

  4. 使用 LLM 赛道而非智能体赛道

结果#

问:准确率是什么意思?#

:准确率是指至少有一个生成的内核通过所有测试用例和防作弊检查的算子百分比。

问:加速比是什么意思?#

:加速比是(生成内核时间 / 基准时间)的几何平均值。加速比 > 1.0× 表示生成的内核比基准更快。

问:为什么我的加速比小于 1.0×?#

:生成的内核并不总是优于优化后的基准。这是预期行为,特别是对于:

  • cuBLAS 算子(经过数十年高度优化)

  • 复杂的 vLLM 算子

  • 不成熟的非 NVIDIA 平台上的算子

问:结果保存在哪里?#

  • LLM 赛道:output/pass_at_k/<timestamp>/

  • Agent Track: agent_bench/runs/<method>_<dataset>_<timestamp>/

错误#

问:为什么我会遇到"CUDA 内存不足"错误?#

:减少 --device-count 或使用更小的批次大小。某些算子需要大量 GPU 内存。

问:为什么生成的内核验证失败?#

:常见原因:

  1. 数值精度不匹配(容差过于严格)

  2. 内核逻辑未处理边界情况

  3. 内存访问违规

  4. 形状/数据类型不匹配

问:为什么防作弊检查失败?#

:生成的内核可能正在调用黑名单 API,而不是实现实际计算。请检查内核代码中是否有:

  • 直接调用 torch.ops.aten.*

  • 导入 vllmctypes

  • 任何绕过 Triton 计算的方式

平台特定问题#

问:如何在昇腾 NPU 上运行?#

:安装昇腾依赖并在厂商容器镜像中运行:

pip install -r requirements/requirements_ascend.txt
pip install -e .
# Framework will auto-detect Ascend hardware

问:为什么非 NVIDIA 平台上的准确率较低?#

:非 NVIDIA 平台具有:

  • 不够成熟的 Triton 编译器

  • 不完整的后端支持

  • 不同的内存模型

  • 不同的性能特征

这是预期行为,展示了跨平台可移植性的挑战。

问:我可以使用自定义硬件吗?#

:可以,您可以通过以下方式为新平台扩展 KernelGenBench:

  1. src/runtime/ 中添加设备检测

  2. agent_bench/templates/ 中创建平台特定模板

  3. 添加平台特定的容差

成本#

问:评估成本是多少?#

:成本取决于:

  • 方法(Pass@1 < Pass@5 < Claude Code < AKO4ALL)

  • 算子数量

  • 模型选择

作为参考,完整的 KernelGenBench 评估消耗了超过 150 亿个 token。

问:如何在运行前估算成本?#

:先使用 --debug 模式(8 个算子)测量每个算子的 token 消耗,然后进行推算。

贡献#

问:如何添加新算子?#

:请参阅 CONTRIBUTING.md 获取添加测试用例的详细说明。

问:如何添加新的智能体方法?#

:在 agent_bench/methods/ 中按照现有结构创建新目录。