NoFunEval: 搞笑的事实上代码语言模型在功能正确性以外的要求上遭遇困难

💡 原文中文,约1600字,阅读约需4分钟。
📝

内容提要

该文综述了大型语言模型代码生成评测进展,涵盖EvalPlus、L2CEval、DevEval、F-Eval、NL2Fix、CoDI-Eval等基准,评估语义解析、数学推理、Python编程、类级代码生成及Verilog设计等任务,揭示现有基准局限,指出模型在复杂代码生成和约束遵循上表现不足,并提出改进方向。

🔎

延伸解读

评测基准的演进与局限

文章梳理了从EvalPlus、L2CEval到DevEval、F-Eval等多个基准,显示代码生成评测已从简单功能正确性扩展到语义解析、数学推理、类级生成等任务。但现有基准仍存在局限,例如EvalPlus通过自动生成测试输入发现并降低了错误率,揭示了原有基准测试集覆盖不足的问题。这表明单一基准难以全面衡量模型能力,读者需关注评测任务与实际开发场景的匹配度。

模型在复杂任务与约束遵循上的短板

文章指出,LLMs在类级代码生成和约束遵循上表现不足。类级生成评估中,GPT-4和GPT-3.5表现卓越,但其他模型较差,逐方法生成是更好策略。CoDI-Eval则揭示模型在按特定约束执行指令方面存在局限,且开源与闭源模型差距显著。这些发现提示,模型在简单任务上的成功未必能迁移到复杂工程场景,约束遵循能力仍是薄弱环节。

从功能正确到人性化评估的转向

文章提到,有研究关注LLM生成代码的正确性及努力度对程序员价值的影响,建议设计更人性化的评估指标。这反映出评测正从单纯的功能正确性转向考虑开发者实际体验,如代码可维护性、修复成本等。NL2Fix任务中,最佳模型在bug修复上top-1精度仅21.20%,说明自动修复仍不成熟,读者应理性看待模型在真实开发中的辅助作用。

❓

Q&A

有哪些基准测试用于评估大型语言模型的代码生成能力?

文章提到了多个基准测试,包括EvalPlus、L2CEval、DevEval、F-Eval、NL2Fix、CoDI-Eval,以及一个针对Verilog代码生成的基准测试框架。

L2CEval主要评估LLM的哪些能力?

L2CEval系统评估LLM在7个任务中的语言到代码生成能力,包括语义解析、数学推理和Python编程等,并分析模型大小、预训练数据、指令调整和提示方法等因素的影响。

大型语言模型在类级代码生成任务上表现如何?

现有LLM在类级代码生成上表现较差,GPT-4和GPT-3.5表现卓越,而逐方法生成是其他模型更好的策略。

NL2Fix任务是什么?其基准测试结果如何?

NL2Fix是将自然语言编程描述翻译为正确代码修改的任务,基于Defects4J-NL2Fix数据集。评估显示LLM能对64.6%的错误生成合理修复,最佳LLM达到21.20%的top-1和35.68%的top-5精度。

CoDI-Eval基准测试揭示了LLM的哪些局限性?

CoDI-Eval系统和全面评估LLM对带有各种约束的指令的响应,揭示了它们在按照特定约束执行指令方面的局限性,以及开源与闭源LLM之间存在显著差距。

如何提高预训练语言模型的Verilog代码生成能力?

可以通过使用LLM生成的合成问题-代码对进行监督微调来提高预训练语言模型的Verilog代码生成能力。

🏷️

标签

➡️

继续阅读