Автор: Денис Аветисян
Представлен SWE-Bench++ — автоматизированный инструмент для генерации реалистичных и разнообразных бенчмарков в области разработки программного обеспечения.

Фреймворк позволяет создавать масштабируемые тесты для оценки моделей машинного обучения, минимизируя риски загрязнения данных и поддерживая многоязычную оценку.
Несмотря на прогресс в области оценки больших языковых моделей (LLM) для задач разработки программного обеспечения, существующие бенчмарки часто страдают от ограниченного масштаба, недостаточного разнообразия и рисков загрязнения данных. В данной работе представлена платформа SWE-Bench++: A Framework for the Scalable Generation of Software Engineering Benchmarks from Open-Source Repositories, автоматизированный подход к генерации бенчмарков для оценки LLM на основе реальных pull request’ов из 11 языков программирования. SWE-Bench++ позволяет создавать воспроизводимые, основанные на выполнении задач, охватывающие как исправление ошибок, так и реализацию новых функций. Позволит ли этот новый бенчмарк стимулировать дальнейшие улучшения в области генерации и понимания кода LLM и обеспечить более надежную оценку их возможностей?
Вызов Реалистичных Эталонов для Программного Обеспечения
Существующие эталоны для оценки программного обеспечения часто оказываются упрощенными версиями реальных задач, что существенно ограничивает их практическую ценность. В то время как стандартные тесты концентрируются на изолированных функциях или небольших фрагментах кода, реальные изменения в крупных проектах, таких как те, что представлены в GitHub pull requests, отличаются гораздо большей сложностью и контекстуальностью. Эти запросы на внесение изменений включают в себя не только добавление нового кода, но и рефакторинг существующего, исправление ошибок, адаптацию к изменяющимся требованиям и взаимодействие с различными частями кодовой базы. Отсутствие подобной сложности в эталонных задачах приводит к тому, что модели машинного обучения, успешно проходящие эти тесты, могут оказаться неэффективными при работе с реальными проектами, что подчеркивает необходимость разработки более реалистичных и комплексных критериев оценки.
Оценка больших языковых моделей (БЯМ) посредством синтетических задач зачастую не позволяет выявить все тонкости реальной эволюции и поддержки кодовой базы. Такие задачи, как правило, упрощены и не отражают сложность реальных проектов, где изменения часто вносятся в существующий код, требуя понимания контекста, взаимодействия с другими частями системы и учета возможных побочных эффектов. В отличие от тщательно сконструированных тестов, реальные изменения в коде часто характеризуются неполнотой информации, противоречивыми требованиями и необходимостью компромиссов. Таким образом, успешное прохождение синтетических тестов не гарантирует, что БЯМ сможет эффективно справляться с задачами, возникающими в процессе разработки и поддержки программного обеспечения, что ограничивает их практическую ценность для разработчиков.
Существующее несоответствие между упрощенными задачами, используемыми для оценки больших языковых моделей (LLM), и сложностью реальных проектов разработки программного обеспечения серьезно замедляет прогресс в создании действительно полезных инструментов для программистов. Вместо того чтобы эффективно помогать в решении сложных задач, таких как рефакторинг, отладка или интеграция изменений в существующую кодовую базу, LLM, обученные на синтетических данных, часто демонстрируют ограниченные возможности в условиях, приближенных к реальной рабочей среде. Данная проблема подчеркивает необходимость разработки более реалистичных бенчмарков и методов обучения, которые учитывают все тонкости эволюции и поддержки кода, чтобы LLM могли стать надежными помощниками разработчиков, способными существенно повысить их производительность и качество программного обеспечения.
SWE-Bench++: Автоматизированная Генерация Эталонов
SWE-Bench++ — это автоматизированный фреймворк, предназначенный для генерации бенчмарков в области разработки программного обеспечения на основе pull request’ов с GitHub. В отличие от традиционных, синтетических тестов, SWE-Bench++ использует реальные изменения кода, представленные в открытых репозиториях, что позволяет получить более реалистичную оценку возможностей больших языковых моделей (LLM) в решении практических задач разработки. Фреймворк автоматизирует процесс извлечения задач, создания окружения для их выполнения и оценки результатов, обеспечивая масштабируемость и воспроизводимость бенчмарков.
Для обеспечения воспроизводимости задач в бенчмарках SWE-Bench++ используется метод синтеза ограниченных сред выполнения (Constrained Environment Synthesis) с применением Docker-контейнеров. Этот подход позволяет создать изолированную среду для каждой задачи, включающую все необходимые зависимости и конфигурации, идентичные тем, которые использовались в исходном pull request на GitHub. Каждый Docker-контейнер содержит специфичное окружение, необходимое для корректного выполнения и оценки кода, что исключает влияние внешних факторов и гарантирует консистентность результатов между различными LLM и запусками. Использование Docker обеспечивает переносимость и масштабируемость бенчмарков, позволяя запускать их на различных платформах и в различных вычислительных средах без изменений в коде или конфигурации.
Ключевым элементом SWE-Bench++ является адаптивный синтез парсеров (Adaptive Parser Synthesis), предназначенный для надежного извлечения тестовых оракулов из разнородных логов. В отличие от традиционных методов, полагающихся на заранее определенные форматы логов, данный подход динамически адаптируется к структуре логов, генерируемых каждым конкретным заданием. Это достигается путем автоматического изучения логов и построения парсера, способного точно выделять релевантную информацию, необходимую для оценки правильности решения. Использование адаптивных парсеров существенно повышает надежность оценки, поскольку позволяет корректно обрабатывать логи в различных форматах и с различной структурой, обеспечивая точное определение успешности выполнения задачи и, следовательно, более объективную оценку производительности языковых моделей.
Понимание Типов Задач и Повышение Качества Эталонов
SWE-Bench++ использует классификацию задач на основе дифференциального анализа состояния кода (State-Differential Task Classification) для категоризации pull request’ов как исправлений ошибок (Bug Fixes) или запросов на добавление функциональности (Feature Requests). Этот подход позволяет получить более детальное представление об эффективности языковых моделей (LLM) при решении различных задач, связанных с эволюцией кода. Классификация основана на анализе изменений в кодовой базе между коммитами, что позволяет точно определить, направлен ли pull request на исправление существующей проблемы или на внедрение новой функциональности. Полученные данные позволяют проводить целенаправленную тренировку и оценку LLM в конкретных сценариях изменения кода, что повышает надежность и точность оценки их производительности.
Классификация задач на исправления ошибок и добавление новых функций позволяет проводить более детальный анализ производительности больших языковых моделей (LLM) в различных сценариях эволюции кода. Такая гранулярность позволяет целенаправленно обучать и оценивать LLM на конкретных типах изменений в кодовой базе, например, на исправлении ошибок или на реализации новых возможностей. Это, в свою очередь, обеспечивает более точную оценку сильных и слабых сторон моделей и позволяет оптимизировать их для решения специфических задач в области разработки программного обеспечения. Нацеленная тренировка и оценка повышают эффективность LLM в контексте конкретных сценариев изменения кода, что недоступно при использовании обобщенных бенчмарков.
SWE-Bench++ генерирует 11 133 экземпляра задач на уровне репозитория, используя существующие бенчмарки SWE-bench и SWE-Smith, а также основываясь на фреймворке SWE-Gym. Эти экземпляры получены из 3 971 репозитория, что обеспечивает широкий охват сценариев разработки программного обеспечения. Данный подход позволяет проводить более масштабные и репрезентативные оценки производительности моделей машинного обучения в задачах, связанных с разработкой и эволюцией программного обеспечения, по сравнению с использованием ограниченных наборов данных.
Снижение Загрязнения Данных и Обеспечение Надежной Оценки
Для снижения риска “загрязнения” данных, когда информация из тестового набора случайно попадает в обучающую выборку и искажает результаты оценки, SWE-Bench++ использует уникальный подход. Вместо создания бенчмарков из уже существующего кода, платформа генерирует их на основе запросов на внесение изменений (pull requests) до того, как эти изменения будут включены в основную кодовую базу. Такой метод гарантирует, что бенчмарки представляют собой действительно новые и неиспользованные задачи, что позволяет более точно оценить способность модели решать незнакомые проблемы и избежать ложноположительных результатов, связанных с утечкой данных. Это позволяет получить более надежную и объективную оценку производительности системы.
Для расширения охвата и повышения качества бенчмарков в SWE-Bench++ используется метод синтеза траекторий с подсказками. Этот подход позволяет преобразовывать случаи, приводящие к ошибкам в работе модели, в исполняемые траектории обучения. Вместо простого отбрасывания проблемных примеров, система анализирует их и генерирует последовательность действий, необходимых для успешного обучения модели на этих данных. Таким образом, даже сложные и потенциально ломающие примеры становятся ценным ресурсом для тестирования и улучшения устойчивости программного обеспечения, что значительно расширяет возможности оценки качества кода.
Исследования показали, что SWE-Bench++ значительно превосходит базовые подходы в генерации бенчмарков для Python-проектов. В частности, удалось достичь на 137% более высокой «выходной» производительности — то есть, создать большее количество релевантных тестовых примеров. Помимо этого, покрытие бенчмарками, имитирующими реальные функциональные возможности программного обеспечения, увеличилось на 9% по сравнению с предыдущей версией SWE-bench. Данные результаты демонстрируют эффективность предложенного подхода в создании качественных и репрезентативных бенчмарков, способных всесторонне оценить надежность и устойчивость программного обеспечения к различным изменениям и уязвимостям.
Представленный SWE-Bench++ демонстрирует стремление к созданию надежных и масштабируемых средств оценки в области разработки программного обеспечения. Фреймворк, автоматизируя генерацию бенчмарков из открытых репозиториев, позволяет преодолеть ограничения существующих подходов, особенно в части масштаба и риска загрязнения данных. Этот подход согласуется с идеей о том, что любая система, даже самая тщательно спроектированная, подвержена влиянию времени и требует постоянной адаптации. Как некогда заметил Анри Пуанкаре: «Математика — это искусство давать точные имена вещам». Аналогично, SWE-Bench++ стремится к точности в оценке производительности моделей, предоставляя четкие и измеримые критерии, необходимые для развития области разработки программного обеспечения.
Что дальше?
Представленная работа, как и любая попытка зафиксировать качество программных систем, лишь временно откладывает неизбежное. SWE-Bench++, стремясь к масштабируемости и разнообразию тестов, не устраняет фундаментальную проблему: любая метрика — это лишь проекция сложности на упрощенную плоскость. Опасность “загрязнения данных” — не ошибка реализации, а признание того, что история каждого проекта встроена в его настоящее, и полное отделение обучающих и тестовых выборок — иллюзия. Система неизбежно несет следы своих предыдущих состояний.
Будущие исследования, вероятно, сосредоточатся не на создании “чистых” наборов данных, а на разработке методов, учитывающих и даже использующих эту историю. Оценка, основанная на “дифференциальных оракулах”, — шаг в правильном направлении, но она требует более глубокого понимания того, как изменения в коде влияют на его устойчивость к ошибкам и адаптацию к новым требованиям. Особенно важно — расширение мультиязычной оценки, ведь разнообразие языков программирования — это не просто техническая деталь, а отражение различных подходов к решению проблем.
В конечном счете, задача не в том, чтобы создать идеальный бенчмарк, а в том, чтобы признать, что любые системы стареют, и что процесс их старения — это не деградация, а путь к зрелости. Время — не метрика, а среда, в которой системы учатся на своих ошибках, и в которой инциденты становятся шагами к более устойчивому будущему.
Оригинал статьи: https://arxiv.org/pdf/2512.17419.pdf
Связаться с автором: https://www.linkedin.com/in/avetisyan/
Смотрите также:
- Нейронные Операторы в Энергетике: Новый Подход к Моделированию
- Адаптивная Квантизация: Новый Подход к Сжатию Больших Языковых Моделей
- Синергия лекарств: поиск комбинаций с помощью квантовых вычислений
- Ранговая оптимизация без градиента: Новые границы эффективности
- Квантовые ядра: Гарантированная оценка точности
- Искусство отбора данных: Новый подход к обучению генеративных моделей
- Спектральная оптимизация: новый подход к созданию квантовых состояний
- Геометрия Хаоса: Распознавание Образов в Сложных Системах
- Укрощение квантовой неопределенности: новый подход к моделированию
- Квантовые Загадки: Размышления о Современной Физике
2025-12-22 15:54