CURE: Революция в генерации кода и юнит-тестов с помощью самообучающегося обучения с подкреплением в LLM
CURE — новый фреймворк самообучающегося обучения с подкреплением, который позволяет большим языковым моделям совместно развивать генерацию кода и юнит-тестов, значительно повышая точность и эффективность без необходимости эталонного кода.
Прогресс в больших языковых моделях для генерации кода
Большие языковые модели (LLM) достигли значительных успехов в области рассуждений и точности благодаря методам обучения с подкреплением и масштабированию во время тестирования. Традиционные методы генерации юнит-тестов, такие как O1-Coder и UTGEN, требуют наличия эталонного кода, что увеличивает затраты на сбор данных и ограничивает масштаб обучающей выборки.
Проблемы существующих подходов
Существующие методы генерации юнит-тестов основаны на жестких правилах анализа программного обеспечения или методах нейронного машинного перевода, которые часто не обеспечивают семантического согласования. Современные методы, основанные на подсказках и агентном подходе, хоть и улучшают результат, все же сильно зависят от размеченного кода для дообучения, что ограничивает масштабируемость и адаптивность в реальных условиях.
Представляем CURE: самообучающаяся коэволюционная система
Исследователи из Университета Чикаго, Принстонского университета, Пекинского университета и ByteDance Seed разработали CURE — фреймворк обучения с подкреплением, который совместно обучает генератор кода и генератор юнит-тестов без использования эталонного кода.
CURE использует механизм самоигры, при котором LLM генерирует как корректный, так и некорректный код. Генератор юнит-тестов учится выявлять ошибки и совершенствуется. Эта коэволюция повышает качество генерации и верификации кода без внешнего надзора.
Архитектура и методология
Базовые модели и стратегия выборки: CURE построен на моделях Qwen2.5-7B и 14B Instruct, а для длинных цепочек рассуждений (CoT) используется Qwen3-4B. На каждом шаге обучения отбирается 16 вариантов кода и 16 юнит-тестов, созданных на основе заданий. Выборка осуществляется с помощью vLLM с температурой 1.0 и top-p 1.0. Для моделей long-CoT применяется трансформация, учитывающая длину ответа, чтобы штрафовать длинные выводы и повышать эффективность вывода.
Функция награды и оптимизация: В CURE введена функция награды, максимизирующая точность награды — вероятность, что правильный код получает более высокий балл, чем неправильный, по сгенерированным юнит-тестам. Также применяются корректировки награды для длинных ответов с целью уменьшения задержки. Оптимизация проводится с использованием методов градиента политики, совместно обновляя генератор кода и тестов.
Оценка и результаты
CURE протестирован на пяти стандартных датасетах: LiveBench, MBPP, LiveCodeBench, CodeContests и CodeForces. Использовались метрики точности юнит-тестов, однократной генерации кода и лучшего из N (BoN) с 16 образцами кода и тестов.
Модели ReasonFlux-Coder, обученные с помощью CURE, показали впечатляющие результаты:
- +37.8% точности юнит-тестов
- +5.3% точности однократной генерации кода
- +9.0% точности BoN
Особенно ReasonFlux-Coder-4B сократил среднюю длину ответа юнит-теста на 64.8%, что значительно ускорило вывод. Во всех тестах эти модели превзошли традиционные модели с обучением на размеченном коде, например Qwen2.5-Coder-Instruct.
Коммерческое применение и экономия затрат
В сочетании с моделями серии GPT, ReasonFlux-Coder-4B улучшил показатели:
- GPT-4o-mini получил +5.5% по BoN
- GPT-4.1-mini улучшился на +1.8%
Это также снизило затраты на API, обеспечивая экономичное решение для промышленного использования.
Использование CURE как модели награды для обучения без меток
Генераторы юнит-тестов, обученные CURE, могут использоваться в качестве моделей награды в обучении с подкреплением. Применение сгенерированных тестов ReasonFlux-Coder-4B даёт улучшения, сопоставимые с обучением на размеченных данных, что позволяет строить полностью безметочные RL-пайплайны.
Широкое применение и перспективы
Модели ReasonFlux-Coder хорошо интегрируются с агентными фреймворками, такими как MPSC (Multi-Perspective Self-Consistency), AlphaCodium и S*. CURE повышает точность генерации агентных юнит-тестов более чем на 25.1%, демонстрируя универсальность и способность к итеративному улучшению.
CURE представляет собой существенный прорыв в области самообучающихся методов генерации и проверки кода, позволяя LLM одновременно развивать навыки кодирования и создания юнит-тестов без эталонных данных. Улучшения в точности, эффективности и адаптивности делают его масштабируемым и экономичным решением для обучения и внедрения в больших системах.
Switch Language
Read this article in English