返回
SynthCoder: Anti-pattern identification and model training for FIM mode code completion
DOI:10.1007/s10664-026-10957-6.png)
摘要
En 中文
作为大型语言模型(LLMs)在软件工程中的领先应用,Fill-in-the-Middle(FIM)模式代码补全已引起广泛关注。训练此类模型需要屏蔽代码语料库,但常见策略往往存在问题。例如,基于字符的随机屏蔽可能产生许多不切实际的情况(如切断关键字或标识符),而纯基于AST的屏蔽无法屏蔽跨越多个子树的并发元素(子树)。这些局限性容易导致在现实代码补全场景中极少出现的反模式,从而降低FIM性能。我们引入SynthCoder,采用与开发者在FIM中的期望更一致的优化屏蔽策略。具体而言,我们首先细化AST级别的节点屏蔽,并添加更好地模拟开发者期望的启发式规则来构建训练语料库。随后,基于Seed-Coder-8B-Base和Qwen2.5-Coder-7B分别构建的SynthCoder-Seed和SynthCoder-Qwen,采用两阶段训练流水线,即课程式微调阶段,随后通过被拒绝代码采样的偏好数据进行直接偏好优化(DPO)对齐阶段。此外,为抑制错误上下文重复,我们在DPO中引入重复现有代码的负样本,缓解代码回声(code-echo)失效,即模型复制邻近上下文而非生成有效补全。在Santacoder-fim-task、aiXcoder-FIM-Evaluation和CrossCodeEval基准测试上的广泛实验表明,采用我们缓解策略训练的模型在基于文本的FIM基准测试的完全匹配(EM)和编辑相似度(ES)指标上优于主流基线,并在包含测试用例的Santacoder-fim-task基准测试的Pass@1指标上有所提升。SynthCoder还减少了代码回声,并在推理时消耗更少标记,从而实现更高的实际效率。消融研究进一步支持了我们优化屏蔽和重复抑制机制的贡献。
Keyword:
LLM
Code completion
FIM
Post-training
期刊
IF:
3.6
论文数:
2.0K
被引数:
5.3K
机构
暂无机构信息
引用论文
FlashAttention: Fast and Memory-Efficient Exact Attention with IO-AwarenessFlashAttention:一种具有IO感知的快速且内存高效的确切注意力机制
CrossCodeEval: A Diverse and Multilingual Benchmark for Cross-File Code CompletionCrossCodeEval:一个用于跨文件代码补全的多样化和多语言基准
没有更多内容

