[论文解读] Non-autoregressive Model for Full-line Code Completion
本文提出 SANAR,一种用于完整行代码补全的语法感知非自回归模型,支持并行标记生成,推理速度相比自回归模型最高提升 9 倍,同时在 Python 和 Java 数据集上的性能优于自回归与非自回归基线模型。该模型在训练过程中采用自适应、语法引导的采样策略,提升性能,且无需依赖自左向右的自回归生成机制。
Code completion tools are frequently used by software developers to accelerate software development by suggesting the following code elements. Completing a sequence of code tokens (e.g., a full line of code) has been proved more efficient than predicting a single token at a time. To complete the code sequence, researchers are employing AutoRegressive (AR) decoders to generate tokens in a left-to-right, token-by-token fashion. Consequently, the prediction of the next token depends on all previously generated tokens, which leads to high latency in inference. To improve the efficiency and accuracy of full-line code completion, in this paper, we propose a Non-AutoRegressive (NAR) model for code completion boosted by a syntax-aware sampling strategy. Our experimental results on two widely used datasets suggest that our model outperforms both AR and NAR baselines on full-line code completion, and it is faster than the AR model with up to 9 times speed-up.
研究动机与目标
- 通过支持并行标记生成,解决自回归模型在完整行代码补全中推理延迟过高的问题。
- 探究代码标记依赖是否足够微弱,足以支持非自回归生成,与自然语言生成形成对比。
- 设计一种训练策略,通过基于语法类型和难度动态采样标记,提升非自回归代码补全性能。
- 证明非自回归模型可有效应用于代码补全任务,在保持高准确率的同时实现更高推理速度。
提出的方法
- 提出一种基于 Transformer 的非自回归模型(SANAR),并行生成所有目标标记,避免自回归依赖。
- 引入一种语法感知的采样策略,在训练过程中根据标记类型和预测置信度,动态选择用于掩码和重生成的标记。
- 采用可微分的自适应采样机制,降低对自左向右自回归归纳偏置的依赖,提升训练稳定性和性能。
- 采用单次前向传播的推理流程,整个代码行在一次前向传播中完成生成,显著降低延迟。
- 在训练中应用条件独立性因子分解:$\mathcal{L}_{NAR} = \sum_{t=1}^{T} \log p(y_t|X;\theta)$,支持并行解码。
- 借鉴神经机器翻译中的迭代优化技术(如 CMLM),在训练中迭代改进低置信度标记的预测。
实验结果
研究问题
- RQ1代码标记之间的依赖是否足够微弱,足以支持非自回归生成,与自然语言生成形成对比?
- RQ2非自回归模型是否能在完整行代码补全任务中实现与自回归模型相当或更优的性能?
- RQ3在训练过程中采用语法感知的自适应采样策略,是否能提升非自回归代码补全模型的性能?
- RQ4非自回归代码补全中的标记重复率与神经机器翻译相比如何,是否影响模型质量?
- RQ5非自回归模型是否能在不牺牲准确率的前提下,实现显著的推理速度提升?
主要发现
- SANAR 在 Python 和 Java 的完整行代码补全任务中,性能优于自回归与非自回归基线模型,表现出更优的准确率。
- 该模型相比自回归模型,推理速度最高提升 9 倍,平均提速 5–6 倍,尤其在长代码行上优势显著。
- 语法感知采样策略在性能上优于随机掩码(GLAT),且在提高采样比例时性能下降更小,表明标记选择更有效。
- SANAR 中的标记重复率与自回归模型相比无显著差异,表明代码中的标记依赖关系弱于神经机器翻译。
- 实证分析证实,代码标记依赖关系弱于自然语言,支持非自回归代码生成的可行性。
- 模型在从右向左或从左向右生成时性能相当,表明左到右顺序对代码补全并非必要。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。