ChatPaper.aiChatPaper

RepoFusion: Het trainen van codemodellen om uw repository te begrijpen

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

Samenvatting

Ondanks het enorme succes van Large Language Models (LLMs) in codeerassistenten zoals GitHub Copilot, hebben deze modellen moeite om de context in een repository te begrijpen (bijv. imports, bovenliggende klassen, bestanden met vergelijkbare namen, enz.), wat resulteert in onnauwkeurige codeaanvullingen. Dit effect is sterker merkbaar bij het gebruik van deze assistenten voor repositories die het model niet heeft gezien tijdens de training, zoals propriëtaire software of werk-in-uitvoering codeprojecten. Recent onderzoek heeft de belofte getoond van het gebruik van context uit de repository tijdens inferentie. In dit werk breiden we dit idee uit en stellen we RepoFusion voor, een raamwerk om modellen te trainen om relevante repositorycontext te integreren. Experimenten met eenregelige codeaanvullingen laten zien dat onze modellen die zijn getraind met repositorycontext aanzienlijk beter presteren dan veel grotere codemodellen zoals CodeGen-16B-multi (ongeveer 73 keer groter) en de prestaties dicht benaderen van het ongeveer 70 keer grotere StarCoderBase-model dat is getraind met het Fill-in-the-Middle-doel. We beschouwen deze resultaten als een nieuwe en overtuigende demonstratie van de voordelen die training met repositorycontext kan bieden. We voeren uitgebreide ablatiestudies uit om de impact van ontwerpkeuzes zoals contexttype, aantal contexten, contextlengte en initialisatie binnen ons raamwerk te onderzoeken. Tot slot brengen we Stack-Repo uit, een dataset van 200 Java-repositories met permissieve licenties en bijna-gededupliceerde bestanden die zijn verrijkt met drie soorten repositorycontexten. Daarnaast stellen we de code en getrainde checkpoints van ons werk beschikbaar. Onze vrijgegeven bronnen zijn te vinden op 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