本文是LLM系列文章,针对《EpiCoder: Encompassing Diversity and Complexity in Code Generation》的翻译。
摘要
有效的指令调优对于优化代码LLM、使模型行为与用户期望保持一致以及提高现实世界应用程序中的模型性能是必不可少的。然而,大多数现有方法都集中在代码片段上,这些代码片段仅限于特定的功能和刚性结构,限制了合成数据的复杂性和多样性。为了解决这些局限性,我们引入了一种受抽象语法树(AST)启发的基于特征树的合成框架。与捕获代码句法结构的AST不同,我们的框架对代码元素之间的语义关系进行建模,从而生成更细微和多样化的数据。特征树由原始数据构建,并迭代细化,以增加提取特征的数量和多样性。这个过程可以识别代码中更复杂的模式和关系。通过对深度和广度可控的子树进行采样,我们的框架允许对生成代码的复杂性进行精确调整,支持从简单的函数级操作到复杂的多文件场景的各种任务。我们对广泛使用的基础模型进行了微调,以创建EpiCoder系列,在多个基准测试中在功能和文件级别实现了最先进的性能。值得注意的是,实证证据表明,我们的方法在合成高度复杂的存储库级代码数据方面显示出巨大的潜力。进一步的分析通过软件工程原理和LLM作为判断方法严格评估数据复杂性和多样性,阐明了这种方法的优点。
1 引言
大型语言模型(LLMs)在代码理解和生成领域显示出巨大的潜力,特别是通过大规模代码数据的预训练。然而,如果不对高质量的指令数据进行微调,这些模型中的潜在代码知识往往未得到充分利用。指令调优已成为解锁代码LLM全部功能的关键步骤,使其能够更精确地与用户意图保持一致,并提高模型在现实场景中的可用性。
尽管最近取得了进展,但大多数现有的合成高质量指令数据的方法仍然依赖于代码片段作为种子数据。虽然代码片段展示了特定的功能,但它们未能捕捉到真实世界编程场景中常见的全部编程

订阅专栏 解锁全文
1145

被折叠的 条评论
为什么被折叠?



