ChatPaper.aiChatPaper

RepoFusion: Entrenamiento de Modelos de Código para Comprender tu Repositorio

RepoFusion: Training Code Models to Understand Your Repository

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

Resumen

A pesar del gran éxito de los Modelos de Lenguaje de Gran Escala (LLMs) en asistentes de codificación como GitHub Copilot, estos modelos tienen dificultades para comprender el contexto presente en el repositorio (por ejemplo, importaciones, clases padre, archivos con nombres similares, etc.), lo que resulta en completaciones de código inexactas. Este efecto es más pronunciado cuando se utilizan estos asistentes para repositorios que el modelo no ha visto durante el entrenamiento, como software propietario o proyectos de código en desarrollo. Trabajos recientes han mostrado el potencial de utilizar el contexto del repositorio durante la inferencia. En este trabajo, extendemos esta idea y proponemos RepoFusion, un marco para entrenar modelos que incorporen el contexto relevante del repositorio. Los experimentos en la completación de código de una sola línea muestran que nuestros modelos entrenados con contexto del repositorio superan significativamente a modelos de código mucho más grandes como CodeGen-16B-multi (aproximadamente 73 veces más grande) y se acercan al rendimiento del modelo StarCoderBase, que es aproximadamente 70 veces más grande y fue entrenado con el objetivo de Rellenar-en-el-Medio. Consideramos que estos resultados son una demostración novedosa y convincente de las mejoras que puede aportar el entrenamiento con contexto del repositorio. Realizamos extensos estudios de ablación para investigar el impacto de decisiones de diseño como el tipo de contexto, el número de contextos, la longitud del contexto y la inicialización dentro de nuestro marco. Por último, publicamos Stack-Repo, un conjunto de datos de 200 repositorios de Java con licencias permisivas y archivos casi deduplicados que están aumentados con tres tipos de contextos de repositorio. Además, estamos poniendo a disposición el código y los puntos de control entrenados de nuestro trabajo. Nuestros recursos publicados se pueden encontrar en 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