面向代码的结构感知中间填充预训练
计算与语言
2025-06-03 v1 人工智能
软件工程
摘要
中间填充 (Fill-in-the-Middle, FIM) 是代码 LLM 常用的预训练方法,模型根据周围上下文补全代码片段。然而,现有的 LLM 将代码视为纯文本,并掩盖随机的字符区间。我们提出并评估了 AST-FIM,这是一种利用抽象语法树 (Abstract Syntax Tree, AST) 在大规模下掩盖完整语法结构的预训练策略,确保生成连贯的训练样本,使其更好地与通用代码结构及常见的代码编辑模式(如代码块、表达式或函数)相契合。为了评估真实世界中的中间填充编程任务,我们引入了 Real-FIM-Eval,这是一个基于 12 种语言的 30,000 多次 GitHub 提交构建的基准测试。在填充任务上,对 1B 和 8B 参数模型的实验表明,AST-FIM 对真实世界的代码编辑尤为有益,它在标准 FIM 基准测试中比标准随机字符 FIM 高出多达 5 个百分点。我们的代码已在 https://github.com/gonglinyuan/ast_fim 公开。
引用
@article{arxiv.2506.00204,
title = {Structure-Aware Fill-in-the-Middle Pretraining for Code},
author = {Linyuan Gong and Alvin Cheung and Mostafa Elhoushi and Sida Wang},
journal= {arXiv preprint arXiv:2506.00204},
year = {2025}
}
备注
14 pages