开源项目_代码生成模型评测工具
1 引言
优化模型之后,评估是不可避免的。打榜可以证明模型的能力,同时还有其他一些好处:
- 当我们对模型进行微调或进行工程优化后,需要采用相对客观的标准来评估工作成果。
- 在选择模型基座或在应用中选择适合自己的模型时,至少要了解一下所选模型在行业内的水平,毕竟论文实验里可能存在田忌赛马的情况。
- 如果项目庞大且复杂,可能需要建立自己的评估工具,以进行更有针对性的测试。除了评估大型模型的自动编码效果外,还上可评估我们的代码质量。
以下是一些推荐的评估工具和排行榜。EvalPlus 是一个比较推荐的工具,它是 HumanEval 的增强版,并对程序错误进行了更严格的判断。论文首次提交于 2023 年 5 月,排行榜一直在更新。推荐该工具主要因为排行榜得分与我们主观感受比较一致。
2 HumanEval:LLM 代码生成基准
HumanEval 可以算是代码模型的标准测试,一般论文实验部分都使用它评测,它主要评测的是模型自身的性能。
HumanEval 由 HumanEval 数据集和用于评估 LLM 性能的 pass@k 指标组成。这个手工制作的数据集包含 164 个编程挑战的单元测试,以及用于评估生成代码功能正确性的评估指标。
数据集包含 164 个手写编程问题,用于评估语言理解、算法和简单数学。每个问题都包括:函数签名、文档字符串、正文和多个单元测试,平均每个问题有 7.7 个测试。
pass@k 指标旨在评估生成代码示例的功能正确性。pass@k 指标定义为:在生成代码的前 k 个中至少有一个通过单元测试的概率。
- 排行榜:https://paperswithcode.com/sota/code-generation-on-humaneval
- 项目地址:https://github.com/openai/human-eval 1.8k Star
- 论文:https://arxiv.org/abs/2107.03374(2021.7.7 第一次提交)
3 EvalPlus
EvalPlus 也是一个代码生成基准测试框架,用于严格评估代码生成大模型的正确性。它采用基础评估数据集,并使用自动输入生成步骤来生成大量新的测试输入。此外,它还使用了基于突变和基于突变的输入生成器来生成和多样化大量新的测试输入,以进一步验证生成代码。
EvalPlus 扩展了流行的 HumanEval 基准测试,并额外生成了 81 个测试构建 HumanEval,对 14 种流行 LLMs 产品的进行评估。和以前的基准方法相比,EvalPlus 使用 LLMs 合成了一些错误代码,进行更严格的测试,并捕获了大量以前未检测到的错误代码。
- github 地址:https://github.com/evalplus/evalplus 695 Star
- 论文地址:https://arxiv.org/abs/2305.01210(2023.5.2 第一次提交)
- 排行榜:https://evalplus.github.io/leaderboard.html
(这个排行榜和我们的主观感受比较一致,建议点开看看)
4 CodeBLEU
通过评估 CodeBLEU 与程序员在三个代码合成任务(即文本到代码、代码转换和代码优化)上分配的质量分数之间的相关系数来进行实验。
- 论文地址:https://arxiv.org/abs/2009.10297(2020.9.22 第一次提交)
5 MBPP(Python 编程测试)
MBPP(Mostly Basic Programming Problems)基准测试旨在评估 LLM 在从自然语言描述中合成简短 Python 程序方面的能力。该数据集包含 974 个编程任务,旨在供初学者解决,涵盖编程基础知识和标准库功能等。每个问题都包含任务描述、代码解决方案和 3 个用于检查功能正确性的自动化测试用例。MBPP 数据集可以在 huggingface 上找到。
- 论文地址:https://arxiv.org/pdf/2108.07732.pdf
6 SWE-bench 测试 LLM 能否解决 Github 问题
SWE-bench 是一个基准测试,用于评估大型语言模型解决现实世界软件问题的能力。从 GitHub 收集的现实世界软件问题,给定一个代码库和一个问题,语言模型的任务是生成一个补丁来解决所描述的问题。
- 代码地址:https://github.com/princeton-nlp/SWE-bench 261 Star
- 论文地址:https://arxiv.org/abs/2310.06770(2023.10.10 第一次提交)
7 参考
LLM Benchmarking: How to Evaluate Language Model Performance