ChatPaper.aiChatPaper

RepoFusion : Entraîner des modèles de code à comprendre votre dépôt

RepoFusion: Training Code Models to Understand Your Repository

June 19, 2023
Auteurs: Disha Shrivastava, Denis Kocetkov, Harm de Vries, Dzmitry Bahdanau, Torsten Scholak
cs.AI

Résumé

Malgré le succès retentissant des modèles de langage de grande taille (LLMs) dans les assistants de codage comme GitHub Copilot, ces modèles peinent à comprendre le contexte présent dans un dépôt (par exemple, les imports, les classes parentes, les fichiers avec des noms similaires, etc.), produisant ainsi des complétions de code inexactes. Cet effet est plus marqué lors de l'utilisation de ces assistants pour des dépôts que le modèle n'a pas vus pendant l'entraînement, tels que des logiciels propriétaires ou des projets de code en cours de développement. Des travaux récents ont montré le potentiel d'utiliser le contexte du dépôt pendant l'inférence. Dans ce travail, nous étendons cette idée et proposons RepoFusion, un cadre pour entraîner les modèles à intégrer le contexte pertinent du dépôt. Les expériences sur la complétion de code à une seule ligne montrent que nos modèles entraînés avec le contexte du dépôt surpassent significativement des modèles de code beaucoup plus grands comme CodeGen-16B-multi (sim73 fois plus grand) et se rapprochent des performances du modèle StarCoderBase, sim 70 fois plus grand, qui a été entraîné avec l'objectif Fill-in-the-Middle. Nous considérons ces résultats comme une démonstration novatrice et convaincante des gains que l'entraînement avec le contexte du dépôt peut apporter. Nous menons des études d'ablation approfondies pour examiner l'impact des choix de conception tels que le type de contexte, le nombre de contextes, la longueur du contexte et l'initialisation dans notre cadre. Enfin, nous publions Stack-Repo, un ensemble de données de 200 dépôts Java avec des licences permissives et des fichiers quasi-dédoublés, enrichis de trois types de contextes de dépôt. De plus, nous mettons à disposition le code et les points de contrôle entraînés pour notre travail. Nos ressources publiées peuvent être consultées à l'adresse https://huggingface.co/RepoFusion.
English
Despite the huge success of Large Language Models (LLMs) in coding assistants like GitHub Copilot, these models struggle to understand the context present in the repository (e.g., imports, parent classes, files with similar names, etc.), thereby producing inaccurate code completions. This effect is more pronounced when using these assistants for repositories that the model has not seen during training, such as proprietary software or work-in-progress code projects. Recent work has shown the promise of using context from the repository during inference. In this work, we extend this idea and propose RepoFusion, a framework to train models to incorporate relevant repository context. Experiments on single-line code completion show that our models trained with repository context significantly outperform much larger code models as CodeGen-16B-multi (sim73times larger) and closely match the performance of the sim 70times larger StarCoderBase model that was trained with the Fill-in-the-Middle objective. We find these results to be a novel and compelling demonstration of the gains that training with repository context can bring. We carry out extensive ablation studies to investigate the impact of design choices such as context type, number of contexts, context length, and initialization within our framework. Lastly, we release Stack-Repo, a dataset of 200 Java repositories with permissive licenses and near-deduplicated files that are augmented with three types of repository contexts. Additionally, we are making available the code and trained checkpoints for our work. Our released resources can be found at https://huggingface.co/RepoFusion.
PDF130December 15, 2024