Kāpēc SWE-bench Verified vairs nemēra robežšķirtnes programmēšanas spējas
SWE-bench Verified kļūst arvien piesārņotāks. Mēs iesakām SWE-bench Pro.
Kopš mēs sākotnēji publicējām SWE-bench Verified 2024. gada augustā, nozare to ir plaši izmantojusi, lai novērtētu modeļu progresu autonomos programmatūras inženierijas uzdevumos. Pēc tā izlaišanas SWE-bench Verified sniedza spēcīgu signālu par spēju progresu un kļuva par standarta metriku, par kuru ziņo robežšķirtnes modeļu izlaidumos. Šo spēju progresa izsekošana un prognozēšana ir arī svarīga OpenAI Sagatavotības satvara daļa. Kad sākotnēji izveidojām Verified etalonu, mēs mēģinājām atrisināt problēmas sākotnējā novērtējumā, kas padarīja noteiktus uzdevumus neiespējamus SWE-bench datu kopā(atveras jaunā logā).
Pēc sākotnējiem lēcieniem progress SWE-bench Verified progress ir palēninājies, pēdējo 6 mēnešu laikā uzlabojoties(atveras jaunā logā) no 74,9% uz 80,9%. Tas rada jautājumu: vai atlikušās kļūmes atspoguļo modeļa ierobežojumus vai pašas datu kopas īpašības?
Jaunā analīzē mēs atklājām divas galvenās problēmas ar Verified kopu, kas liecina, ka etalons vairs nav piemērots, lai mērītu progresu autonomo programmatūras inženierijas spēju jomā robežšķirtnes palaišanām mūsdienu veiktspējas līmeņos:
- Testi noraida pareizus risinājumus: mēs auditējām 27,6% apakškopu no datu kopas, kuru modeļi bieži nespēja atrisināt, un konstatējām, ka vismaz 59,4% auditēto uzdevumu ir kļūdaini testa gadījumi, kas noraida funkcionāli pareizus iesniegumus, neskatoties uz mūsu labākajiem centieniem to uzlabot sākotnējā SWE-bench Verified izveidē.
- Apmācība ar risinājumiem: Tā kā lieli robežšķirtnes modeļi var apgūt informāciju no apmācības datiem, ir svarīgi, lai tie nekad netiktu apmācīti ar problēmām un risinājumiem, uz kuriem tie tiek novērtēti. Tas ir līdzīgi kā skolēniem iepriekš parādīt gaidāmā kontroldarba uzdevumus un risinājumus – viņi var neatcerēties atbildes no galvas, taču skolēniem, kuri atbildes ir redzējuši iepriekš, noteikti veiksies labāk nekā tiem, kuri tās nav redzējuši. SWE-bench uzdevumi tiek iegūti no atvērtā koda repozitorijiem, kurus daudzi modeļu nodrošinātāji izmanto apmācības nolūkiem. Savā analīzē mēs atklājām, ka visi robežšķirtnes modeļi, kurus testējām, spēja reproducēt oriģinālo, cilvēka rakstīto kļūdas labojumu, kas tika izmantots kā patiesās atbildes atsauces etalons (saukts par "zelta ielāpu"), vai arī burtiski atveidot problēmas izklāsta specifiku noteiktiem uzdevumiem, un tas norāda, ka visi no tiem mācību laikā ir redzējuši vismaz daļu no uzdevumiem un risinājumiem.
Mēs arī atradām pierādījumus, ka modeļiem, kas uzdevumus ir redzējuši apmācības laikā, ir lielāka iespēja gūt panākumus, jo tiem ir papildu informācija, kas nepieciešama, lai izturētu nepietiekami specificētos testus.
Tas nozīmē, ka uzlabojumi SWE-bench Verified vairs neatspoguļo jēgpilnus uzlabojumus modeļu reālās pasaules programmatūras izstrādes spējās. Tā vietā tie arvien vairāk atspoguļo to, cik lielā mērā modelis mācību laikā tika pakļauts etalonam. Tāpēc mēs esam beiguši ziņot par SWE-bench Verified rezultātiem, un mēs iesakām arī citiem modeļu izstrādātājiem rīkoties tāpat.
Mēs veidojam jaunus, nepiesārņotus novērtējumus, lai labāk izsekotu programmēšanas spējas, un mēs uzskatām, ka šī ir svarīga joma, kurai pievērst uzmanību plašākai pētniecības kopienai. Līdz brīdim, kad mums tie būs, OpenAI iesaka ziņot par SWE-bench Pro rezultātiem.
Sākotnējais SWE-bench(atveras jaunā logā) novērtējums tika laists klajā 2023. gadā. Katrs uzdevums ir iegūts no atrisinātas GitHub problēmas vienā no 12 atvērtā koda Python repozitorijiem un sasaistīts ar atbilstošo pull request (PR). Lai noteiktu, vai modeļa ģenerētā koda izmaiņa ir pareiza, katram uzdevumam ir divas testu kopas:
- Testi, kas neiztur pārbaudi nemodificētā kodā, bet iztur, ja problēma ir pareizi izlabota
- Regresijas testi, kas iztur pārbaudi gan pirms, gan pēc labojuma, lai nodrošinātu, ka nesaistītā funkcionalitāte paliek neskarta.
Modelis testus neredz. Tam ir jāizveido koda izmaiņas, ņemot vērā tikai sākotnējo uzdevuma tekstu un repozitorija stāvokli pirms labojuma. Tas nokārto uzdevumu tikai tad, ja pēc koda izmaiņu piemērošanas iztur visus testus.
Mēs atklājām daudzas problēmas ar šo novērtējumu, kas varētu novest pie modeļu spēju nepietiekamas novērtēšanas.
- Daži vienības testi bija pārāk specifiski vai neatbilda uzdevumam, tāpēc pareizi labojumi varēja tikt noraidīti.
- Daudzi uzdevumu izklāsti bija nepietiekami definēti, kas varētu novest pie vairākām derīgām interpretācijām – kamēr testi aptvēra tikai vienu konkrētu.
- Atkarībā no vides iestatījumiem (Linux vai Windows, vai Python versijas) daži testi var nepamatoti neizdoties
Mēs izveidojām SWE-bench Verified 2024. gadā, lai risinātu šīs problēmas. Mēs sadarbojāmies ar pieredzējušiem programmatūras inženieriem, lai pārskatītu 1699 SWE-bench uzdevumus un izfiltrētu uzdevumus, kuriem bija šīs problēmas. Katru uzdevumu neatkarīgi pārskatīja trīs eksperti. Šī pārskatīšanas procesa rezultātā tika iegūts SWE-bench Verified – atlasītu 500 uzdevumu kopums.
Lai gan SWE-bench Verified ir būtisks uzlabojums salīdzinājumā ar sākotnējo versiju, joprojām pastāv problēmas. Mēs veicām auditu 138 SWE-bench Verified uzdevumiem, kurus OpenAI o3 neizdevās konsekventi atrisināt 64 neatkarīgos mēģinājumos. Katru gadījumu neatkarīgi pārskatīja vismaz seši pieredzējuši programmatūras inženieri. Ja eksperts atzīmēja kādu problēmu, to atkārtoti pārbaudīja vēl viena komanda.
Mēs konstatējām, ka 59,4% no 138 uzdevumiem ietvēra būtiskas nepilnības testa izstrādē un/vai uzdevuma aprakstā, padarot tos ārkārtīgi grūti atrisināmus vai pat neiespējamus pat viskompetentākajam modelim vai cilvēkam.
- 35,5% no auditētajiem uzdevumiem ir stingri testu gadījumi, kas uzspiež konkrētas ieviešanas detaļas, padarot nederīgus daudzus funkcionāli pareizus iesniegumus – to mēs saucam par šauriem testu gadījumiem.
- 18,8% no auditētajiem uzdevumiem ir testi, kas pārbauda papildu funkcionalitāti, kas nebija norādīta problēmas aprakstā – to mēs saucam par plašaiem testu gadījumiem.
- Atlikušie 5,1% uzdevumu bija ar dažādām problēmām, kas nebija labi sagrupētas šajā taksonomijā.
Ilustratīvs pirmā kļūmes veida piemērs ir pylint-dev__pylint-4551(atveras jaunā logā), kur PR kā daļu no kopējā risinājuma ievieš jaunu funkciju `get_annotation`. Šis funkcijas nosaukums nav minēts uzdevuma aprakstā, bet to tieši importē testi. Lai gan daži modeļi varētu intuitīvi izveidot šādu funkciju, nav nepieciešams ieviest funkciju ar tieši šādu nosaukumu, lai pareizi risinātu uzdevumu. Daudzi derīgi risinājumi neiztur testus importēšanas kļūdu dēļ.
Problēmas apraksts
PR testa fragments
PR testu kļūmes (saīsināts lasāmības labad)
Pārāk plašu testu piemērs ir sympy__sympy-18199(atveras jaunā logā). Šis uzdevums tika iegūts no PR, kas risināja trīs atšķirīgas problēmas ar funkciju `nthroot_mod`, konkrēti #17373(atveras jaunā logā), #17377(atveras jaunā logā) un #18212(atveras jaunā logā). Tomēr SWE-bench Verified uzdevuma apraksts aptver tikai pēdējo uzdevumu #18212(atveras jaunā logā). Tas rada neatbilstību – PR testi aptver visus trīs uzdevumus, kamēr aprakstā ir detalizēti izklāstīts tikai viens. Mūsu izpildēs modeļi bieži pareizi ievieš aprakstīto labojumu un pēc tam neiztur testus, kas aptver ieviešanu pārējo divu problēmu gadījumā.
Sākotnējais PR apraksts (no GitHub PR).
Uzdevuma apraksts par #18212
SWE-bench Verified uzdevuma problēmas apraksts (ņemts tikai no #18212):
SWE-bench Verified un repozitoriji (koda bāzes un laidienu piezīmes) ir gan atvērtā koda, gan plaši izmantoti un apspriesti, kas modeļu izstrādātājiem apgrūtina izvairīšanos no datu piesārņojuma.
Mēs vispirms saskārāmies ar piesārņojuma pazīmēm mūsu pašu modeļos. Piemēram, kad GPT‑5.2 atrisināja 31 uzdevumu, ko mēs bijām identificējuši kā gandrīz neatrisinājumu. Attiecībā uz uzdevumu django__django-14725(atveras jaunā logā) testi prasa konkrētu jaunu parametru `edit_only`, kas nav skaidri prasīts uzdevuma izklāstā. Risinot uzdevumu, GPT‑5.2 savā domu ķēdē parāda, ka tam ir informācija par laidiena piezīmēm, kurās detalizēti aprakstītas izmaiņas koda bāzē, un pareizi identificē, ka parametrs `edit_only` tika ieviests Django 4.1.
GPT‑5.2 CoT
Lai novērtētu, cik nozīmīgs piesārņojums ir plašākā mērogā, mēs izveidojām automatizētu sarkanās komandas pārbaudes procesu. Katram SWE-bench Verified jautājumam mēs uzdevām GPT‑5 aptaujāt GPT‑5.2‑Chat, Claude Opus 4.5 un Gemini 3 Flash Preview par piesārņojumu. Šie modeļi tika izvēlēti, lai izslēgtu spriestspējas modeļus, taču mēs atzīstam, ka starp tiem, visticamāk, pastāv būtiska spēju atšķirība.
Lai pārbaudītu piesārņojumu, GPT‑5 saņēma: SWE-bench Verified uzdevuma ID, aprakstu, zelta ielāpu un PR testus. Vairāk nekā 15 kārtu laikā mēs ļāvām GPT‑5 variēt sistēmas/izstrādātāja uzvedni, lietotāja uzvedni un palīga iepriekšējo aizpildījumu, kā arī dažādas identificēšanas stratēģijas. Pēc katra gājiena tiesneša modelis atzīmēja, cik daudz jaunas, uzdevumam specifiskas informācijas parādījās, un katra atbilde tika marķēta pēc piesārņojuma smaguma pakāpes no “nav” to “spēcīgs”. GPT‑5 bija atļauts pielāgot savu stratēģiju, pamatojoties uz iepriekšējām kārtām, lai iteratīvi atgūtu uzdevumam specifiskas detaļas. Katram spēcīga piesārņojuma piemēram mēs ar citu tiesnesi verificējām, ka GPT‑5 mērķa modelim neizpauda pārāk daudz informācijas. Visbeidzot mēs manuāli pārskatījām “spēcīgos” piemērus, kas veido šī ieraksta transkriptus.
Zemāk ir piemēri par spēcīgu piesārņojumu dažādu modeļu nodrošinātāju vidū.
Ja ir dots īss fragments no uzdevuma apraksta, GPT‑5.2 izvada precīzu zelta ielāpu. Jo īpaši tas zina precīzu klases un metodes nosaukumu, kā arī jauno agrīnās atgriešanās nosacījumu `if username is None or password is None`, kas tiek ieviests.
Uzdevuma ID: django__django-11451(atveras jaunā logā)
Piesārņojuma identificēšana
Zelta ielāps
Opus spēj ne tikai atcerēties precīzu 4 rindu funkcionālo izmaiņu, ko ieviesa PR, kā arī konkrēto faila nosaukumu un metodi, ko tas skāra, bet arī burtiski citē iekļauto komentāru, kas bija daļa no diff.
Uzdevuma ID: astropy__astropy-13236(atveras jaunā logā)
Piesārņojuma identificēšana
Zelta ielāps
Gemini 3 Flash, ja papildus ID nav sniegta nekāda cita informācija par uzdevumu, spēj izvadīt burtisku informāciju no uzdevuma apraksta un zelta ielāpa. Tas ietver jauno regex formulu lietotājvārda validācijai un precīzus rindu numurus izmaiņām.
Uzdevuma ID: django__django-11099(atveras jaunā logā)
Piesārņojuma identificēšana
Zelta ielāps
No šī SWE-bench Verified audita mēs saskatām divas plašākas mācības novērtējumu izstrādei. Pirmkārt, etalonuzdevumi, kas iegūti no publiski pieejamiem materiāliem, rada piesārņojuma risku, jo saskare ar mācību datiem var nemanāmi mākslīgi paaugstināt rezultātus. Ja etalona izveidē tiek izmantoti publiski pārmeklēti dati, modeļu izstrādātājiem būtu jāveic papildu testi, lai pārbaudītu datu piesārņojumu. Etaloni, un pat to risinājumi, kas padarīti publiski, var nonākt mācību datos. Īpaša piesardzība jāievēro gan attiecībā uz to, kā tiek publicētas datu kopas (t.i., aizsardzība ar paroli), gan apmācības datu filtrēšanā (t.i., stingra marķiervirkņu ievērošana).
Otrkārt, automatizēta vērtēšana ir grūti pareizi īstenojama; ideāliem testa gadījumiem vajadzētu pilnībā verificēt pareizu funkcionalitāti, būt gan agnostiskiem pret konkrētām nesvarīgām ieviešanas detaļām, gan arī izturīgiem pret saīsinātiem risinājumiem. Šīs problēmas pēc būtības ir sarežģītas un grūti atrisināmas. Šo problēmu atklāšanai bija nepieciešamas vairākas apjomīgas cilvēku veiktas marķēšanas kampaņas.
Mēs esam iekļāvuši šos secinājumus savos pēdējā laika novērtēšanas centienos. Pēdējos mēnešos mēs esam izvēlējušies ziņot rezultātus no SWE-Bench Pro publiskās daļas. Mēs iesakām citiem modeļu izstrādātājiem darīt to pašu. SWE-bench Pro nav ideāls, taču empīriski šķiet, ka tas mazāk cieš no piesārņojuma problēmām. Mūsu piesārņojuma noteikšanas process atklāja dažus piesārņojuma gadījumus, taču tie bija ievērojami retāki un mazāk smagi nekā SWE-bench Verified, un neviens modelis nespēja izveidot pilnīgu burtisku zelta ielāpu.
Mēs turpināsim ieguldīt oriģinālos, privāti izstrādātos etalonrādītājos un lūgsim nozares un akadēmiskās vides palīdzību darīt to pašu. Etalonā GDPVal uzdevumus privāti izstrādā jomas eksperti, samazinot izpaušanas risku, un risinājumus holistiski vērtē apmācīti recenzenti. Šī pieeja prasa daudz resursu, taču ir arvien nepieciešamāka, lai izmērītu patiesus spēju uzlabojumus.


