基于上下文与课程学习提高 FIM 代码补全
信息检索
2024-12-24 v1
摘要
填中法 (Fill-in-the-Middle, FIM) 模型在代码补全任务中发挥着关键作用,利用前缀和后缀上下文来提供更准确和更具上下文相关性的建议。本文提出了方法来提高 FIM 代码补全,同时解决保持低延迟以实现实时编码辅助的挑战。我们通过在训练过程中融合上下文和课程示例来增强 FIM 代码补全。我们识别出完成建议失败更频繁的模式,揭示了较小语言模型难以处理的复杂性。为应对这些挑战,我们从代码存储库中提取难以完成的模式,构建课程数据集,并使用语义和静态分析工具(如 TSC 编译器)生成上下文示例。我们在增强数据集上对各种大小的模型进行微调,包括 StarCoder 和 DeepSeek。我们的评估涵盖三个关键维度:Santa Coder FIM 任务、Amazon CCEval 基准,以及从 SWE-bench 派生的新的多行填充评估基准。广泛的消融研究在多个模型规模上表明,尽管所有微调后的模型都显示出改进,但性能提升对较小参数模型的提升更为显著,纳入难以完成的示例作为课程学习可以提高代码补全性能。这一发现在保持低延迟的编码补全任务中尤为重要。虽然大型模型如 GPT 和 Claude 在多行补全中表现良好,但由于延迟高而难以实际使用,而我们微调后的模型在性能和延迟之间取得了平衡。最后,我们通过在线 A/B 测试验证了我们的方案,显示在完成接受率 (Completion Acceptance Rate, CAR) 和完成持久率 (Completion Persistence Rate, CPR) 方面实现了实际的改进,延迟影响为零。
引用
@article{arxiv.2412.16589,
title = {Improving FIM Code Completions via Context & Curriculum Based Learning},
author = {Hitesh Sagtani and Rishabh Mehrotra and Beyang Liu},
journal= {arXiv preprint arXiv:2412.16589},
year = {2024}
}