learn_about_humanEval

在这里记录一下评估模型代码生成能力常用的Benchmark:humanEval
HumanEval 数据集是 OpenAI 为评估代码生成模型而创建的一个数据集,专门用于测试模型的编程能力。该数据集中一共有164条数据,均以python书写。

数据格式

举例一条数据如下:

1
2
3
4
5
6
7
{
"task_id": "HumanEval/163",
"prompt": "\ndef generate_integers(a, b):\n \"\"\"\n Given two positive integers a and b, return the even digits between a\n and b, in ascending order.\n\n For example:\n generate_integers(2, 8) => [2, 4, 6, 8]\n generate_integers(8, 2) => [2, 4, 6, 8]\n generate_integers(10, 14) => []\n \"\"\"\n",
"entry_point": "generate_integers",
"canonical_solution": " lower = max(2, min(a, b))\n upper = min(8, max(a, b))\n\n return [i for i in range(lower, upper+1) if i % 2 == 0]\n",
"test": "def check(candidate):\n\n # Check some simple cases\n assert candidate(2, 10) == [2, 4, 6, 8], \"Test 1\"\n assert candidate(10, 2) == [2, 4, 6, 8], \"Test 2\"\n assert candidate(132, 2) == [2, 4, 6, 8], \"Test 3\"\n assert candidate(17,89) == [], \"Test 4\"\n\n # Check some edge cases that are easy to work out by hand.\n assert True, \"This prints if this assert fails 2 (also good for debugging!)\"\n\n"
}

prompt中,告诉了模型函数名、函数定义和预期输出,entry_point为函数名,canonical_solution提供了示例函数,test为测试用例。

评价指标‘Pass@k’

HumanEval 使用 pass@k 作为主要评估指标,它衡量的是模型生成代码在多次尝试中成功解决问题的概率。具体计算方式如下:

  • k = 1:模型只生成一个代码解决方案,评估该方案是否通过所有测试用例。
  • k > 1:模型可以生成多个候选代码,评估在这 k 个候选方案中,至少有一个通过所有测试用例的情况。

learn_about_humanEval
https://august6676.github.io/2024/09/18/learn-about-humanEval/
作者
Xiaoxuan Zhou
发布于
2024年9月18日
许可协议