介绍 LiveCodeBench 排行榜——对代码大型语言模型进行全面且无污染的评估
我们很高兴推出基于 LiveCodeBench 的 LiveCodeBench 排行榜,LiveCodeBench 是加州大学伯克利分校、麻省理工学院和康奈尔大学的研究人员开发的新基准,用于衡量大型语言模型的代码生成能力。
LiveCodeBench 从各种编程竞赛平台收集编程问题,并标注问题的发布日期。标注用于评估模型在不同时间窗口发布的题集上的表现,从而采用“随时间评估”策略,有助于检测和防止污染。除了常见的代码生成任务外,LiveCodeBench 还评估自修复、测试输出预测和代码执行,从而为下一代 AI 编程代理所需的编程能力提供更全面的视角。
LiveCodeBench 场景与评估
LiveCodeBench 问题来源于编程竞赛平台:LeetCode、AtCoder 和 CodeForces。这些网站定期举办竞赛,其中包含评估参与者编程和解决问题能力的问题。问题包括自然语言的问题描述以及输入-输出示例,目标是编写一个能够通过一组隐藏测试的程序。成千上万的参与者参加这些竞赛,这确保了问题的清晰度和正确性都经过验证。
LiveCodeBench 使用收集到的问题构建其四个编程场景
- 代码生成。模型被给定一个问题描述,包括自然语言描述和示例测试(输入-输出对),并被要求生成一个正确的解决方案。评估基于生成代码的功能正确性,这通过一组测试用例来确定。
- 自修复。模型被给定一个问题描述并生成一个候选程序,类似于上述代码生成场景。如果出现错误,模型将获得错误反馈(异常消息或失败的测试用例),并被要求生成修复。评估使用与上述相同的功能正确性标准进行。
- 代码执行。模型被提供一个包含函数 (f) 和测试输入的程序片段,并被要求预测程序在输入测试用例上的输出。评估基于执行的正确性指标:如果断言
assert f(input) == generated_output
通过,则认为模型的输出是正确的。 - 测试输出预测。模型被给定问题描述和测试用例输入,并被要求生成输入的预期输出。测试仅根据问题描述生成,无需函数实现,输出使用精确匹配检查器进行评估。
对于每个场景,评估都使用 Pass@1 指标进行。该指标捕获生成正确答案的概率,并根据正确答案的数量与总尝试次数的比率计算,即 Pass@1 = total_correct / total_attempts
。
防止基准污染
污染是当前 LLM 评估中的主要瓶颈之一。即使在 LLM 编码评估中,也已有证据表明 HumanEval 等标准基准存在污染和过拟合的报告([1] 和 [2])。
因此,我们在 LiveCodeBench 中标注了问题的发布日期:这样,对于训练截止日期为 D 的新模型,我们可以在 D 之后发布的问题上计算分数,以衡量它们在未见问题上的泛化能力。
LiveCodeBench 通过“随时间滚动”功能将其形式化,该功能允许您选择特定时间窗口内的问题。您可以在上面的排行榜中尝试一下!
发现
我们发现
- 虽然模型性能在不同场景中存在相关性,但在我们使用的 4 个场景中,相对性能和排名可能有所不同
GPT-4-Turbo
在大多数场景中表现最佳。此外,它在自修复任务上的优势更大,这突出了其接受编译器反馈的能力。Claude-3-Opus
在测试输出预测场景中超越了GPT-4-Turbo
,这突出了其更强的自然语言推理能力。Mistral-Large
在测试输出预测和代码执行等自然语言推理任务中表现更好。
如何提交?
要评估您的代码模型在 LiveCodeBench 上的表现,您可以遵循以下步骤:
- 环境设置:您可以使用 conda 创建一个新环境,并安装 LiveCodeBench
git clone https://github.com/LiveCodeBench/LiveCodeBench.git
cd LiveCodeBench
pip install poetry
poetry install
- 要评估新的 Hugging Face 模型,您可以轻松地使用以下方式进行评估:
python -m lcb_runner.runner.main --model {model_name} --scenario {scenario_name}
针对不同的场景。对于新的模型家族,我们实现了一个可扩展的框架,您可以通过修改 lcb_runner/lm_styles.py
和 lcb_runner/prompts
来支持新的模型,具体说明请参阅 github README。
- 生成结果后,您可以通过填写 此表单 进行提交。
如何贡献
最后,我们正在为 LiveCodeBench 寻找合作者和建议。数据集和代码都已在线提供,因此请通过提交问题或发送电子邮件至 naman_jain@berkeley.edu 与我们联系。