今天小编分享的科技经验:「代码大模型」成 AI 新风口,aiXcoder 想让所有企业抢先用上,欢迎阅读。
4 月 9 日,北京大学軟體工程研究所开源了由其 aiXcoder 团队全新自研 7B 代码大模型。作为「AI+ 軟體开发」领網域的专业团队,aiXcoder 开源的 7B 代码大模型,有可能会给企业「軟體工程」带来全新的可能。
在美国,AI 軟體开发工具 GitHub Copilot 的 ARR(年度经常性收入)早达到 1 亿美元,成为 AI 在开发者应用上的里程碑产品。纳德拉称其为「微软最成熟的 GenAI 产品」,「这对程式员的必要性就像 Microsoft Word 中的拼写和语法检查一样」。
但实际上,要让 AI 真正帮助开发者解决问题,「拼写和语法检查」只是表层,从「軟體工程」的角度,帮助开发者解决真实軟體开发场景中的问题,才是根本。
aiXcoder 团队来自北京大学軟體工程研究所,他们不但是国际上最早将深度学习技术用于程式代码处理的团队,也是最早推出基于深度学习的编程产品的团队。
aiXcoder 团队这次开源的新一代全自研的 7B 代码大模型,聚焦企业真实开发场景,致力于解决企业私有化部署场景下的軟體开发问题。该模型的 Base 版本已在 Github、Gitee、Gitlink 等平台开源。
多个主流评测集测评结果显示,aiXcoder-7B 模型在代码生成与补全的能力上,展现了百亿级代码大模型的效果,速度更快、效果更准,而且,由于它充分考虑了企业私有化部署的需求,更适合企业的真实开发场景。
在今天的 AIGC 创业潮下,aiXcoder 团队的先发优势会让其脱颖而出吗?軟體开发自动化的美好愿景离我们还有多远?
01 aiXcoder 团队「探路」十年
2014 年,北京大学軟體工程研究所的研究者(aiXcoder 团队的前身),相继发表了《Building program vector representations for deep learning》(译为《构建深度学习的程式向量表示》)等多篇具有里程碑意义的研究论文,在全球范围内首次验证了深度学习路线在代码处理领網域的作用。
但在提出这项研究时,用深度神经网络处理程式代码,还是一个极其大胆的假设。当时,軟體从业者普遍认为「軟體自动化只是一个长期而美好的愿景」,AI 领網域也只是抱持「可以试试看」的态度。
彼时,随着图灵奖得主 Geoffrey Hinton 解决了多层神经网络训练的难题,深度学习技术相继在语音、视觉、自然语言领網域大放异彩,相关技术迅速在产业里更迭,但还没有人把它与程式代码的处理联系起来。
计算机能编译、能运行程式,为什么还要让计算机学会理解程式?
但这个问题对北大软工所的研究者们而言,却是从做研究的第一天就「种草」的课题。在他们看来,人之所以要写程式,是因为计算机只能「听懂」程式语言。「人写程式,是在为机器提供服务」。研究者的使命,就是要把人从「为机器服务」的困境中解放出来。
然而要让计算机能够自己写程式,就需要首先让它学会理解程式。也就是说,不但要让计算机能运行程式,还要能理解所运行的程式的语义。
在这个信念下,他们提出一个大胆的猜想:如果把互联网上的程式「爬」下来,训练一个处理程式的「深度学习引擎」,那么就可以实现,给这个引擎一个程式代码,它可以自动分析出程式的意图。而反过来,给这个引擎一个意图描述,它就可以生成代码了。
2013 年冬,他们在团队领头人李戈教授的带领下,便开始了把深度学习技术用于程式处理领網域的研究。
那时候还没有今天耳熟能详的深度学习框架—— TensorFlow、Pytorch,于是一行人选择用 C++ 程式语言从最底层搭建神经网络,包括反向传播算法、求导算法等。
作为探索性研究,团队面临的第二个挑战是没有 GPU。
当时,他们找了 17 台北京大学軟體工程研究所「退役」的 PC 机,在北大 1726 机房铺了一地,用一个局部网络把这些计算机连起来,来实现训练一个深度神经网络的任务。
训练效率可想而知,5 万条数据跑了一个多月。
好在结果让人欣喜,根据前文提到的论文:在程式分析任务上——程式功能分类、程式模式检测,深度学习都比以往方法得到的结果更准确。
这让团队看到了深度学习技术应用于程式处理的前景,并从此坚定地踏上了征程,一干就是十年。
2015 年,他们发表了最早的程式生成论文《On End-to-End Program Generation from User Intention by Deep Neural Networks》(译为《基于用户意图的端到端程式生成的深度神经网络》)开拓了利用深度学习技术生成程式代码的先河。
2017 年 5 月,推出了 aiXcoder 最初的实验室版本 deep-autocoder,开启了不断提升代码补全的模型参数量,完善产品互動形态的探索,代码补全和生成的效果也越来越好。
2018 年,随着产品打磨走向成熟,实验室产品也开始面向产业,6 月发布了 aiXcoder 原型版,并与华为、百度、腾讯等多家头部企业展开持续合作,做代码生成与补全、代码分析等技术的概念验证。随后以不同领網域为目标,aiXcoder 团队开始探索不同模型驱动不同任务的路径,推出了 Android 版、python 版等不同领網域的模型版本。
直到 2021 年 OpenAI 的 Codex 问世,业界才开始相信:在更大更深的神经网络上,训练代码大模型的效果也越来越好。时隔不久,aiXcoder 团队在鹏城实验室的算力支持下,研发出第一个超过十亿的代码大模型 aiXcoder L 版。
2022 年 6 月,aiXcoder 团队发布国内首个完全自主知识产权的方法级代码生成模型 aiXcoder XL,该模型拥有百亿级参数量,可根据自然语言功能描述一键生成完整程式代码(NL to Code)。
2023 年 8 月,聚焦企业适配的 aiXcoder Europa 版上线,除了像代码自动补全、生成、缺陷检测与修复等常规功能外,aiXcoder Europa 为企业场景量身定做,可以根据企业数据安全和算力要求,提供私有化部署和个性化训练服务,并在提升研发效率的同时,有效降低了代码大模型的应用成本。
在产品不断更新,突破一个又一个评测基准的同时,aiXcoder 团队也积极在银行、证券、高科技、军工等领網域帮助头部企业客户实现真正的代码大模型应用落地。
同时,资本市场也看好 aiXcoder 的发展前景,高瓴、清流、彬复等极具行业引领性的明星股东纷纷加注。
站在 ChatGPT 点燃 AI 热情的今天,回看 aiXcoder 团队过去十年的探索,他们是拓荒者,也因此积累了深厚的算法、工程能力以及市场 know-how。在大模型技术尚未成熟到「拿来就用」的程度,aiXcoder 团队结合深度学习技术和軟體领網域的专业能力,有效帮助企业落地軟體自动化。
02 开源 aiXcoder-7B,加速「軟體开发自动化」
4 月 9 日开源发布的 aiXcoder 7B,同样秉承了其产品为企业服务的核心理念。
aiXcoder 7B 不仅在代码生成的基础能力上超越了同级别的现有模型,甚至在一些特定任务上比更大参数量级的 15B、34B 的代码大模型效果要更好。
如下图,在 HumanEval、MBPP、MultiPL-E 三个主流代码生成效果评估测评集上,aiXcoder-7B 展现出了明显优势。
其实,在真实的开发环境中下,上述 NL to Code 根据自然语言生成对应代码的能力只是基础,现在主流的评测方式离真实场景很远,写程式或者代码需要各种集成、扩展以及调用关系,NL to code 根据自然语言给出方法,在实际的场景问题中是割裂的。
为此,aiXcoder-7B 在模型的构造过程中,特别考虑了与实际开发场景对齐的项目级代码的处理能力,因此,它比其他模型更能够考虑到軟體项目内其它相关代码檔案中所包含的重要信息,如类定义、类属性、方法定义等。
在专门考虑项目级信息的代码生成测评数据集 CrossCodeEval ( Ding et al.,2023 ) 上,aiXcoder-7B 表现出了显著优于其他模型的准确性。(下图)
同时,在代码补全场景中,开发者不仅期待模型能生成一个完整的代码块,其具有完整的语法结构,完整的处理逻辑,还需要尽可能调用上下文已经实现的函数,这样才符合实际的开发风格。
为了评估在实际开发场景中的补全效果,aiXcoder 在一个具有超过 16000 条真实开发场景代码的开源测评数据集上,也展现了最优的效果。而且,相较于其他模型,aiXcoder 7B 更加倾向于使用较短的代码来完成用户指定的任务。
为什么 aiXcoder-7B 能在贴近真实企业开发场景的数据集上取得如此极致的效果?
aiXcoder 团队向极客公园透露,其从客户需求中「长」出来的代码模型技术,使得包括 7B-base 模型在内的 aiXcoder 系列模型都易部署、易定制、易组合,更贴合实际軟體开发任务,与企业应用场景深度融合,更适合落地。
去年初 ChatGPT 大火时,大家对大模型技术的期待相当高,通用人工智能似乎一步之遥。热情回归理性,大模型走向千行百业的落地应用过程中,有很多真实的需求就「冒」出来了,比如,在落地 AI 应用时的第一步,尽管排行榜上有很多 SOTA 大模型,但客户首先一定是先根据自己的场景实地评测进行模型选型。同时,企业在评测这类代码大模型时,尤其强调有效的个性化训练,以确保模型能够满足企业的具体需求。
这里的难点在于:大多数大模型都是基于开源数据集进行训练的,当它们被应用到企业内部时,面对的是全新的业务逻辑和编程规范,这往往导致模型性能下降。因此,如何做好个性化训练,使模型能够学习并适应企业特定的领網域知识是关键。
在落地应用方面,aiXcoder 在大模型技术还没有火出圈时,就始终贴合客户需求,积淀了不少实用、独到的技术方法论。就拿推理速度来说,这是代码大模型与通用大模型在落地上最显著的差异,代码大模型需要提供更快的反馈速度,在集成开发环境(IDE)中,实现「无感知服务」,即在程式员编写代码时提供即时反馈,而不会打断他们的思路。在这个目标下,团队从算法和部署的角度,积累了很多经验。
在被问及十年来所看到的市场需求变化时,aiXcoder 团队表示,「最明显的趋势在于,开发者对 AI 辅助軟體开发的态度,从最初的陌生和观望,逐渐转变为主动拥抱变革」。
对 AI 领網域来说,通过代码大模型实现軟體开发自动化出现了曙光。而对于 aiXcoder 团队来说,軟體自动化的目标是軟體工程学科的出发点,终极目标是把人类从繁重的軟體开发劳动中解放出来。
谈及代码领網域未来的产品形态,aiXcoder 团队认为是智能化的集成开发环境,从对话式需求开始,多智能体协作进行軟體自动化开发。至于能在多大程度上实现端到端的程式自动化,团队用「铁钳模型」阐述了其前景。「用『需求』和『测试』这两侧夹住整个軟體开发的过程,中间是大模型主导的自动化过程,这是軟體开发可以期待的未来」。
「沿着前辈指明的道路往前走一步,是一件幸运且幸福的事业」,「軟體自动化」的使命,并不是下一代的事情。