SWE-bench:从零到首次出结果的实操手册
【免费下载链接】SWE-benchSWE-bench: Can Language Models Resolve Real-world Github Issues?项目地址: https://gitcode.com/GitHub_Trending/sw/SWE-bench
SWE-bench 是让大语言模型修复真实 GitHub issue 的评测基准。本文带你从环境安装到跑通一次完整评测,读懂最终报告里的关键数字。
快速验证:跑通最小案例
装好 Docker 后,克隆项目并以开发模式安装:
git clone https://gitcode.com/GitHub_Trending/sw/SWE-bench cd SWE-bench && pip install -e .用单个实例的参考补丁(gold patch)做自检。它不需要模型预测,专门用来确认整条评测链路是通的:
swebench eval lite --gold -i sympy__sympy-20590 --run-id validate-gold跑完会打印类似输出,Instances resolved: 1即代表这个任务被参考补丁成功修复:
Total instances: 1 Instances submitted: 1 Instances completed: 1 Instances resolved: 1 Report written to gold.validate-gold.json拆解单个实例是怎么被评测的
是什么。一个任务实例对应一个 GitHub issue:输入是仓库的base commit加上 issue 描述,目标是产出一个能改 bug、让测试通过的model_patch。
怎么工作。每个实例在 Docker 容器里走三步:
- 按版本说明在
base commit处安装仓库、搭好环境 - 依次打上测试补丁和预测补丁,执行仓库的测试脚本
- 解析测试日志,逐条判定通过与否
你该关注什么。任何一步失败,该实例得分都是 0。所以一次没通过不一定说明补丁写错了,补丁打不上、环境崩溃同样计 0。
配置参数并跑起完整评测
先准备预测文件。评测命令读的是 JSONL,每行一个 JSON,含三个字段:
{"instance_id": "sympy__sympy-20590", "model_name_or_path": "gpt-4", "model_patch": "diff --git a/... b/..."}然后发起评测,参数按你的实际情况增减:
swebench eval lite -p preds.jsonl --run-id my-run -j 8 # -j 按 CPU 核心数调整,建议小于 min(0.75*核心数, 24)逐个参数说明:
-p:预测文件路径,必须是指定的 JSONL 格式- 数据集参数
lite:换成full、verified或 HuggingFace id 可评其他集 --run-id:命名日志目录,结果按run_id加实例 id 缓存-i:只评指定的几个实例,适合反复调试--modal:加了这个就把评测交给云端 Modal 跑
改完怎么确认:看logs/run_evaluation/my-run/下是否按实例生成了子目录,目录里有report.json说明该实例跑完并出了结果。
读懂 resolution rate
一次运行产出两处东西:当前目录(或--report-dir指定处)的汇总文件<model>.<run_id>.json,以及每个实例的日志目录logs/run_evaluation/<run_id>/<model>/<instance_id>/,里面有report.json、test_output.txt、run_instance.log。
关键字段:
| 字段 | 含义 |
|---|---|
| Total instances | 数据集任务总数 |
| Instances submitted | 你提交的预测数 |
| Instances completed | 产出报告的实例数 |
| Instances resolved | 补丁修复成功的实例数 |
| Instances with errors | 无法评分的实例数 |
代表成功的是Instances resolved。resolved + unresolved才是真正被评分的数量,errors 是另外一类跑不出结果的实例。
避开常见卡点
- 现象:换了补丁重跑,结果不变 →原因:结果按
run_id加实例 id 缓存 →解法:换个--run-id再跑 - 现象:
Instances with errors大于 0 →原因:补丁没打上、容器没起来或超时 →解法:打开对应实例的run_instance.log看具体原因 - 现象:磁盘空间告急 →原因:镜像约需 120GB 磁盘 →解法:加
--cache_level base降低存储占用 - 现象:ARM 机器上镜像构建失败 →原因:默认拉取 x86 预构建镜像 →解法:加
--task-repo指向本地任务仓库本地构建
接下来往哪深入
- 完整评测指南:docs/guides/evaluation.md
- 各数据集怎么选:docs/guides/datasets.md
- 评测入口源码:swebench/harness/run_evaluation.py
【免费下载链接】SWE-benchSWE-bench: Can Language Models Resolve Real-world Github Issues?项目地址: https://gitcode.com/GitHub_Trending/sw/SWE-bench
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考