大型语言模型对代码功能等价性的捕捉能力研究
本文介绍了一个包含三十种编程语言的开源代码数据集The Stack,以及如何构建、管理和使用该数据集来训练大型语言模型,通过在Python子集上训练350M参数解码器,在文本到代码的基准测试上取得了有前途的结果。
Nov, 2022
本文介绍了一种新的代码到代码搜索技术,通过包括静态和动态特征以及在训练过程中利用相似和不同的示例来提高大型语言模型的性能。我们展示了第一个能够在训练期间编码动态运行时信息的代码搜索方法,在推断时间无需执行搜索语料库或搜索查询,同时还是第一个训练正负参考样本的代码搜索技术。我们通过一系列研究验证了我们方法的有效性,并展示了增强 LLMs 执行跨语言代码到代码搜索的能力。我们的评估表明,我们的方法的效果在各种模型架构和编程语言中都是一致的。此外,我们的消融研究表明,即使在训练过程中只有一个正面和负面参考样本,也会产生相当大的性能提高,这证明了相似和不同的参考是代码搜索的重要部分。重要的是,我们展示了精心制作的、经过调整的模型在性能上始终优于未调整的更大的现代 LLMs,即使是在增强最大可用 LLMs 时也是如此,这凸显了开源模型的重要性。为了确保我们研究的可重复性和可扩展性,我们介绍了一个名为 Cosco 的开源实现和培训过程
May, 2023
本文表明大型语言模型在代码生成任务中表现出色,但在变量重命名等语言语义方面不及人类程序员,且存在反比例缩放现象。作者发现,尽管这些模型具有惊人的典型案例表现,它们仍然缺乏对所操作内容的深刻抽象理解,从而不适用于与其训练数据有明显偏差的任务,仅靠扩大规模是不够的。
May, 2023
评估了两个语言模型(CodeGPT和UniXcoder)在函数式编程语言Haskell上的性能表现,发现在函数式编程语言上代码补全是可行的,但存在空预测、额外注释和不完整/错误预测的问题,因此需要更多高质量的Haskell数据集。
Mar, 2024
大语言模型在代码摘要任务方面,特别是代码生成和摘要具有很高的性能。本文发现,这些模型在每个示例上的性能往往取决于代码和对应参考自然语言描述之间的(子词)标记重叠量。此标记重叠主要出现在代码的函数名称中,并通过移除函数名称与移除代码结构来比较这些模型的相对性能。另外,使用BLEU和BERTScore等多个评估指标对此问题的洞见非常有限,因为这些指标高度相关。
Apr, 2024
该论文提出了一种新的策略,通过连接静态代码文本和动态执行状态,训练具有全面语义的Code LLMs,从而填补Code LLMs在诸如调试和程序修复等复杂任务中对深层语义的依赖的差距。该方法通过收集PyX,一个具有可执行样本、功能描述和执行跟踪的干净代码语料库,训练Code LLMs使用自然语言编写代码、表示和推理执行行为,从而开发出了仅有67亿参数的SemCoder,该模型在代码生成和执行推理任务上与GPT-3.5-turbo表现相当。
Jun, 2024
RepoQA是一个多语言且综合性的基准测试,评估了LLMs在长上下文代码理解上的能力,并展示了开源和专有模型之间仍存在着一小段差距,不同模型在不同编程语言上具有良好的表现,而没有注释的代码可能会更好地被模型理解。
Jun, 2024
基于大型语言模型(LLMs)的自动化软件工程在最近的进展中得到了极大的增强。尽管当前的基准测试表明LLMs可以完成各种软件工程任务,如人类开发人员一样,但它们的大多数评估仅限于简短的、自包含的算法任务。解决具有挑战性和实际意义的编程任务需要利用多种函数调用作为工具,以有效地实现数据分析和Web开发等功能。此外,使用多个工具来解决一个任务需要通过准确理解复杂的指令来进行组合推理。同时实现这两个特征对于LLMs来说是一个巨大的挑战。为了评估LLMs解决具有挑战性和实际意义的编程任务的能力,我们引入了一个基准测试集Bench,其中挑战LLMs以从139个库和7个领域中选择1,140个细粒度的编程任务中调用多个函数调用作为工具。为了对LLMs进行严格评估,每个编程任务包括5.6个测试用例,平均分支覆盖率达到99%。此外,我们提出了Bench的自然语言导向变体Benchi,它将原始的文档字符串自动转换为仅具有基本信息的简短指令。我们对60个LLMs进行了广泛评估,结果显示LLMs还不能准确地遵循复杂指令来使用函数调用,得分最高仅为60%,明显低于人类的97%。这些结果强调了在这个领域进一步改进的需要。
Jun, 2024
EMPICA是一种全面的框架,旨在系统和实证地评估代码LLMs在理解代码语义方面的能力,并揭示了当前代码LLMs在代码转换和语义保留方面的鲁棒性和敏感性的差异。
Jul, 2024
通过在自身生成的数据上fine-tune,而非查询封闭源语言模型,进一步改进了指令调优的代码大型语言模型。借鉴正式语言和非正式语言翻译的错位现象,引入了INVERSE-INSTRUCT,从代码片段中总结指令。通过代码概括和自我评估,改进了基于指令调优语言模型的性能,其通过Python文本生成代码、多语言编码以及数据科学代码生成等多个基准测试中展现了优异表现。
Jul, 2024