Введение
С ростом популярности больших языковых моделей (LLMs) в программной инженерии задачи оптимизации производительности стали актуальными как никогда. Исследователи TikTok вместе с другими организациями представили SWE-Perf — первый бенчмарк, разработанный для оценки способности LLM оптимизировать производительность кода на уровне репозиториев. Этот шаг призван преодолеть недостатки предыдущих бенчмарков, сосредоточенных на корректности или эффективности на уровне функций.
Зачем нужен SWE-Perf
Кодовые базы в реальных проектах часто бывают большими и сложными, с множеством взаимозависимых модулей. Оптимизация производительности в таких условиях требует глубокого понимания взаимодействий между файлами, путей выполнения и узких мест в вычислениях. SWE-Perf становится важным инструментом для оценки и улучшения возможностей LLM в таких условиях.
Создание набора данных
SWE-Perf основан на более чем 100,000 запросов на внесение изменений в высокопрофильные репозитории GitHub. Финальный набор данных включает:
- 140 курируемых экземпляров, демонстрирующих стабильные улучшения производительности.
- Полные кодовые базы до и после оптимизации.
- Целевые функции, классифицированные как «оракул» (файловый уровень) или «реалистичный» (уровень репозитория).
- Юнит-тесты и Docker-среды для воспроизводимого выполнения и измерения производительности.
- Патчи, написанные экспертами, используемые в качестве эталонов.
Каждый юнит-тест должен:
- Успешно проходить до и после патча.
- Показать статистически значимое улучшение времени выполнения.
Настройки бенчмарка: Оракул против Реалистичного
В «оракульной» настройке модель получает только целевые функции и соответствующие файлы, что позволяет проверить локализованные навыки оптимизации. В «реалистичной» настройке модель имеет доступ ко всему репозиторию и должна самостоятельно находить и оптимизировать критически важные пути производительности.
Метрики оценки
SWE-Perf определяет трехуровневую структуру оценки, где каждая метрика оценивается независимо:
- Применимость: Может ли патч, сгенерированный моделью, быть применен без ошибок?
- Корректность: Сохраняет ли патч функциональную целостность?
- Производительность: Обеспечивает ли патч измеримые улучшения времени выполнения?
Экспериментальные результаты
Бенчмарк оценил несколько передовых LLM в обеих настройках:
- Модель: Claude-4-opus / Настройка: Оракул / Производительность: 1.28%
- Модель: GPT-4o / Настройка: Оракул / Производительность: 0.60%
- Модель: Gemini-2.5-Pro / Настройка: Оракул / Производительность: 1.48%
- Модель: Claude-3.7 (Agentless) / Настройка: Реалистичная / Производительность: 0.41%
- Модель: Claude-3.7 (OpenHands) / Настройка: Реалистичная / Производительность: 2.26%
- Модель: Эксперт (Человеческий патч) / Настройка: – / Производительность: 10.85%
Как видно, даже лучшая производительность LLM значительно уступает результатам, достигнутым людьми. Метод OpenHands, основанный на Claude-3.7-sonnet, демонстрирует лучшие результаты в реалистичной настройке, но всё равно остаётся позади оптимизаций, выполненных экспертами.
Ключевые наблюдения
Методы, основанные на агенте, такие как OpenHands, лучше подходят для сложной многопроцессной оптимизации. Однако производительность LLM ухудшается с увеличением числа целевых функций, и они демонстрируют ограниченные возможности масштабирования в сценариях с длительным временем выполнения.
Заключение
SWE-Perf представляет собой важный шаг к измерению и улучшению способностей LLM в оптимизации производительности в реальных условиях программной инженерии. Он выявляет значительный разрыв между существующими моделями и человеческими экспертами, создавая надёжную основу для будущих исследований в области оптимизации производительности на уровне репозиториев. В то время как LLM продолжают развиваться, SWE-Perf может служить компасом, направляющим их к практическому улучшению программного обеспечения.