StepCoder: Улучшение генерации кода с использованием обучения с подкреплением на основе обратной связи от компилятора
StepCoder: Improve Code Generation with Reinforcement Learning from Compiler Feedback
February 2, 2024
Авторы: Shihan Dou, Yan Liu, Haoxiang Jia, Limao Xiong, Enyu Zhou, Junjie Shan, Caishuang Huang, Wei Shen, Xiaoran Fan, Zhiheng Xi, Yuhao Zhou, Tao Ji, Rui Zheng, Qi Zhang, Xuanjing Huang, Tao Gui
cs.AI
Аннотация
Развитие крупных языковых моделей (LLM) значительно продвинуло область генерации кода. Предыдущие работы интегрировали обучение с подкреплением (RL) с обратной связью от компилятора для исследования пространства выходных данных LLM с целью повышения качества генерации кода. Однако длинный код, генерируемый LLM в ответ на сложные требования человека, делает исследование с помощью RL сложной задачей. Кроме того, поскольку модульные тесты могут не охватывать сложный код, оптимизация LLM с использованием этих невыполненных фрагментов кода неэффективна. Для решения этих проблем мы представляем StepCoder, новый RL-фреймворк для генерации кода, состоящий из двух основных компонентов: CCCS решает задачу исследования, разбивая задачу генерации длинных последовательностей кода на учебный план подзадач завершения кода (Curriculum of Code Completion Subtasks), а FGO оптимизирует модель, маскируя невыполненные сегменты кода для обеспечения тонкой оптимизации (Fine-Grained Optimization). Кроме того, мы создаем набор данных APPS+ для обучения RL, который вручную проверяется для обеспечения корректности модульных тестов. Результаты экспериментов показывают, что наш метод улучшает способность исследовать пространство выходных данных и превосходит современные подходы на соответствующих бенчмарках.
English
The advancement of large language models (LLMs) has significantly propelled
the field of code generation. Previous work integrated reinforcement learning
(RL) with compiler feedback for exploring the output space of LLMs to enhance
code generation quality. However, the lengthy code generated by LLMs in
response to complex human requirements makes RL exploration a challenge. Also,
since the unit tests may not cover the complicated code, optimizing LLMs by
using these unexecuted code snippets is ineffective. To tackle these
challenges, we introduce StepCoder, a novel RL framework for code generation,
consisting of two main components: CCCS addresses the exploration challenge by
breaking the long sequences code generation task into a Curriculum of Code
Completion Subtasks, while FGO only optimizes the model by masking the
unexecuted code segments to provide Fine-Grained Optimization. In addition, we
furthermore construct the APPS+ dataset for RL training, which is manually
verified to ensure the correctness of unit tests. Experimental results show
that our method improves the ability to explore the output space and
outperforms state-of-the-art approaches in corresponding benchmarks.Summary
AI-Generated Summary