arXiv:2607.12463:函数感知FIM中间训练将代码智能体SWE-Bench成绩提升最高+5.4分
Wang Yubo等8位作者利用程序依赖图分析引入函数感知FIM中间训练方法。在SWE-Bench-Lite上,Qwen2.5-Coder和Qwen3-8B模型提升3.7至5.4分,训练语料包含来自968个GitHub仓库的26亿个token。
本文由人工智能基于一手来源生成。
什么是FIM和中间训练?
**FIM(Fill-in-the-Middle,填充中间)**是一种训练技术,模型填充给定前缀和后缀之间的代码片段——不仅生成续写内容,还必须理解后续的上下文。中间训练是预训练(在大型语料库上)和微调(在特定任务上)之间的阶段:其目标是为特定领域塑造模型基础,同时不损失通用能力。Wang Yubo和七位合著者在arXiv上将这两种技术结合为专门面向代码智能体的新方法。
函数感知FIM:依赖图的作用
标准FIM随机遮蔽代码片段。本研究的创新在于函数感知方法:遮蔽区域根据程序依赖图有意识地选择,该图建模代码中函数间的依赖关系。这意味着模型学习填充那些理解函数间依赖至关重要的位置——与智能体编程的实际任务相符。训练语料涵盖来自968个GitHub仓库的26亿token,提供了真实代码库的统计代表性样本。
SWE-Bench结果:具体提升幅度
该方法在两个智能体编程标准基准上进行了验证:
- SWE-Bench-Verified:在Qwen2.5-Coder(7B和14B变体)和Qwen3-8B上提升**+2.8至+3.2分**
- SWE-Bench-Lite:提升**+3.7至+5.4分**
与特定任务微调的典型提升相比——后者在不造成通用能力退化的情况下很少超过2-3分——本方法的关键优势在于在智能体后训练阶段同样保留了非智能体代码能力。提升并非以牺牲模型整体质量为代价。
为何这对小模型尤为重要
7B和8B参数模型上的结果尤其值得关注:表明中间训练可以弥补小模型在需要理解复杂代码依赖的智能体任务上的能力不足。对于无法负担运行数百亿参数模型的组织,函数感知FIM提供了一条在保持推理成本的同时获得更强代码智能体的实际路径。
来源:arXiv
常见问题
- 什么是FIM中间训练,它与标准微调有何不同?
- FIM(Fill-in-the-Middle,填充中间)让模型填充给定前缀和后缀之间的代码片段,而非仅生成续写内容。中间训练介于预训练和微调之间,旨在为特定领域塑造模型基础,同时不损失通用能力。
- 函数感知FIM方法能将SWE-Bench成绩提升多少?
- 在SWE-Bench-Lite上提升3.7至5.4分,在SWE-Bench-Verified上提升2.8至3.2分,且不损害非智能体代码能力。
📬 AI 新闻直达您的邮箱
按您的方式定制每日摘要——自选主题、来源和频率,一键退订。