Пређите на главни садржај
OpenAI

Раздвајање сигнала од шума у проценама програмирања

Детаљном ревизијом налазимо широко распрострањене проблеме са задацима у SWE-Bench Pro и процењујемо да је око 30% задатака неисправно.

Учитавање…

Тачно мерење способности наших модела важно је за исправне одлуке о примени и безбедности, укључујући одлуке у оквиру Оквира спремности(отвара се у новом прозору) привредног друштва OpenAI. Са сваким издањем модела извештавамо о резултатима на различитим спољним и интерним референтним вредностима како бисмо пратили напредак модела. Када евалуације имају недостатке који утичу на резултате, могу створити погрешну слику о способностима, искривити безбедносне процене и утицати на истраживачке приоритете.

Недавно смо истражили како је једна од најчешће коришћених референтних вредности за програмирање, SWE-bench Verified, имала фундаменталне проблеме у дизајну и контаминацији и утврдили да та евалуација више не пружа смислен сигнал о способностима развоја софтвера. Тада смо подстакли ширу заједницу да пређе на SWE-Bench Pro.

SWE-Bench Pro(отвара се у новом прозору) је осмишљен да унапреди SWE-bench Verified тако што тестира моделе на дужим хоризонтима и реалистичнијим програмерским задацима, како би се боље пратиле способности програмирања од стране агента. Као и у SWE-bench Verified, задаци се програмски преузимају из историје измена функција у скупу јавних и приватних депоа. Од модела се тражи да примене решење које пролази нове тестове за неку функцију, без нарушавања постојеће функционалности. На јавном делу од 731 задатка, гранични модели су за осам месеци побољшали стопу пролазности са 23,3% на 80,3%.

Од тада смо спровели сличну ревизију SWE-Bench Pro, прегледајући скуп података помоћу тока анализе појединачних података. Тај ток је прегледао покушаје модела на задатку, метаподатке задатка и трагове неуспеха како би означио вероватне недостатке евалуације. Сваки означени задатак затим је процењен кроз више пролаза истраживача-агената и независно га је прегледало пет искусних софтверских инжењера, уз ескалацију неслагања на даљу истрагу.

Налазимо доказе о озбиљним проблемима у значајном делу скупа података. Наш ток анализе појединачних података означио је 200 (27,4%) неисправних задатака, док је кампања људске анотације утврдила 249 (34,1%).

Проблеми су углавном спадали у четири категорије:

  • Престроги тестови1 намећу конкретне детаље примене који нису наведени у инструкцији, чиме се поништавају бројни функционално исправни поднесци.
  • Недовољно прецизне инструкције2 изостављају захтеве које скривени тестови намећу, а који се не могу разумно закључити.
  • Тестови мале покривености недовољно проверавају тражену функцију, па непотпуне исправке могу да прођу.
  • Обмањујућа инструкција усмерава моделе ка погрешном понашању или противречи ономе што тестови захтевају.

Наши налази указују на то колико је тешко састављати тешке али правичне референтне вредности и на све већу корисност агената за провере квалитета података које се могу скалирати. С обзиром на ове резултате, процењујемо да је око 30% задатака у SWE-bench Pro неисправно и саветујемо програмерима модела да пажљиво испитају резултате.

Методологија

Наш циљ је да обезбедимо да неуспешни задаци одражавају стварна ограничења модела, а успешни потпуна и ваљана решења захтева из инструкције. Да бисмо проверили квалитет података који се користе у евалуацији, направили смо ток осигурања квалитета који процењује да ли сваки појединачни податак тачно одражава способности модела.

Ток осигурања квалитета који комбинује аутоматску проверу и људски преглед ради процене квалитета задатака.

Почетни ток провере квалитета података означава проблеме за преглед. Потврђујемо их дубљом ревизијом означених задатака уз помоћ агента и кампањом људске анотације са искусним инжењерима.

Почетни аутоматизовани филтер прегледа упутства дата моделу, покушаје модела да реши задатак и тестове којима се ти покушаји оцењују, како би означио вероватно неисправне или проблематичне примере. Овај филтер је означио 286 потенцијално неисправних задатака. Затим смо спровели дубљи преглед тог подскупа на два начина: преглед агента под људским надзором, који обухвата опсежне провере са истраживачким агентима и коначни људски суд; и кампању људске анотације са искусним програмерима.

Преглед агента под људским надзором

Сваки означени проблем ревидира се истраживачким агентима заснованим на услузи Codex, којима је дат приступ депоу задатка и окружењу. То им помаже да разликују разумну двосмисленост задатка, која се често може разрешити проучавањем оближњег кода и конвенција депоа, од стварне недовољне прецизности. Агент може да покреће тестове, прегледа датотеке у депоу и истражује покушаје модела и њихове уобичајене начине отказивања на задатку. После неколико независних понављања ових дубљих ревизија, истраживач је прегледао резимее, донео коначну процену и означио вероватне проблеме.

