Utilisation de tests unitaires pour améliorer un modèle de génération de code

Par Nathanaël Beau, doctorant au Laboratoire de Linguistique Formelle à l’Université de Paris-Cité.

La synthèse de programme ou la génération de code vise à générer un programme qui satisfait à la spécification d’un problème exprimé en langage naturel. Des approches récentes utilisant des modèles de langue pré-entraînés à grande échelle ont montré des résultats prometteurs notamment avec Github Copilot développé par OpenAI. Ces modèles suivent souvent une procédure de fine-tuning supervisé pour entraîner un modèle à générer du code à partir de paires de descriptions de problèmes en langage naturel et de programmes. Un tel paradigme ignore certains signaux importants mais potentiellement utiles dans la spécification du problème, tels que les tests unitaires, ce qui entraîne souvent des performances médiocres lors de la résolution de tâches de codage complexes non vues. Aujourd’hui, nous présentons l’architecture CodeRL intégrant les tests unitaires grâce au Reinforcement Learning pour fine-tuner un modèle pré-entrainé de génération de code.

Lien de connexion