修 Bug 能力“評(píng)分——GitHub Issue 修復(fù)基準(zhǔn)完整上手指南)
SWE-bench3 步跑出編碼模型真實(shí)修 Bug 能力評(píng)分——GitHub Issue 修復(fù)基準(zhǔn)完整上手指南【免費(fèi)下載鏈接】SWE-benchSWE-bench: Can Language Models Resolve Real-world Github Issues?項(xiàng)目地址: https://gitcode.com/GitHub_Trending/sw/SWE-bench如果你對(duì)比過(guò)幾款編碼模型大概率碰過(guò)這種尷尬補(bǔ)全基準(zhǔn)分很高拿到真實(shí)項(xiàng)目里卻連一個(gè) issue 都修不動(dòng)。SWE-bench 就是為這個(gè)落差而建的評(píng)測(cè)框架它取真實(shí)的 GitHub issue 和對(duì)應(yīng)時(shí)間點(diǎn)的代碼庫(kù)讓語(yǔ)言模型生成修復(fù)補(bǔ)丁再在隔離的 Docker 環(huán)境里應(yīng)用補(bǔ)丁、跑倉(cāng)庫(kù)自帶的測(cè)試用測(cè)試通過(guò)與否給出判定。它適合需要客觀比較大模型軟件工程能力的開(kāi)發(fā)者與研究者。項(xiàng)目初覽SWE-bench 做什么給誰(shuí)用SWE-bench 是普林斯頓團(tuán)隊(duì)論文 Can Language Models Resolve Real-World Github Issues?ICLR 2024 Oral的官方代碼與數(shù)據(jù)集。任務(wù)設(shè)定只有一句話給定一個(gè) issue 和對(duì)應(yīng)代碼庫(kù)模型需要產(chǎn)出能解決問(wèn)題的代碼補(bǔ)丁patch。它和多數(shù)代碼補(bǔ)全基準(zhǔn)的差別在于驗(yàn)證方式補(bǔ)全題只看答案對(duì)不對(duì)而 SWE-bench 是端到端驗(yàn)證——補(bǔ)丁必須真實(shí)應(yīng)用到倉(cāng)庫(kù)、在容器里跑通該倉(cāng)庫(kù)自己的測(cè)試套件結(jié)果是可復(fù)現(xiàn)的解決/未解決而不是人工判分的相似度。關(guān)鍵基礎(chǔ)信息主要語(yǔ)言Python要求 3.10PyPI 包名swebench當(dāng)前版本 5.0.2協(xié)議MIT安裝方式克隆倉(cāng)庫(kù)后pip install -e .運(yùn)行環(huán)境本地評(píng)測(cè)依賴 Docker官方建議 x86_64 機(jī)器120GB 空閑磁盤、16GB 內(nèi)存、8 核 CPU數(shù)據(jù)集完整集 2294 個(gè)實(shí)例Lite 534 個(gè)Verified 500 個(gè)工程師確認(rèn)可解Multimodal 100 dev 500 testMultilingual 300 個(gè)9 種語(yǔ)言、42 個(gè)倉(cāng)庫(kù)詳見(jiàn) docs/guides/datasets.md快速上手三步跑起來(lái)第一步安裝 Docker 并確認(rèn)守護(hù)進(jìn)程在運(yùn)行本地評(píng)測(cè)的每一步都依賴它。第二步克隆倉(cāng)庫(kù)并從源碼安裝裝完后swebench命令即可用git clone https://gitcode.com/GitHub_Trending/sw/SWE-bench cd SWE-bench pip install -e .第三步用官方參考補(bǔ)丁gold patch驗(yàn)證環(huán)境正確性只跑一個(gè)實(shí)例耗時(shí)短swebench eval verified --gold -i sympy__sympy-20590 --run-id validate-gold跑完預(yù)期看到當(dāng)前目錄生成logs/build_images鏡像構(gòu)建日志和logs/run_evaluation評(píng)測(cè)日志最終報(bào)告寫(xiě)入evaluation_results目錄關(guān)鍵字段是 Instances resolved 和 Resolution rate。gold 驗(yàn)證這條實(shí)例應(yīng)當(dāng)顯示已解決——這說(shuō)明鏡像、補(bǔ)丁應(yīng)用、測(cè)試運(yùn)行整條鏈路都正常。一點(diǎn)說(shuō)明v5 CLI 默認(rèn)從鏡像倉(cāng)庫(kù)拉取預(yù)構(gòu)建鏡像M 系列 Mac 等 ARM 系統(tǒng)需要額外用--task-repo指定本地任務(wù)倉(cāng)庫(kù)通過(guò) Docker Buildx 在本地構(gòu)建鏡像README 中有對(duì)應(yīng)示例。核心能力拆解Docker 化評(píng)測(cè)引擎補(bǔ)丁必須真的修好才算數(shù)它做什么為每個(gè)任務(wù)實(shí)例安裝倉(cāng)庫(kù)到指定的 base_commit應(yīng)用測(cè)試補(bǔ)丁與模型補(bǔ)丁運(yùn)行測(cè)試腳本從日志解析每個(gè)測(cè)試的通過(guò)狀態(tài)并評(píng)分——全鏈路成功且所有目標(biāo)測(cè)試通過(guò)才記 1 分任何一步失敗記 0 分。解決什么問(wèn)題不同機(jī)器上的 Python 版本、依賴差異會(huì)讓評(píng)測(cè)結(jié)果互相不可比容器化把環(huán)境固定住任何人復(fù)現(xiàn)都得到同樣的結(jié)論。怎么實(shí)現(xiàn)swebench/harness/ 負(fù)責(zé)鏡像構(gòu)建、容器生命周期管理和并行調(diào)度-j參數(shù)控制并行數(shù)官方建議不超過(guò)min(0.75 * cpu_count, 24)。# 提交模型預(yù)測(cè)preds.jsonl 為模型生成的補(bǔ)丁8 個(gè)實(shí)例并行評(píng)測(cè) swebench eval verified -p preds.jsonl --run-id my-run -j 8多變體數(shù)據(jù)集與雙重驗(yàn)證先保證數(shù)據(jù)本身干凈它做什么提供 5 個(gè)數(shù)據(jù)集變體從快速迭代Lite到高質(zhì)量對(duì)比Verified再到跨語(yǔ)言Multilingual按需選擇評(píng)測(cè)規(guī)模。解決什么問(wèn)題完整集跑一輪成本高而且不是每個(gè) issue 都保證可解——如果數(shù)據(jù)本身帶噪聲比如參考補(bǔ)丁都跑不過(guò)測(cè)試評(píng)測(cè)結(jié)果就不公平。怎么實(shí)現(xiàn)每個(gè)實(shí)例入庫(kù)前走一遍雙重驗(yàn)證——先應(yīng)用 test_patch 確認(rèn)目標(biāo)測(cè)試確實(shí)處于失敗狀態(tài)FAIL_TO_PASS再應(yīng)用 gold patch 確認(rèn)測(cè)試轉(zhuǎn)為通過(guò)PASS_TO_PASS兩步都成功該實(shí)例才可用于評(píng)測(cè)。from datasets import load_dataset # 加載專家驗(yàn)證集500 個(gè)經(jīng)工程師確認(rèn)可解的 issue帶難度分級(jí)字段 sbv load_dataset(SWE-bench/SWE-bench_Verified, splittest)推理生成與報(bào)告重算生成和評(píng)分解耦它做什么推理階段把 repo issue 交給模型生成補(bǔ)丁swebench infer內(nèi)置 mini-SWE-agent 可直接調(diào)用 API 模型批量生成預(yù)測(cè)swebench report則不啟動(dòng)任何容器只從已保存的日志重新計(jì)分。解決什么問(wèn)題模型跑一次推理成本很高但如果你想調(diào)整評(píng)分口徑或修復(fù)某個(gè)解析 bug不必把容器評(píng)測(cè)整輪重跑一遍。預(yù)測(cè)文件是 JSONL每行一個(gè)實(shí)例核心就三個(gè)字段{instance_id: sympy__sympy-20590, model_name_or_path: gpt-5, model_patch: diff --git a/...}邊界說(shuō)明它擅長(zhǎng)什么不擅長(zhǎng)什么擅長(zhǎng)不擅長(zhǎng) / 限制端到端、可復(fù)現(xiàn)地比較模型的修 bug 能力判定標(biāo)準(zhǔn)是倉(cāng)庫(kù)自己的測(cè)試無(wú)人工判分資源消耗大官方建議 x86_64 機(jī)器、120GB 空閑磁盤、16GB 內(nèi)存、8 核arm64 支持仍標(biāo)注為實(shí)驗(yàn)性數(shù)據(jù)集變體多Lite/Verified 適合快速迭代和日常對(duì)比結(jié)果緩存容易踩坑緩存鍵只有run_idinstance_id換個(gè)補(bǔ)丁復(fù)用同一 run_id 會(huì)直接返回上次的結(jié)果支持 Modal 云端評(píng)測(cè)結(jié)果可發(fā)布到 Hugging Face bucket便于學(xué)術(shù)場(chǎng)景橫向?qū)Ρ雀采w范圍有偏主集以 Python 倉(cāng)庫(kù)為主跨語(yǔ)言能力只由 300 實(shí)例的 Multilingual 子集衡量Multimodal 的 test 集需在官方渠道計(jì)分本地拿不到 gold 補(bǔ)丁進(jìn)階用法與常見(jiàn)坑兩個(gè)最常用的進(jìn)階配置只評(píng)測(cè)指定實(shí)例swebench eval verified -p preds.jsonl -i astropy__astropy-14539 -i sympy__sympy-20590-i可重復(fù)調(diào)試時(shí)不必整輪跑。不啟容器重新計(jì)分swebench report run_id -d verified只讀取已保存的日志重算報(bào)告鏡像緩存級(jí)別可用--cache_levelnone/base/env/instance 四檔調(diào)節(jié)env檔配合清理可省磁盤但每輪更慢細(xì)節(jié)見(jiàn) docs/faq.md。三個(gè)高頻問(wèn)題?? 改了補(bǔ)丁卻得到舊結(jié)果幾乎總是 run_id 復(fù)用了緩存命中上次評(píng)測(cè)。重新評(píng)測(cè)請(qǐng)換一個(gè)--run-id。磁盤被 Docker 占滿先docker system prune清理無(wú)用鏡像和容器Docker Desktop 用戶記得把虛擬磁盤擴(kuò)到約 120GB 空閑。鏡像拉不下來(lái)或 ARM 上構(gòu)建失敗本地加--task-repo指向任務(wù)倉(cāng)庫(kù)用 Buildx 構(gòu)建構(gòu)建失敗會(huì)被如實(shí)報(bào)告只有存在已發(fā)布鏡像時(shí)才會(huì)回退使用。完整參數(shù)以swebench eval --help為準(zhǔn)評(píng)測(cè)細(xì)節(jié)可查 docs/guides/evaluation.md。SWE-bench 把這個(gè)編碼模型到底行不行變成一組可復(fù)現(xiàn)的數(shù)字同樣的容器、同樣的測(cè)試、同樣的判分口徑換臺(tái)機(jī)器也能對(duì)上。如果你正在選型編碼模型或準(zhǔn)備一份模型對(duì)比報(bào)告建議從 Verified 或 Lite 開(kāi)始試。下一步動(dòng)作克隆倉(cāng)庫(kù)、pip install -e .然后跑swebench eval verified --gold -i sympy__sympy-20590 --run-id validate-gold先確認(rèn)整條評(píng)測(cè)鏈路在你的機(jī)器上是通的?!久赓M(fèi)下載鏈接】SWE-benchSWE-bench: Can Language Models Resolve Real-world Github Issues?項(xiàng)目地址: https://gitcode.com/GitHub_Trending/sw/SWE-bench創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考