StepCoder : Améliorer la génération de code grâce à l'apprentissage par renforcement à partir des retours du compilateur

StepCoder: Improve Code Generation with Reinforcement Learning from Compiler Feedback

February 2, 2024
Auteurs: 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

Résumé

L'avancée des modèles de langage de grande taille (LLMs) a considérablement propulsé le domaine de la génération de code. Les travaux précédents ont intégré l'apprentissage par renforcement (RL) avec des retours de compilateur pour explorer l'espace de sortie des LLMs afin d'améliorer la qualité de la génération de code. Cependant, le code long généré par les LLMs en réponse à des exigences humaines complexes rend l'exploration par RL difficile. De plus, comme les tests unitaires peuvent ne pas couvrir le code complexe, l'optimisation des LLMs en utilisant ces extraits de code non exécutés est inefficace. Pour relever ces défis, nous introduisons StepCoder, un nouveau cadre RL pour la génération de code, composé de deux éléments principaux : CCCS aborde le défi de l'exploration en divisant la tâche de génération de code en longues séquences en un Curriculum de Sous-tâches de Complétion de Code, tandis que FGO optimise uniquement le modèle en masquant les segments de code non exécutés pour fournir une Optimisation Fine-Grained. En outre, nous construisons également le jeu de données APPS+ pour l'entraînement RL, qui est vérifié manuellement pour garantir l'exactitude des tests unitaires. Les résultats expérimentaux montrent que notre méthode améliore la capacité à explorer l'espace de sortie et surpasse les approches de pointe dans les benchmarks correspondants.
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

PDF443December 15, 2024