SuperAPI AI 工具集

evaluating-code-models

测试与质量

查看项目

更新于 10-15 13:10

技能介绍

BigCode Evaluation Harness 是面向代码生成模型的基准评测工具,用于在 15 个以上基准上评估模型,包括 HumanEval、MBPP 和 MultiPL-E(覆盖 18 种语言)。评测以 pass@k 为核心指标,通过执行单元测试判断生成代码的功能正确性。

用途 主要用于代码生成模型的基准测试与横向对比,例如评估模型在 Python 代码补全、入门级编程题、多语言代码生成、竞赛题、数据科学题以及填充中间(FIM)能力上的表现。也可用于为 BigCode/HuggingFace 排行榜提交结果。

主要能力

  • 支持 HumanEval(164 道手写题,函数补全)、HumanEval+(同 164 题,测试用例多 80 倍,更严格)、MBPP(500 道众包题,入门难度)、MBPP+(399 道精选题,测试用例多 35 倍)。
  • MultiPL-E 将 HumanEval/MBPP 翻译为 C++、Java、JavaScript、Go、Rust、TypeScript、C#、PHP、Ruby、Swift、Kotlin、Scala、Perl、Julia、Lua、R、Racket 等 18 种语言。
  • 高级基准:APPS(10,000 道题,含入门/面试/竞赛级)、DS-1000(1,000 道数据科学题,覆盖 7 个库)、HumanEvalPack(6 种语言的合成/修复/解释任务)、Mercury(1,889 道题,评估计算效率)。
  • 支持标准 HuggingFace 模型、量化模型(4-bit/8-bit)、自定义或私有模型。
  • 支持仅生成(generation_only)与在 Docker 中安全执行代码两种模式。

使用方式 安装: git clone https://github.com/bigcode-project/bigcode-evaluation-harness.git cd bigcode-evaluation-harness pip install -e . accelerate config

在 HumanEval 上评测: accelerate launch main.py
--model bigcode/starcoder2-7b
--tasks humaneval
--max_length_generation 512
--temperature 0.2
--n_samples 20
--batch_size 10
--allow_code_execution
--save_generations

查看可用任务: python -c "from bigcode_eval.tasks import ALL_TASKS; print(ALL_TASKS)"

典型工作流包括:标准代码基准评测(选择基准、配置模型与生成参数、执行评测、分析 pass@k 结果);多语言评测(在主机上仅生成,再在 Docker 容器中执行评测);指令微调模型评测(使用 instruct-humaneval 等任务并配置 instruction_tokens);多模型对比(脚本批量评测并生成对比表)。

常用参数:--model、--tasks、--n_samples(pass@k 需 200)、--temperature、--max_length_generation、--batch_size、--allow_code_execution、--generation_only、--load_generations_path、--save_generations、--metric_output_path、--load_in_8bit、--load_in_4bit、--trust_remote_code、--precision。

适用场景

  • 需要专门评估代码生成模型。
  • 需要多语言评测(MultiPL-E 18 种语言)。
  • 需要用单元测试验证功能正确性(pass@k)。
  • 需要为 BigCode/HuggingFace 排行榜做基准测试。
  • 需要评估填充中间(FIM)能力。

限制与替代 若需通用 LLM 基准(MMLU、GSM8K、HellaSwag)可用 lm-evaluation-harness;更严格的 HumanEval+/MBPP+ 可用 EvalPlus;真实 GitHub 问题解决可用 SWE-bench;无污染持续更新题可用 LiveCodeBench;代码理解任务(克隆检测、缺陷预测)可用 CodeXGLUE。

硬件要求(参考):7B 模型 fp16 约 14GB 显存、4-bit 约 6GB,HumanEval n=200 在 A100 上约 30 分钟;13B 约 26GB/10GB、约 1 小时;34B 约 68GB/20GB、约 2 小时。

常见问题:结果与论文不一致时检查 n_samples、temperature、任务名拼写和 max_length_generation;CUDA 显存不足可用量化或减小 batch_size;代码执行挂起或超时建议用 Docker 安全执行;指令模型得分低需确认指令格式与 instruction_tokens;MultiPL-E 语言失败需使用专用 Docker 镜像 ghcr.io/bigcode-project/evaluation-harness-multiple。