ChatPaper.aiChatPaper

RepoFusion: Addestramento di Modelli di Codice per Comprendere il Tuo Repository

RepoFusion: Training Code Models to Understand Your Repository

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

Abstract

Nonostante l'enorme successo dei Large Language Models (LLM) negli assistenti di codifica come GitHub Copilot, questi modelli faticano a comprendere il contesto presente nei repository (ad esempio, importazioni, classi genitore, file con nomi simili, ecc.), producendo così completamenti di codice inaccurati. Questo effetto è più pronunciato quando si utilizzano questi assistenti per repository che il modello non ha visto durante l'addestramento, come software proprietario o progetti di codice in fase di sviluppo. Recenti lavori hanno dimostrato il potenziale di utilizzare il contesto del repository durante l'inferenza. In questo lavoro, estendiamo questa idea e proponiamo RepoFusion, un framework per addestrare modelli a incorporare il contesto rilevante del repository. Esperimenti sul completamento di codice a singola riga mostrano che i nostri modelli addestrati con il contesto del repository superano significativamente modelli di codice molto più grandi come CodeGen-16B-multi (circa 73 volte più grande) e si avvicinano alle prestazioni del modello StarCoderBase, circa 70 volte più grande, che è stato addestrato con l'obiettivo Fill-in-the-Middle. Riteniamo che questi risultati siano una dimostrazione innovativa e convincente dei vantaggi che l'addestramento con il contesto del repository può portare. Abbiamo condotto ampi studi di ablazione per investigare l'impatto delle scelte progettuali come il tipo di contesto, il numero di contesti, la lunghezza del contesto e l'inizializzazione all'interno del nostro framework. Infine, rilasciamo Stack-Repo, un dataset di 200 repository Java con licenze permissive e file quasi-deduplicati, arricchiti con tre tipi di contesti di repository. Inoltre, rendiamo disponibili il codice e i checkpoint addestrati del nostro lavoro. Le nostre risorse rilasciate possono essere trovate all'indirizzo 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.
PDF140March 21, 2026