Codetrace-Benchmark
收藏资源简介:
CodeTrace Benchmark是一个专为评估大型语言模型(LLMs)追踪嵌套函数调用能力而设计的基准测试数据集。该数据集包含400个代码追踪问题,覆盖1到20层嵌套深度,每个问题均采用无意义函数名和简单加法运算构成,要求模型追踪执行过程并报告最终打印的数字。数据集旨在通过精确测量模型在不同嵌套深度下的准确率曲线,揭示模型在代码审查、调试和程序分析任务中的实际推理能力边界。 数据集特点包括:使用无意义函数名防止记忆和模式匹配;简单算术运算隔离组合推理难度;每个深度20个问题(N=20)确保5%的准确度估计粒度;确定性生成保证结果可复现。数据集文件包含预生成问题、问题生成器、评分脚本及本地/API测试工具,支持对HuggingFace模型及各类API端点(OpenAI、Anthropic、Google等)的测试。 基准测试结果显示,模型性能会在特定嵌套深度出现断崖式下降,且该临界深度受训练方法(如RL蒸馏)和提示策略(分步追踪)显著影响。数据集采用MIT许可证,鼓励用户提交测试结果以共建模型性能排行榜。
CodeTrace Benchmark 数据集概述
数据集基本信息
- 数据集名称:CodeTrace Benchmark
- 托管地址:https://huggingface.co/datasets/Codetrace-Bench/Codetrace-Benchmark
- 许可证:MIT
- 任务类别:文本生成
- 主要语言:英语
- 标签:代码、基准测试、推理、嵌套
- 数据规模:小于1K样本
核心目标
评估大型语言模型在追踪嵌套函数调用方面的能力,具体探究模型能够可靠追踪的嵌套深度层级。
基准测试内容
- 问题数量:400个代码追踪问题。
- 嵌套深度范围:覆盖深度1至20。
- 问题形式:每条问题均为一个由嵌套函数调用组成的链,函数名均为无意义的随机名称,内部仅包含简单的加减法算术运算。
- 模型任务:模型必须追踪执行过程并报告最终打印的数字。
- 设计特点:
- 使用无意义函数名以防止记忆和模式匹配。
- 仅使用小整数的加减法运算,以隔离组合推理与数学计算难度。
- 每个深度包含20个问题,准确率估计具有5%的粒度。
- 基于种子确定性生成,确保结果完全可复现。
主要发现
- 性能“断崖”现象:模型性能并非逐渐下降,而是在达到特定嵌套深度时出现急剧下降。
- 训练方法的影响:“断崖”出现的位置更多取决于训练方法而非模型大小。
- 逐步追踪提示的影响:强制模型进行逐步追踪在中等嵌套深度下能显著提升准确率,但在高嵌套深度下反而会损害性能,存在一个模型依赖的“交叉点”深度。
示例结果
| 模型 | 参数量 | 标准提示下的断崖深度 | 逐步追踪提示下的断崖深度 | 备注 |
|---|---|---|---|---|
| Qwen2.5-7B-Instruct | 7B | 深度 4 | — | 基础模型 |
| DeepSeek-R1-Distill-Qwen-7B | 7B | 深度 6 | 深度 8 | 从R1进行RL蒸馏的模型 |
数据集文件结构
benchmark/ ├── questions.json # 包含已验证答案的400个问题 ├── generator.py # 生成任意深度的新问题 ├── scorer.py # 为模型响应评分 ├── run_benchmark.py # 在本地HuggingFace模型上运行 └── run_benchmark_api.py # 通过API运行(兼容OpenAI、Anthropic、Google) results/ ├── deepseek_r1_7b_standard.json ├── deepseek_r1_7b_constrained.json └── qwen_2_5_7b.json plots/ ├── nesting_accuracy.png # 主要对比图表 └── scaffolding_crossover.png # 逐步追踪帮助与损害对比图
使用方式
- 环境设置:克隆仓库并安装依赖。
- 生成问题:可使用提供的
questions.json或运行生成器脚本生成新问题。 - 运行基准测试:
- 对本地HuggingFace模型使用
run_benchmark.py。 - 通过API(兼容OpenAI、Anthropic、Google)使用
run_benchmark_api.py。
- 对本地HuggingFace模型使用
- 评分:使用
scorer.py脚本对模型输出进行评分,得到各嵌套深度的准确率曲线及“断崖”深度等指标。 - 提交结果:鼓励用户提交自己模型的测试结果以共建排行榜。
基准测试特点
与多数仅提供单一总分的基准测试不同,CodeTrace提供一条准确率曲线,清晰展示模型在每个嵌套深度上的性能表现,精确指出模型开始失效的位置,便于比较不同模型的性能衰减方式。




