KernelBench完整指南:如何评估大语言模型生成CUDA内核的性能
【免费下载链接】KernelBenchKernelBench: Can LLMs Write GPU Kernels? - Benchmark + Toolkit with Torch -> CUDA (+ more DSLs)项目地址: https://gitcode.com/gh_mirrors/ke/KernelBench
KernelBench是一个用于评估大语言模型(LLMs)生成GPU内核能力的基准测试工具包,它能够将PyTorch操作转换为CUDA内核并评估其性能。本文将详细介绍如何使用KernelBench来评估大语言模型生成CUDA内核的性能,帮助开发者快速上手这一强大工具。
🌟 KernelBench简介
KernelBench的核心功能是将LLM生成的CUDA内核与PyTorch原生操作进行性能对比,主要关注三个方面:编译性、正确性和速度。该基准测试分为四个级别,从简单的单内核操作到复杂的完整模型架构,全面评估LLM生成GPU内核的能力。
KernelBench工作流程:从任务指令到语言模型生成CUDA内核,再到正确性评估和性能测量的完整流程
📊 基准测试级别
Level 1: 单内核操作(100个问题)
包含神经网络的基础构建块,如卷积、矩阵乘法、层归一化等,对应目录 KernelBench/level1/。Level 2: 简单融合模式(100个问题)
测试融合内核的性能,如Conv + Bias + ReLU、Matmul + Scale + Sigmoid等组合操作,对应目录 KernelBench/level2/。Level 3: 完整模型架构(50个问题)
端到端优化整个模型架构,如MobileNet、VGG、MiniGPT、Mamba等,对应目录 KernelBench/level3/。Level 4: Hugging Face模型
优化来自HuggingFace的完整模型架构,对应目录 KernelBench/level4/。
🛠️ 环境搭建
要开始使用KernelBench,首先需要搭建必要的环境。以下是详细的安装步骤:
1️⃣ 克隆仓库
git clone https://gitcode.com/gh_mirrors/ke/KernelBench cd KernelBench2️⃣ 创建并激活虚拟环境
conda create --name kernel-bench python=3.10 conda activate kernel-bench3️⃣ 安装依赖
pip install -r requirements.txt pip install -e .4️⃣ 配置API密钥(可选)
若要调用LLM API提供商,需设置相应的API密钥,如{INFERENCE_SERVER_PROVIDER}_API_KEY。
5️⃣ 无本地GPU的设置(可选)
如果本地没有GPU,可以使用Modal云服务:
# 安装Modal pip install modal # 设置Modal令牌 modal token new🚀 评估步骤
1️⃣ 单问题评估
从单个问题开始是快速上手的好方法。以下命令将获取问题、生成样本并进行评估:
# 示例:运行Level 2问题40 python3 scripts/generate_and_eval_single_sample.py dataset_src="huggingface" level=2 problem_id=40dataset_src:可选 "local" 或 "huggingface",指定数据集来源。- 添加
.verbose_logging参数可获取更详细的日志信息。
2️⃣ 批量问题评估
若要评估多个问题,可按以下步骤进行:
步骤1:生成响应并存储内核
python3 scripts/generate_samples.py run_name="test_hf_level_1" dataset_src="huggingface" level="1" num_workers=50 server_type="deepseek" model_name="deepseek-coder" temperature=0生成的内核将存储在runs/{run_name}目录下。
步骤2:评估生成的内核
python3 scripts/eval_from_generations.py level=1 run_name="test_hf_level_1" dataset_src="local" num_gpu_devices=8 timeout=3003️⃣ 结果分析
使用scripts/greedy_analysis.py脚本分析评估结果:
python3 scripts/greedy_analysis.py基准时间结果可在 results/timing/ 目录中找到,包含不同NVIDIA GPU代次的性能数据。
📈 性能评估指标
KernelBench主要从三个维度评估生成的CUDA内核:
编译性(compiles)
检查生成的PyTorch代码是否能够加载内联嵌入的CUDA内核并成功构建。正确性(is correct)
在随机输入上与参考PyTorch操作进行多次(n_correctness)比对,确保结果一致。速度(is fast)
与参考PyTorch操作在eager模式和torch.compile执行下的多次(n_trial)运行时间进行比较,评估性能提升。
🛣️ 未来展望
KernelBench的开发团队计划在未来添加更多功能,包括:
- 集成更多框架,如ThunderKittens
- 支持反向传播
- 整合NCU等工具链
📚 参考资料
- 项目源码:src/
- 提示词模板:src/prompts/
- 脚本工具:scripts/
通过本指南,您可以快速掌握KernelBench的使用方法,评估大语言模型生成CUDA内核的性能,为您的GPU加速项目提供有力支持!
【免费下载链接】KernelBenchKernelBench: Can LLMs Write GPU Kernels? - Benchmark + Toolkit with Torch -> CUDA (+ more DSLs)项目地址: https://gitcode.com/gh_mirrors/ke/KernelBench
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考