Кампања људске анотације

Паралелно смо спровели кампању људске анотације над означеним подскупом. Сарађивали смо са искусним софтверским инжењерима који су, пре прегледа задатака, обучени о циљевима референтне вредности, таксономији проблема и граничним случајевима. Сваки задатак прегледало је пет инжењера.

Рецензенти су прво формирали независан суд на основу видљивог описа проблема, случајева тестирања и референтног решења из основне истине (познатог као златна закрпа), а затим су анализу тока или транскрипт користили као додатни контекст. Рецензенти су затим додељивали ознаку и оцену озбиљности на основу конкретних доказа, а неслагања или случајеве ниског поверења ескалирали на даљи преглед.

Људски рецензенти су чешће него истраживачки агенти означавали задатке као неисправне. Постојала су и одређена неслагања о категоријама између две путање прегледа, али ни у једном означеном задатку „није неисправан” није била најчешћа људска ознака. За категорије које је означио агентски ток, судови рецензената су се преклапали у 74% случајева.

У поређењу са агентским током, људски рецензенти су такође чешће бирали више ознака за један задатак, што указује да су налазили да су задаци неисправни на више начина или да се не уклапају јасно у једну категорију. То сугерише да је ток агент-плус-рецензент довео до конзервативног означавања: обухватио је исте широке начине отказивања које су људи идентификовали, али је потценио случајеве у којима су рецензенти видели додатне или преклапајуће проблеме. Највећа разлика била је код тестова мале покривености, које су људи изабрали као најчешћи проблем за 9,4% референтне вредности, у поређењу са 4,1% из агентског канала.

Начини отказивања

У неколико случајева инструкција задатка прописивала је конкретну имплементацију, али су скривени тест случајеви очекивали другачије понашање.

This task involves normalizing table-of-contents entries and rendering them back to Markdown via TocEntry.to_markdown(). The task prompt specifies serialization down to character-level spacing, describing how exact spacing and pipes are enforced, and gives examples such as " | Chapter 1 | 1" and "** | Chapter 1 | 1":

Нема

1
"[space]| Chapter 1 | 1"
2
"**[space]| Chapter 1 | 1"
3
"[space]| Just title | "

The hidden test_to_markdown assertions instead require " | Chapter 1 | 1" and "** | Chapter 1 | 1":

Нема

1
"[space][space]| Chapter 1 | 1"
2
"**[space][space]| Chapter 1 | 1"
3
"[space][space]| Just title | "

There are two leading spaces in the hidden tests, but the example given to the model only contains one leading space. If a model rightly follows the given prompt, that one-character difference would fail the hidden test cases and the task would be marked incorrect.

Дискусија

Проблеми које смо идентификовали, заједно са сличним случајевима у SWE-bench Verified, истичу важност строгог проверавања референтних вредности. Проблеми и захтева повлачења (pull request) из депоа отвореног кода првобитно су настајали ради људске сарадње, често кроз дуге размене између одржавалаца и сарадника. Због тога се описи проблема, спојени код и јединични тестови не поклапају увек тако да формирају чисте, изоловане задатке за поуздану евалуацију модела. Конкретно, тестови укључени у захтеве за повлачење (pull request) могу бити престроги јер су написани да потврде одређену измену, а не да дефинишу стандард за решавање задатка независан од примене.

Истовремено, недостатке у евалуацији сада је лакше открити него што би било чак и пре кратког времена. Како се способности модела побољшавају, можемо користити те моделе да доста дубље и доследније прегледамо инструкције, тестове, закрпе, трагове и граничне случајеве, помажући да се открију проблеми референтних вредности које је раније било скупо или непрактично налазити у великом обиму.

Надамо се да ће шира заједница за евалуацију развити нове референтне вредности које искусни програмери граде посебно за тестирање способности модела. Тај приступ може очувати висок праг и реализам који желимо при мерењу способности модела, а омогућава и бољи људски надзор током целог процеса. С обзиром на проблеме откривене у овој анализи, повлачимо своју ранију препоруку да се усвоји SWE-Bench Pro.

На крају, евалуација треба да пружи смислен сигнал кроз референтне вредности које је тешко заобићи, којима је лако веровати и који истински одражавају способност или усклађеност модела. Пошто ови резултати утичу на одлуке о примени и безбедности привредног друштва OpenAI, евалуације које пратимо морају бити ваљане и информативне.

Аутор

OpenAI

Фусноте

  1. 1

    Ову категорију смо раније називали уским тестовима.

  2. 2

    Ову категорију смо раније називали широким тестовима.