Введение
По мере развития больших языковых моделей (LLM) в области разработки программного обеспечения — от генерации кода до исправления ошибок — оптимизация производительности остаётся сложной задачей, особенно на уровне репозитория. Чтобы восполнить этот пробел, исследователи из TikTok и сотрудничающих институтов представили SWE-Perf — первый бенчмарк, специально разработанный для оценки способности LLM оптимизировать производительность кода в реальных репозиториях.
В отличие от предыдущих бенчмарков, ориентированных на корректность или эффективность на уровне функций (например, SWE-Bench, Mercury, EFFIBench), SWE-Perf учитывает сложность и контекстуальную глубину настройки производительности на уровне репозитория. Он обеспечивает воспроизводимую количественную основу для изучения и улучшения возможностей оптимизации производительности современных LLM.
Почему нужен SWE-Perf
Реальные кодовые базы часто бывают большими, модульными и сложно взаимозависимыми. Их оптимизация требует понимания взаимодействия между файлами, путей выполнения и вычислительных узких мест — задач, выходящих за рамки изолированных наборов данных на уровне функций.
Сегодня LLM в основном оцениваются по таким задачам, как исправление синтаксиса или небольшие преобразования функций. Но в производственных средах настройка производительности в репозиториях может дать более существенные общесистемные преимущества. SWE-Perf специально создан для измерения возможностей LLM в таких условиях.
Создание набора данных
SWE-Perf создан на основе более чем 100 000 запросов на извлечение из популярных репозиториев GitHub. В окончательный набор данных вошли 9 репозиториев, включая:
* 140 тщательно отобранных экземпляров, демонстрирующих измеримое и стабильное улучшение производительности.
* Полные кодовые базы до и после оптимизации.
* Целевые функции, классифицированные как oracle (на уровне файлов) или реалистичные (на уровне репозитория).
* Модульные тесты и среды Docker для воспроизводимого выполнения и измерения производительности.
* Патчи, написанные экспертами, используемые в качестве золотых стандартов.
Чтобы обеспечить достоверность, каждый модульный тест должен:
* проходить до и после применения патча;
* демонстрировать статистически значимое увеличение производительности за 20 повторений (критерий Манна-Уитни, p < 0,1).
Производительность измеряется с помощью минимального прироста производительности (δ), изолируя статистические улучшения, связанные с патчем, и фильтруя шум.
Настройки бенчмарка: Oracle vs. Realistic
* Настройка Oracle: модель получает только целевые функции и соответствующие файлы. Эта настройка проверяет навыки локальной оптимизации.
* Реалистичная настройка: модели предоставляется весь репозиторий, и она должна самостоятельно выявлять и оптимизировать пути с критичной производительностью. Это более близко к тому, как работают инженеры-люди.
Метрики оценки
SWE-Perf определяет трёхуровневую систему оценки, сообщая о каждой метрике независимо:
* Применение: можно ли применить патч, сгенерированный моделью, без ошибок?
* Корректность: сохраняет ли патч функциональную целостность (все модульные тесты пройдены)?
* Производительность: даёт ли патч измеримое улучшение времени выполнения?
Метрики не агрегируются в единый балл, что позволяет более детально оценить компромисс между синтаксической корректностью и приростом производительности.
Экспериментальные результаты
Бенчмарк оценивает несколько топовых LLM в условиях Oracle и Realistic:
| Модель | Настройка | Производительность (%) |
| — | — | — |
| Claude-4-opus | Oracle | 1,28 |
| GPT-4o | Oracle | 0,60 |
| Gemini-2.5-Pro | Oracle | 1,48 |
| Claude-3.7 (Agentless) | Realistic | 0,41 |
| Claude-3.7 (OpenHands) | Realistic | 2,26 |
| Эксперт (человеческий патч) | — | –10,85 |
Примечательно, что даже лучшие конфигурации LLM значительно уступают уровню человека. Агентский метод OpenHands, построенный на Claude-3.7-sonnet, превосходит другие конфигурации в реалистичных условиях, но всё ещё отстаёт от оптимизаций, созданных экспертами.
Ключевые наблюдения
* Агентские фреймворки, такие как OpenHands, лучше подходят для комплексной многоэтапной оптимизации, превосходя прямые подсказки моделей и подходы на основе конвейеров, такие как Agentless.
* Производительность снижается по мере увеличения количества целевых функций — LLM с трудом справляются с более широкой оптимизацией.
* LLM демонстрируют ограниченную масштабируемость в сценариях с длительным временем выполнения, где экспертные системы продолжают демонстрировать прирост производительности.
* Анализ патчей показывает, что LLM больше внимания уделяют низкоуровневым структурам кода (например, импорту, настройке окружения), в то время как эксперты нацелены на высокоуровневые семантические абстракции для настройки производительности.
Заключение
SWE-Perf представляет собой важный шаг на пути к измерению и улучшению возможностей оптимизации производительности LLM в реальных рабочих процессах разработки программного обеспечения. Он выявляет значительный разрыв в возможностях между существующими моделями и человеческими экспертами, предлагая прочную основу для будущих исследований в области настройки производительности на уровне репозитория. По мере развития LLM SWE-Perf может служить ориентиром, направляя их к практическому, готовому к производству повышению производительности программного обеспечения в масштабе.
1. Какие проблемы решает SWE-Perf и чем он отличается от других бенчмарков?
SWE-Perf решает проблему оптимизации производительности кода на уровне репозитория. В отличие от предыдущих бенчмарков, ориентированных на корректность или эффективность на уровне функций, SWE-Perf учитывает сложность и контекстуальную глубину настройки производительности на уровне репозитория.
2. На основе каких данных создан SWE-Perf?
SWE-Perf создан на основе более чем 100 000 запросов на извлечение из популярных репозиториев GitHub. В окончательный набор данных вошли 9 репозиториев, включая тщательно отобранные экземпляры, демонстрирующие измеримое и стабильное улучшение производительности.
3. Какие метрики используются для оценки производительности в SWE-Perf?
В SWE-Perf используются следующие метрики оценки:
* Применение: можно ли применить патч, сгенерированный моделью, без ошибок?
* Корректность: сохраняет ли патч функциональную целостность (все модульные тесты пройдены)?
* Производительность: даёт ли патч измеримое улучшение времени выполнения?
4. Какие ключевые наблюдения были сделаны при использовании SWE-Perf для оценки LLM?
При использовании SWE-Perf для оценки LLM были сделаны следующие ключевые наблюдения:
* Агентские фреймворки, такие как OpenHands, лучше подходят для комплексной многоэтапной оптимизации, превосходя прямые подсказки моделей и подходы на основе конвейеров.
* Производительность снижается по мере увеличения количества целевых функций — LLM с трудом справляются с более широкой оптимизацией.
* LLM демонстрируют ограниченную масштабируемость в сценариях с длительным временем выполнения, где экспертные системы продолжают демонстрировать прирост производительности.
5. Какие выводы можно сделать на основе результатов эксперимента с SWE-Perf?
На основе результатов эксперимента с SWE-Perf можно сделать вывод, что SWE-Perf представляет собой важный шаг на пути к измерению и улучшению возможностей оптимизации производительности LLM в реальных рабочих процессах разработки программного обеспечения. Он выявляет значительный разрыв в возможностях между существующими моделями и человеческими экспертами, предлагая прочную основу для будущих исследований в области настройки производительности на уровне репозитория.