Repository Structure-Aware Training Makes SLMs Better Issue Resolver
作者: Zexiong Ma, Shengnan An, Zeqi Lin, Yanzhen Zou, Bing Xie
分类: cs.SE, cs.AI
发布日期: 2024-12-26
💡 一句话要点
提出ReSAT,通过仓库结构感知训练提升SLM在代码问题修复中的性能
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码问题修复 小型语言模型 仓库结构感知 代码定位 代码编辑
📋 核心要点
- 大型语言模型(LLM)在代码问题修复等复杂任务中表现优异,但存在隐私和成本问题,而小型语言模型(SLM)虽然更易获取,但在复杂任务中性能不足。
- ReSAT的核心思想是利用开源社区的issue和pull request数据,通过仓库结构感知训练,使SLM更好地理解代码仓库结构和问题修复逻辑。
- 实验结果表明,ReSAT能够有效提升SLM在SWE-Bench-verified和RepoQA等基准测试上的性能,增强其问题解决和长上下文理解能力。
📝 摘要(中文)
本文提出了一种名为ReSAT(Repository Structure-Aware Training)的方法,旨在提升小型语言模型(SLM)在代码仓库级别的代码问题修复能力。ReSAT通过从开源社区的大量问题和对应的pull request中构建训练数据,增强模型对仓库结构的理解和问题解决能力。具体而言,构建了两种类型的训练数据:(1)定位训练数据,一种多层次渐进式定位数据,以提高代码理解和定位能力;(2)代码编辑训练数据,用于提高基于上下文的代码编辑能力。在SWE-Bench-verified和RepoQA上的评估结果表明,ReSAT有效地增强了SLM的问题解决能力和仓库级别的长上下文理解能力。
🔬 方法详解
问题定义:论文旨在解决小型语言模型(SLM)在代码仓库级别的问题修复任务中性能不足的问题。现有方法通常依赖于大型语言模型(LLM),但LLM的隐私和成本限制了其应用。SLM虽然更易获取,但在理解长上下文和复杂代码结构方面存在挑战,导致其在问题修复任务中表现不佳。
核心思路:ReSAT的核心思路是通过仓库结构感知训练,使SLM能够更好地理解代码仓库的结构和问题修复的上下文信息。通过构建特定类型的训练数据,增强模型对代码定位和代码编辑的能力,从而提升其问题修复性能。这种方法旨在弥合SLM和LLM在问题修复能力上的差距,同时保持SLM的低成本和易用性。
技术框架:ReSAT的整体框架包括数据构建和模型训练两个主要阶段。在数据构建阶段,从开源社区收集大量的issue和对应的pull request数据,并构建两种类型的训练数据:多层次渐进式定位数据和代码编辑数据。在模型训练阶段,使用构建的训练数据对SLM进行微调,使其学习代码仓库结构和问题修复的模式。
关键创新:ReSAT的关键创新在于其仓库结构感知训练方法。与传统的语言模型训练方法不同,ReSAT专门设计了两种类型的训练数据,以增强模型对代码仓库结构和问题修复上下文的理解。多层次渐进式定位数据使模型能够逐步定位到问题代码的位置,而代码编辑数据则使模型能够根据上下文信息生成正确的修复代码。
关键设计:ReSAT的关键设计包括:(1) 多层次渐进式定位数据的构建,通过逐步缩小代码范围,引导模型学习代码定位;(2) 代码编辑数据的构建,通过提供问题描述和上下文代码,引导模型学习代码修复;(3) 具体的训练策略和损失函数,用于优化模型在定位和编辑任务上的性能。具体的参数设置和网络结构细节在论文中未明确说明,可能使用了标准的Transformer结构和常用的训练技巧。
🖼️ 关键图片
📊 实验亮点
ReSAT在SWE-Bench-verified和RepoQA两个基准测试上取得了显著的性能提升。具体的数据和提升幅度在摘要中未给出,但强调了ReSAT能够有效增强SLM的问题解决能力和仓库级别的长上下文理解能力。这些结果表明,ReSAT是一种有效的提升SLM在代码问题修复任务中性能的方法。
🎯 应用场景
ReSAT具有广泛的应用前景,可用于自动化代码修复、代码审查、智能代码助手等领域。通过提升SLM在代码问题修复方面的能力,可以降低软件开发和维护的成本,提高开发效率。此外,ReSAT还可以应用于教育领域,帮助学生更好地理解代码结构和问题修复方法。未来,ReSAT有望成为一种重要的软件开发工具,推动软件工程的自动化和智能化。
📄 摘要(原文)
Language models have been applied to various software development tasks, but the performance varies according to the scale of the models. Large Language Models (LLMs) outperform Small Language Models (SLMs) in complex tasks like repository-level issue resolving, but raise concerns about privacy and cost. In contrast, SLMs are more accessible but under-perform in complex tasks. In this paper, we introduce ReSAT (Repository Structure-Aware Training), construct training data based on a large number of issues and corresponding pull requests from open-source communities to enhance the model's understanding of repository structure and issue resolving ability. We construct two types of training data: (1) localization training data, a multi-level progressive localization data to improve code understanding and localization capability; (2) code edit training data, which improves context-based code editing capability. The evaluation results on SWE-Bench-verified and RepoQA demonstrate that ReSAT effectively enhances SLMs' issue-resolving and repository-level long-context understanding capabilities.