Friday, August 29, 2025

Данные для обучения помощников программистов

Узким местом в тонкой настройке больших языковых моделей для программной инженерии является создание набора данных, который может показать им, как редактировать код, искать подпрограммы, писать тестовые скрипты, управлять терминалом, управлять файловой системой и так далее. Исследователи создали конвейер, который автоматически генерирует такие данные.

Новости: Джон Янг и его коллеги из Стэнфорда, Принстона и Alibaba представили SWE-smith — метод, который генерирует реалистичные примеры исправления ошибок и других изменений кода. Код, набор данных и модель, настроенная на данных, доступны бесплатно для коммерческого и некоммерческого использования.

Ключевой момент: автоматизированные модульные тесты определяют, выполняет ли код то, что ему положено. Код, не прошедший модульный тест, содержит ошибку, поэтому один из способов создания примеров исправления ошибок — начать с кода, прошедшего модульный тест, и изменять его до тех пор, пока он не перестанет работать. Другой способ — начать с работающего кода и вернуться к предыдущим версиям, содержащим ошибки или не содержащим желаемых функций. Внося ошибки, мы можем побудить LLM устранить их, создав корректные примеры «до и после», не требующие ручной проверки.

Как это работает:

Авторы начали со 128 репозиториев GitHub с кодом Python.

Для каждого репозитория авторы автоматически создали среду выполнения Docker с помощью SWE-agent, агента разработки программного обеспечения с открытым исходным кодом, созданного ими ранее.

Они синтезировали ошибки четырьмя методами: (i) OpenAI o3-mini вносил ошибки в функции или классы, (ii) пользовательская программа процедурно изменяла код, например, удаляя циклы или меняя порядок строк, (iii) авторы объединяли эти ошибки для создания более сложных проблем и (iv) они откатывали запросы на включение изменений, чтобы повторно внести ошибки и удалить функции из более ранних версий кода.

Они проверяли ошибки, запуская модульные тесты, и сохраняли примеры, в которых ошибочный код не проходил один или несколько тестов. Для создания примеров многошагового исправления ошибок они предложили SWE-agent, использующему Claude 3.5 Sonnet, Claude 3.7 Sonnet или GPT-4o, исправить ошибки в несколько этапов.

Результаты: Авторы провели тонкую настройку Qwen 2.5 Coder-32B на 5000 примерах, сосредоточившись на ошибках, выявленных методами (i) и (iv), которые они сочли наиболее эффективными. Для представления разнообразия ошибок они сохранили не более 3 примеров исправлений для каждой ошибки. В сочетании с SWE-agent их модель решила задачи программной инженерии в SWE-bench Verified за одну попытку в 40,2% случаев. В сочетании с агентской платформой OpenHands тот же размер R2E-Gym-32B (тонко настроенный на разных данных) и гораздо более крупный Qwen3-235B-A22B (нетонко настроенный) решили 34,4% случаев за одну попытку.

Почему это важно: Предыдущие наборы данных для тонкой настройки LLM по задачам программирования были небольшими и часто включали тысячи обучающих данных из менее чем дюжины репозиториев. Метод авторов позволяет получать такие данные в больших масштабах, что потенциально позволяет крупным разработчикам совершенствовать свои модели программирования с использованием ИИ, а всем остальным — создавать более эффективные системы.

Мы думаем: ИИ-программирование производит революцию в разработке программного обеспечения, и соответствующие инструменты продолжают развиваться. Возможность создавать эффективные обучающие данные в больших масштабах, вероятно, ещё больше ускорит прогресс в этой области, который уже движется с головокружительной скоростью!

/via deeplearning.ai

No comments: