ChatPaper.aiChatPaper

RepoFusion: Training von Code-Modellen zur Verständnisbildung Ihres Repositorys

RepoFusion: Training Code Models to Understand Your Repository

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

Zusammenfassung

Trotz des enormen Erfolgs von Large Language Models (LLMs) in Code-Assistenten wie GitHub Copilot haben diese Modelle Schwierigkeiten, den Kontext innerhalb eines Repositories (z. B. Importe, übergeordnete Klassen, Dateien mit ähnlichen Namen usw.) zu verstehen, was zu ungenauen Code-Vervollständigungen führt. Dieser Effekt ist besonders ausgeprägt, wenn diese Assistenten für Repositories verwendet werden, die das Modell während des Trainings nicht gesehen hat, wie proprietäre Software oder Code-Projekte in der Entwicklung. Jüngste Arbeiten haben das Potenzial gezeigt, den Kontext aus dem Repository während der Inferenz zu nutzen. In dieser Arbeit erweitern wir diese Idee und schlagen RepoFusion vor, ein Framework, um Modelle so zu trainieren, dass sie relevanten Repository-Kontext einbeziehen. Experimente zur Einzelzeilen-Code-Vervollständigung zeigen, dass unsere Modelle, die mit Repository-Kontext trainiert wurden, deutlich größere Code-Modelle wie CodeGen-16B-multi (etwa 73-mal größer) übertreffen und die Leistung des etwa 70-mal größeren StarCoderBase-Modells, das mit dem Fill-in-the-Middle-Ziel trainiert wurde, nahezu erreichen. Wir betrachten diese Ergebnisse als eine neuartige und überzeugende Demonstration der Vorteile, die das Training mit Repository-Kontext bringen kann. Wir führen umfangreiche Ablationsstudien durch, um die Auswirkungen von Designentscheidungen wie Kontexttyp, Anzahl der Kontexte, Kontextlänge und Initialisierung innerhalb unseres Frameworks zu untersuchen. Schließlich veröffentlichen wir Stack-Repo, einen Datensatz von 200 Java-Repositories mit freizügigen Lizenzen und nahezu deduplizierten Dateien, die mit drei Arten von Repository-Kontexten angereichert sind. Zusätzlich stellen wir den Code und die trainierten Checkpoints unserer Arbeit zur Verfügung. Unsere veröffentlichten Ressourcen sind unter https://huggingface.co/RepoFusion verfügbar.
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