Salesforce AI представляет SWERank: экономичное решение для точной локализации ошибок в ПО
Salesforce AI представила SWERank — новый фреймворк retrieve-and-rerank, обеспечивающий точную и масштабируемую локализацию проблем в ПО с заметным снижением затрат по сравнению с агентными методами.
Проблемы локализации ошибок в программном обеспечении
Определение точного места ошибки или запроса на добавление функции в коде остается одной из самых трудоемких задач в разработке. Несмотря на успехи автоматической генерации патчей и помощников по коду, поиск нужного участка кода зачастую занимает больше времени, чем само исправление. Агентные методы с использованием больших языковых моделей (LLM) имитируют работу разработчиков, но обычно работают медленно, ненадежно и дорого, особенно если основаны на проприетарных моделях. Существующие модели поиска кода быстрее, но плохо адаптированы к подробным и поведенческим описаниям ошибок, что создает разрыв между естественным языком и эффективным поиском кода.
Представляем SWERank: практичный фреймворк
Salesforce AI разработала SWERank — легковесный и эффективный фреймворк retrieve-and-rerank, специально созданный для локализации проблем в ПО. SWERank рассматривает задачу локализации как задачу ранжирования кода и состоит из двух основных компонентов:
- SWERankEmbed: би-кодировщик, который преобразует описания задач с GitHub и фрагменты кода в общее пространство векторных представлений для быстрого поиска по сходству.
- SWERankLLM: списоковый повторный ранжировщик на базе LLM, который улучшает порядок найденных кандидатов с учетом контекста.
Система обучена на SWELOC — большом датасете из публичных репозиториев GitHub, связывающем реальные задачи с изменениями в коде. SWELOC использует контрастивное обучение с фильтрацией и подбором сложных негативных примеров для повышения качества данных.
Архитектура и методология
SWERank работает в два этапа. Сначала SWERankEmbed кодирует описание ошибки и кандидатов в плотные векторы, используя контрастивную функцию потерь InfoNCE, чтобы повысить сходство с релевантным кодом и снизить с нерелевантным. Сложные негативные примеры — похожие по смыслу, но не относящиеся к задаче функции — помогают улучшить различительную способность модели.
Далее SWERankLLM перераспределяет топ-k кандидатов, обрабатывая описание и код совместно, чтобы сформировать список с релевантным кодом на вершине. Обучение адаптировано к ситуации, когда известен только положительный пример, что упрощает процесс и поддерживает совместимость с методами спискового вывода.
Такой подход обеспечивает высокую производительность без необходимости многократных итераций или затратного управления агентами.
Результаты и эффективность
Тестирование на наборах SWE-Bench-Lite и LocBench показало, что SWERank устанавливает новые стандарты точности на уровнях файлов, модулей и функций. Например, SWERankEmbed-Large (7B параметров) достиг точности @10 на уровне функций 82,12%, обойдя LocAgent с Claude-3.5. В связке с SWERankLLM-Large (32B параметров) точность выросла до 88,69%.
SWERank значительно экономит средства: в то время как агенты на Claude обходятся примерно в $0.66 за пример, вывод SWERankLLM стоит $0.011 для 7B модели и $0.015 для 32B, обеспечивая до 6 раз лучшее соотношение точности и стоимости. Модель SWERankEmbed-Small с 137 млн параметров также демонстрирует конкурентные результаты, подтверждая масштабируемость и эффективность.
Влияние и перспективы
Финетюнинг различных моделей на датасете SWELOC значительно улучшает точность, что подтверждает его ценность для обучения задач локализации. Модель SWERank, рассматривающая локализацию как задачу ранжирования, предлагает практичное и масштабируемое решение для отладки и поддержки кода.
Подход Salesforce AI доказывает, что с помощью открытых инструментов можно добиться высокой точности, эффективности и простоты внедрения в автоматизированной разработке ПО, задавая новый стандарт отрасли.
Дополнительные ресурсы
Подробности исследования и проект доступны онлайн. Подписывайтесь на исследователей в Twitter и присоединяйтесь к сообществам, таким как ML SubReddit, чтобы быть в курсе новостей в области ИИ и машинного обучения.
Switch Language
Read this article in English