TikTok представил SWE-Perf: первый бенчмарк для оптимизации производительности кода на уровне репозитория
TikTok представил SWE-Perf — первый бенчмарк для оценки возможностей LLM в оптимизации производительности кода на уровне репозиториев, показывающий отставание ИИ от экспертов-человеков.
Продвижение оптимизации производительности в программной инженерии с помощью SWE-Perf
Большие языковые модели (LLM) значительно продвинулись в задачах программной инженерии, таких как генерация кода и исправление ошибок. Тем не менее, оптимизация производительности кода, особенно на уровне всего репозитория, остаётся сложной задачей. Для решения этой проблемы исследователи TikTok совместно с партнёрами представили SWE-Perf — первый бенчмарк, специально созданный для оценки способности LLM оптимизировать производительность кода в масштабах целых репозиториев.
Чем выделяется SWE-Perf
Предыдущие бенчмарки, такие как SWE-Bench, Mercury и EFFIBench, в основном фокусировались на корректности или эффективности на уровне отдельных функций. SWE-Perf выходит дальше, учитывая сложность оптимизации производительности на уровне репозитория. Он предоставляет воспроизводимую и количественную основу для изучения и улучшения возможностей современных LLM в области оптимизации производительности.
Сложности оптимизации на уровне репозитория
Реальные кодовые базы большие, модульные и глубоко взаимосвязанные. Эффективная оптимизация требует понимания зависимостей между файлами, путей выполнения и вычислительных узких мест. Эти задачи выходят за рамки наборов данных, ориентированных на изолированные функции. SWE-Perf разработан для оценки производительности LLM в таких сложных и реалистичных сценариях.
Состав датасета
SWE-Perf основан на курированном наборе данных, собранном из более чем 100 000 пулл-реквестов из девяти известных репозиториев GitHub. Ключевые особенности:
- 140 тщательно подобранных случаев с измеримыми и стабильными улучшениями производительности.
- Полные кодовые базы до и после оптимизации.
- Целевые функции разделены на oracle (на уровне файлов) и realistic (на уровне репозитория).
- Юнит-тесты и Docker-среды для воспроизводимого выполнения и измерения производительности.
- Патчи, созданные экспертами, выступают в роли эталона.
Каждый юнит-тест должен успешно проходить до и после применения патча и демонстрировать статистически значимые улучшения времени выполнения (тест Манна-Уитни, p < 0.1) на 20 повторениях. Улучшения измеряются с помощью минимального прироста производительности (δ), чтобы выделить реальные улучшения и отфильтровать шум.
Настройки бенчмарка: Oracle и Realistic
- Oracle: модели предоставляются только целевые функции и соответствующие файлы, что проверяет локальную оптимизацию.
- Realistic: модели даётся весь репозиторий, и она должна самостоятельно выявить и оптимизировать критичные с точки зрения производительности участки, имитируя работу инженера.
Метрики оценки
SWE-Perf использует трёхуровневую систему оценки:
- Apply: может ли патч, созданный моделью, быть применён без конфликтов.
- Correctness: сохраняет ли патч функциональную целостность (все юнит-тесты проходят).
- Performance: приносит ли патч измеримое улучшение времени выполнения.
Метрики выводятся отдельно, что позволяет более тонко анализировать компромиссы между корректностью и приростом производительности.
Результаты экспериментов
Бенчмарк протестировал несколько ведущих LLM в обоих режимах с такими результатами (в % улучшения):
| Модель | Режим | Производительность (%) | |-------------------------|-----------|-----------------------| | 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 |
Даже лучшие модели существенно уступают экспертам. Агентский метод OpenHands на базе Claude-3.7-sonnet показывает наилучший результат в реалистичном режиме, но всё равно отстаёт от людей.
Основные выводы
- Агентские фреймворки, такие как OpenHands, лучше справляются с комплексной оптимизацией поэтапно, превосходя прямые запросы и пайплайны.
- Производительность снижается с ростом числа целевых функций, показывая проблемы масштабируемости LLM.
- В сценариях с длительным временем выполнения LLM показывают ограниченные улучшения, тогда как эксперты продолжают повышать эффективность.
- Анализ патчей показывает, что LLM фокусируются на низкоуровневых элементах кода (импорты, настройка окружения), в то время как эксперты работают с высокоуровневыми семантическими абстракциями для оптимизации.
Влияние и перспективы
SWE-Perf является важным шагом для измерения и совершенствования возможностей LLM в оптимизации производительности на уровне репозитория. Он выявляет значительный разрыв между моделями и экспертами, задавая направление для будущих исследований практической и готовой к производству оптимизации ПО. По мере развития LLM SWE-Perf станет ключевым ориентиром для прогресса в реальном улучшении программного обеспечения.
Подробнее — в статье и на GitHub проекте.
Switch Language
Read this article in English