论文

用于代码生成的上下文代码预训练

Contextualized Code Pretraining for Code Generation

模型训练预训练

摘要

随着代码生成对于提高软件开发效率变得越来越重要,现代代码模型主要是在具有自然语言描述的代码上进行训练和评估的。在实际项目中,开发人员经常在有限的特定于项目的工件下实现缺失的功能,而本地调用站点上下文已经在周围的代码中可用。此使用上下文提供了有关预期行为的可操作线索,但现有模型未明确优化以可靠地利用它,导致实现可能无法与存储库设置中的周围使用顺利集成。在这项工作中,我们提出了上下文化代码预训练,这是一种调用感知框架,它将调用上下文集成到代码模型的训练和评估中。使用静态分析,我们自动从真实存储库中提取大规模调用者-被调用者对,以构建在调用上下文上条件生成的预训练任务和基准。我们训练 CallerGen,这是第一个使用跨多种规模的调用感知目标进行预训练的代码模型,并在 CallerEval(一个具有现实场景的新基准)上对其进行评估。实验表明,CallerGen 的性能优于同等规模的模型,并且在两个基准测试中与更大的模型保持竞争力。我们的 220M 和 0.5B 模型实现了 16.58% 和 22.81@% 通过1,超过了 CallerEval 的基线。这些结果凸显了调用上下文在实际代码生成中的重要性。