<НА ГЛАВНУЮ

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

Switch to English