2023年中央经济工作会议指出,要大力推进新型工业化,发展数字经济,加快推动AI发展。
在AI大模型发展热潮中,国内“产学研用”等各方积极布局、大力投身大模型研发应用。目前,国内已经发布超200个大模型,通过国家网信办备案的大模型超过20个,大模型已进入规模落地应用阶段。据赛迪研究院数据,2023年我国大语言模型市场规模将达到132.3亿元,增长率达110%。
近日,在2023通信产业大会暨第18届通信技术年会上,《通信产业报》全媒体发布了2023年度AI大模型先锋榜TOP50,受到业界广泛关注。
那么,作为大模型核心关键能力的代码能力,是怎样呈现出大模型理解、逻辑、推理、生成等综合能力,又该如何客观评估大模型代码能力,促进大模型代码能力迭代进步?同日在大会上,中国软件评测中心人工智能研究测评事业部联合中国科学院信息工程研究所孟国柱团队,依托人工智能场景化应用与智能系统测评工信部重点实验室,发布了《大语言模型代码能力测评分析报告》(以下简称《报告》),从评测实证大语言模型的真正代码能力。
《大语言模型代码能力测评分析报告》在2023通信产业大会暨第18届通信技术年会上发布。
部分大模型表现优异
代码能力是大模型核心关键能力,是大模型理解、逻辑、推理、生成等综合能力的体现,其已成为程序员辅助编程必备助手,能够编写、翻译、补全代码,帮助定位和修改错误,大大提高了编程效率,正给软件开发带来变革。
《报告》从代码生成、代码翻译、代码纠错、代码补全、代码安全五大维度构建测评体系,面向各能力项建立契合测试任务要求的数据集,设计了涵盖代码完整性、功能完备度、文本相似度三项一级指标,编译正确率、运行时正确率、运行超时率、pass@k、样例通过率、CodeBleu六项二级指标。基于该测评规范,对文心一言、讯飞星火、智谱清言、通义千问、MINIMAX、CodeLlama等5款最新版本国内大模型和1款开源大模型开展测评,分析大模型代码能力表现,形成国内第一份专门测评分析大模型辅助编程能力的报告。
整体看,多数大模型能够有效生成可运行的代码,并提供有助于理解的注释,部分模型表现优异,代码格式规范、正确率高。其中,讯飞星火和通义干问在编写代码方面表现优异,代码格式规范,正确率高。
代码生成方面,大模型能够较好理解题意并编写对应代码,具备基本的算法、逻辑、编程语言等相关知识,生成的代码质量较高,大部分能够顺利通过编译并执行,一定比例能够通过测试用例。
代码翻译方面,相对于无参考代码的代码生成任务,所有大模型均能够按要求将某种常见编程语言代码转换成指定的编程语言代码,所转换的大部分代码能够有效执行。其中,文心一言4.0、讯飞星火、通义千问表现突出,代码正确率较高。
代码纠错方面,给定错误代码位置情况下,大模型能够较准确完成如变量、运算符、关键词等简单错误的修改。
代码补全方面,大语言模型的小规模代码补全能力较好,能够识别并模仿给定代码的变量命名和格式,生成与给定代码风格一致的代码。
大模型编程能力参差不齐
虽然AI大模型的发展取得了较大进步,但不可忽视的是,大模型编程能力参差不齐,存在不足。《报告》指出,模型间编程能力参差不齐,一些模型在复杂任务上理解能力有限;在处理复杂的编程环境和输出格式要求时,模型的表现通常不佳;几乎所有模型在代码生成时都可能出现逻辑错误,部分模型还会犯基本的语法错误。
代码生成方面,功能完备性仍然较低。大模型生成的代码语法错误较少,但是运行时错误比例仍然很高;算法编写的成功率仍然较低,即完全通过测试用例的代码比例仍然较低,尤其复杂的问题。
代码翻译方面,不同语言的理解能力有差异,导致翻译效果不同。大语言模型翻译任务的效果与源语言及目标语言的种类相关性高,当目标语言为相对简单的Python时,翻译成功率高;而当源语言为Python时,目标语言为C/java时,翻译成功率则会略低。
代码纠错方面,总体表现不佳。错误定位能力不足,大模型无法有效指出代码中的错误位置,有时定位点与实际点距离相差较大;大模型的修复能力建立在提前告知错误位置,影响实用性;面对复杂的代码任务,修正后的代码往往无法正常运行,归因于模型处理的内容长度有限,模型本身存在的限制。
代码补全方面,大模型的上下文长度限制了其补全能力。受限于模型设计,模型只能考虑有限的代码上下文,通常只能处理片段级别的补全,而不具有长期的记忆,难以处理程序语言中远距离的依赖关系;生成补全的格式不稳定,在使用时需要人工额外调整。
大语言模型代码能力如何发展?
业内预测,2024年大模型不会被垄断,不会像操作系统一样全世界只有几套,其发展路径更像电脑,会无处不在。继2023澎湃喷涌的大模型发展浪潮后,大语言模型代码能力该如何发展?
第一,提高代码语料质量,扩充代码相关多模态数据集。全面提升大模型训练集中代码语料的质量,使语料覆盖高质量的代码仓库,设置合理的过滤规则,确保语料具有合理的文件长度、代码行长度、字母数字比,获得完整、安全、正确、干净和通用的代码语料库。大模型的代码任务通常是多模态的任务,需要同时理解自然语言/数学公式/代码语言的信息,通过构造多模态对齐数据集,提升大模型对代码相关跨模态任务的解决能力。
第二,加强代码安全对齐算法。自然语言需要伦理道德对齐,代码也亟需安全对齐。厂商需要设计RLHF阶段代码安全专家的介入,训练模型生成安全无漏洞代码的倾向,同时可以设计相关程序的测试流程,完成语法语义正确性的自动对齐。
第三,拓展大模型上下文窗口。不同于自然语言任务,代码相关的各项任务对上下文窗口的长度都极为敏感,提升大模型的上下文训练窗口,可以有效提升大模型在实际应用中理解/编写代码的能力。
第四,加强针对大模型的缺陷检测和安全增强。实际生产中往往在预训练模型中进行增量训练或微调,这些大模型可能在代码生成方面存在缺陷和漏洞,如何对预训练大模型的缺陷进行有效检测和安全增强,或通过外部手段规避风险,是未来的研究热点和发展趋势。
大模型结合上百G代码/文本混合数据训练,已在多种任务中展现出较好的代码能力,其已成为程序员日常必备工具,显著提高了编程效率。未来,大模型的代码能力如何,用户在利用大模型辅助编程时应该如何选择、如何规避风险,如何在大模型现有编程能力上进行更好的调优,是产业界需要突破的挑战。