TOC
KINA

KINA-0

Start having fun with KINA right now!

A SYSTEMATIC EVALUATION OF LARGE LANGUAGE MODELS OF CODE(PolyCoder)

Xu, F. F., Alon, U., Neubig, G. & Hellendoorn, V. J. A Systematic Evaluation of Large Language Models of Code. Preprint at http://arxiv.org/abs/2202.13169 (2022).

1 引言

  • 代码语言模型在代码补全和代码合成等任务上展现出巨大潜力。
  • 然而,当前最先进的代码语言模型(如 Codex)未公开,限制了其应用和研究。
  • 本研究旨在填补开源代码语言模型领域的空白,并促进该领域的研究和应用。
  • 提出了 PolyCoder,一个基于 GPT-2 架构的 27B 参数模型,在 12 种编程语言的代码语料库上进行训练。

2 相关工作

  • 介绍了三种流行的代码语言模型预训练方法:
    • 自回归语言模型:预测给定前文的情况下下一个 token 的概率,适用于代码生成任务。
    • 掩码语言模型:预测被掩码的文本片段,适用于代码表示学习任务。
    • 编码器-解码器模型:将输入序列编码,然后根据输入序列解码输出序列,适用于代码生成任务。
  • 讨论了代码语言模型预训练数据的选择:
    • GitHub 代码:包含大量真实世界的代码数据,但可能存在代码重复问题。
    • 混合自然语言文本和代码:可能有助于代码语言模型学习代码结构和语义,但需要更多研究验证。

3 评估设置

  • 使用 HumanEval 数据集进行代码生成任务的外部评估:
  • 数据集包含 164 个代码注释和函数定义,以及用于判断代码正确性的测试用例。
  • 使用 softmax 和 nucleus sampling 进行代码生成,并通过调整温度参数控制模型预测的置信度。
  • 使用来自 GitHub 存储库的未见数据集进行代码语言模型的内部评估:
  • 数据集包含 12 种编程语言的代码,并排除了训练集中出现的代码,以避免数据泄露。
  • 计算不同模型的困惑度,评估模型对代码序列的概率预测能力。

4 比较模型

  • Codex:目前最先进的代码语言模型,在代码生成任务上表现出色,但未公开。
  • GPT-Neo、GPT-J 和 GPT-NeoX:基于 GPT-3 架构的开放源代码语言模型,在代码生成任务上表现出良好的性能。
  • CodeParrot:基于 GPT-2 架构的开放源代码语言模型,仅使用 Python 代码进行训练。
  • PolyCoder:本研究提出的开放源代码语言模型,使用 12 种编程语言的代码进行训练。

5 结果

  • 在 HumanEval 数据集上,PolyCoder 的性能落后于 Codex 和 GPT-Neo/J,但在 C 语言上表现出色。
  • 分析了模型参数数量、训练时间和温度对模型性能的影响,发现更大的模型和更长的训练时间通常能够带来更好的性能。
  • 在内部评估中,PolyCoder 在 C 语言上的困惑度最低,但在其他语言上落后于 Codex。

6 结论

  • 本研究系统地评估了现有代码语言模型,并提出了 PolyCoder,一个开源的代码语言模型。
  • PolyCoder 在 C 语言上表现出色,但在其他语言上落后于 Codex。
  • 研究结果表明,代码语言模型的性能受模型规模、训练时间和训练数据的影响。
  • 本研究鼓励开源代码语言模型的研究和应用,以促进代码语言模型领域的发展。

发表评论