Моя контактная информация
Почта[email protected]
2024-08-14
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Отчет о сердце машины
Монтажер: Чжан Цянь, Сяочжоу
Кто-то сказал: «Мы ждали клубнику, а выпустили капусту. Давайте посмотрим, для чего используется эта «капуста».
Возможности программирования больших моделей всегда привлекали большое внимание, а появление сверхмощного ИИ-программиста Девина выдвинуло на передний план тему «Может ли ИИ заменить программистов». Недавно у Девина появился новый оппонент — независимый программист искусственного интеллекта, созданный стартапом Cosine.Джинн. Компания заявила, что Genie легко превзошла Devin, набрав 30% на стороннем тесте SWE-bench, в то время как Devin набрал всего 13,8%.
Этот SWE-Bench представляет собой набор эталонных данных, используемый для оценки способности LLM решать реальные проблемы с программным обеспечением на GitHub. Он собирает 2294 пары Issue-Pull Request из 12 популярных репозиториев Python. Во время тестирования LLM получит базу кода и описание проблемы, а затем сгенерирует исправление для решения проблемы, описанной в проблеме. Этот набор данных широко использовался при оценке возможностей программирования ИИ.
По мере развития возможностей программирования искусственного интеллекта развивается и этот тест. Рано утром представленная в сети модель OpenAI «Strawberry» снова была отложена, но OpenAI действительно выпустила что-то новое — улучшенную версию SWE-Bench — SWE-bench Verified.
OpenAI отметила, что исходный SWE-bench имел некоторые проблемы, которые могли привести к недооценке возможностей автономной разработки программного обеспечения модели. Поэтому в процессе улучшения они сотрудничали с первоначальным автором SWE-Bench для проведения ручной проверки и улучшения, чтобы гарантировать, что объем модульного теста соответствует требованиям, а описание проблемы является ясным.
В новых тестах, проведенных на SWE-bench Verified, многие агенты программирования ИИ получили более высокие оценки, чем раньше. Среди них решение UIUC без агента даже удвоило оценку. OpenAI считает, что это доказывает, что предыдущий тест действительно имел недостаток, заключающийся в недооценке возможностей программирования ИИ.
Но для пользователей сети во всем мире, которые смотрят «Клубнику», этот выпуск все еще слишком поверхностный. Кто-то сказал: «Мы ждали клубнику, а они выпустили капусту».
Базовые знания о SWE-bench
Каждый пример в наборе тестов SWE-bench был создан на основе решенной проблемы GitHub в 12 репозиториях кода Python с открытым исходным кодом на GitHub. Каждый образец имеет связанный запрос на включение (PR), который включает в себя код решения и модульные тесты для проверки правильности кода. Эти модульные тесты называются тестами FAIL_TO_PASS, поскольку они завершаются неудачно до добавления кода решения в PR и проходят после его добавления. Каждый образец также включает тесты PASS_TO_PASS, которые проходят до и после объединения PR, чтобы проверить, не нарушает ли PR другие функции в базе кода, не связанные с проблемой.
В SWE-bench AI-агент получает исходный текст из задачи GitHub, который является постановкой задачи, и имеет доступ к базе кода. Учитывая эту информацию, агент должен отредактировать файлы в базе кода, чтобы решить проблему.
Изменения, внесенные AI-агентом, будут оцениваться путем запуска тестов FAIL_TO_PASS и PASS_TO_PASS. Если тест FAIL_TO_PASS пройден, это означает, что редактор устранил проблему. Если тест PASS_TO_PASS пройден, это означает, что редактирование не нарушило посторонние части базы кода. Чтобы полностью решить исходную проблему GitHub, необходимо пройти оба набора тестов.
Три направления совершенствования для повышения прочности и надежности стенда SWE
В целях повышения прочности и надежности стенда SWE. Команда разработчиков определила три основных направления для улучшения:
SWE-bench Проверено
Чтобы решить эти проблемы, OpenAI инициировала кампанию ручного аннотирования, проводимую профессиональными разработчиками программного обеспечения, проверяя каждый образец в наборе тестов SWE-bench, чтобы убедиться, что модульные тесты имеют соответствующую область применения, а описания проблем являются ясными и недвусмысленными.
Вместе с авторами SWE-bench они выпустили SWE-bench Verified: подмножество оригинального тестового набора SWE-bench, содержащее 500 образцов, проверенных аннотаторами-людьми. Эта версия заменяет оригинальные тестовые наборы SWE-bench и SWE-bench Lite. Кроме того, они публикуют аннотации для всех тестовых образцов SWE-bench.
Они также сотрудничали с авторами SWE-bench для разработки нового инструмента оценки SWE-bench, который использует контейнерную среду Docker, чтобы сделать оценку на SWE-bench проще и надежнее.
Метод улучшения
OpenAI работала с 93 разработчиками программного обеспечения с опытом работы на Python, чтобы вручную проверить образцы SWE-bench и аннотировать 1699 случайных выборок в наборе тестов SWE-bench, и, наконец, получила подтверждение SWE-bench Verified.
Их подход заключается в аннотировании образцов в наборе тестов SWE-bench, чтобы обеспечить справедливость и точность теста. В частности, они сосредотачиваются на двух ключевых моментах: во-первых, оценить, достаточно ли подробное описание проблемы, чтобы не допустить, чтобы слишком расплывчатое описание вызвало несправедливое тестирование; во-вторых, проверить, не будет ли модульный тест FAIL_TO_PASS неправильно отфильтровывать действительные решения.
Каждый критерий аннотации имеет метку в диапазоне [0, 1, 2, 3] с возрастающей серьезностью. Метки 0 и 1 являются незначительными; метки 2 и 3 являются серьезными и указывают на то, что образец в некотором смысле неадекватен и его следует отбраковать.
Кроме того, OpenAI оценивает сложность каждого образца, прося аннотаторов оценить, сколько времени потребуется разработчикам, чтобы принять решение и реализовать решение, при условии, что образец не содержит проблем. Наконец, OpenAI предоставляет возможность ввода в произвольной форме, чтобы отметить любые другие серьезные проблемы с образцом.
Для построения проверенного SWE-bench OpenAI отфильтровывает любые образцы из исходного набора тестов с указанием проблемы или серьезностью модульного теста FAIL_TO_PASS 2 или выше, а также отфильтровывает любые образцы, помеченные другими серьезными проблемами.
Аннотировать результаты
Согласно новым стандартам, большая часть образцов в оригинальном SWE-стенде является неквалифицированной. Как показано на рисунке, 38,3% образцов были помечены из-за того, что формулировка проблемы была недостаточно ясной, а 61,1% были помечены из-за того, что модульные тесты могли несправедливо ошибочно пометить действительные решения как неправильные (уровни серьезности 2, 3. Два уровня суммируются). . В целом, их процесс аннотирования привел к тому, что 68,3% образцов SWE-bench были отфильтрованы из-за неясных формулировок проблем, несправедливых модульных тестов или других проблем.
На рисунке ниже сравнивается распределение сложности исходного набора данных SWE-bench и нового набора данных SWE-bench Verified. Они оценивают распределение сложности SWE-bench на основе случайного подмножества из 1699 образцов.
Как видно из рисунка, в исходном наборе данных SWE-bench расчетное время выполнения большинства (77,8%) образцов составляет менее одного часа работы опытного инженера-программиста. SWE-bench Lite и новый набор данных SWE-bench Verified еще больше увеличивают эту долю: ожидается, что менее 10% проблем займут более часа для решения. Однако механизмы, лежащие в основе этого изменения, совершенно разные: SWE-bench Lite представляет собой подвыборку исходного набора данных для упрощения сравнительного анализа, а SWE-bench Verified пытается удалить невозможные функции из выборки набора данных.
Производительность каждого агента проверена на SWE-bench.
В новом наборе данных SWE-bench Verified команда разработчиков протестировала производительность GPT-4o, используя несколько платформ с открытым исходным кодом, которые хорошо показали себя в исходной таблице лидеров SWE-bench.
Было обнаружено, что производительность GPT-4o на наиболее производительном каркасе достигла 33,2% на тесте SWE-bench Verified, что более чем вдвое превышает показатель в 16% на исходном SWE-тесте. В целом это подтверждает первоначальное подозрение OpenAI о том, что исходный SWE-бенч недооценил возможности агента.
Стоит отметить, что переход от SWE-bench Lite к SWE-bench Verified не так уж и очевиден, поскольку после фильтрации SWE-bench Lite уже проще, чем полный датасет.
Анализ производительности, стратифицированный по сложности
Улучшение производительности при оценке на SWE-bench Verified может быть частично связано с перекосом распределения тестовых образцов в сторону более простых образцов.
OpenAI исследовала это, построив график производительности, стратифицированный по сложности. Если новый набор данных просто изменит распределение сложности, включив в него более простые образцы, стратифицированная производительность внутри каждой категории не изменится, как в случае с исходным SWE-bench на SWE-bench Lite.
Напротив, OpenAI заметила, что производительность агента улучшилась по категориям сложности при переходе к SWE-bench Verified, что соответствует ожидаемому эффекту от удаления невозможных образцов из всех категорий, а не простого перемещения «Удалить сложные образцы».
Справочная ссылка: https://openai.com/index/introducing-swe-bench-verified/