丰色衡宇发自凹非寺
量子位公众号 QbitAI
从科技圈最新动态来看,最近 AI 代码生成概念实火。
可是,小伙伴们有没有感觉,AI 刷程序题比较亮眼,到了企业真实开发场景中,总感觉欠点火候?
恰在此时,一位低调的资深大玩家 aiXcoder 出手了,放出大招:
它就是全新开源的代码大模型——aiXcoder-7B Base 版,一个专门适合在企业软件开发场景中部署的代码大模型。
等等,一个“仅”70 亿参数的代码大模型,能展现出什么样的 AI 编程水平?
先看看在 HumanEval、MBPP 和 MultiPL-E 三大主流评测集上的表现,它平均得分居然超过 340 亿参数的 Codellama。
要知道,后者来自 Meta、基于 Llama2,可是开源界最先进的 AI 编程大模型之作。
没完,这个模型不仅打败了一众开源大模型、成为百亿级代码大模型中最强,还有特别的优势:
一改传统的“刷题式”代码生成,它专门针对企业级软件项目,在真实开发场景下效果最好——代码生成补全能力、和跨文件能力经过测试,都是“杠杠滴”(No.1)。
言外之意,aiXcoder-7B 不玩“虚”的,可以 hold 得住企业真实业务场景。
例如在贴近真实开发场景的评测集 CrossCodeEval 上,aiXcoder-7B 一举拿下了同级别模型的最好效果:
百亿级参数最强代码大模型
先来看大模型。
此次发布并开源的是 aiXcoder-7B Base 版(相应 Instruct 版后续也将发布),它让人最感到惊喜的就是:
除了代码生成能力 SOTA——不仅拿下主流测评集中的各种算法题,更重要的,在与企业真实开发场景一致的多文件复杂代码场景中,aiXcoder-7B 在同量级参数模型中表现更加亮眼!
要知道,AI 编程工具当前最实用的能力就是生成和补全,包括直接生成完整的方法块、条件判断块、循环处理块、异常捕捉块等多种情况。
而在真实开发场景中,我们特别需要它对整个开发项目中的各种关联文件进行理解,然后再生成。
测试显示,aiXcoder-7B Base 版结合单文件上下文的代码补全能力超越 StarCoder2、CodeLlama 等一众模型,在 Python、JS 和 Java 语言上综合得分最高。
这是在 SantaCoder 测评集上的结果。还不过瘾,aiXcoder 团队还提出了一个更大的测评代码生成补全数据集(16000 多条来自真实开发场景的数据),做了进一步测评,效果更明显。
今天,该测评集也与模型一同开源,欢迎大家前来挑战~
值得一提的是,团队还特别向我们开了一个“彩蛋”,那就是 aiXcoder-7B Base 版在补全时更倾向于用较短的代码来完成任务,有一种天生的“简洁美”。
其好处不言而喻:程序员更容易理解、Bug 也更好检查。
易私有化部署、个性化定制
这么好的代码大模型,为什么要开源呢?
aiXcoder 团队表示,帮助更多的开发者减轻工作负担,是他们的愿望!
这次,之所以开源 7B 的项目级代码大模型,主打就是“方便企业开发者使用”。
可以用三个“易”来总结它的特点:
首先, 易部署。
代码数据,都是企业私有的核心知识产权。因此,私有化部署和学习是不可避免的,而且,通常企业的部署资源是又是有限的。
aiXcoder-7B Base 版只有 7B 参数规模,十分轻便,易于部署,进而还有成本低、性能好的优点。
第二点,易定制。
很多企业都有自己的软件开发框架和 API 的库,与其关联的业务逻辑、代码架构规范都因地制宜,十分个性化。同时,这些内容又都有私密性。
必须得让大模型学会这些企业代码资产,通过进行有效个性化训练,才能真正为企业所用。
aiXcoder-7B Base 版就具有这样易定制的特性。
再者,易组合。
aiXcoder 团队透露 ,未来提供企业服务时,可以让多个 7B 模型形成 MoE 架构,组合成为一套解决方案来完成企业定制化服务。
不同的企业,都可以得到符合自身个性化需求的 MoE 版代码大模型解决方案。
据了解,aiXcoder-7B Base 版走开源路线,后续将聚焦B端市场,推出企业版本。
通过这种方式,aiXcoder 通过持续为企业级用户提供精准、高效、连续的软件开发服务,帮助他们不断提高项目的开发效率和代码质量。
例如,正在进行数智化转型的某行业头部券商就采用了 aiXcoder 的大模型解决方案,在本地环境私有化部署代码大模型,且采用了模型的灵活调整方式,使智能开发系统与使用团队规模保持同步。
这种部署方式既确保了既有算力可支持,避免了因硬件门槛过高而带来的挑战;又能满足企业日常的编码需求。
现有落地数据反馈显示,结合该企业自身领域知识进行个性化训练后,在业务逻辑代码上,代码生成占比,较之前提升 2 倍。
看完了成绩,模型实际效果究竟怎么样?接下来就来几个 demo 给大家感受一下。
首先,aiXcoder-7B Base 版能理解更多、更复杂的代码上下文信息,进行代码生成和补全:模型预训练支持的上下文长度为 32k,推理阶段扩展则可达 256k。
如下图所示,当我们用多个工具函数拼成了 1500 多行的代码,在文件末端注释要模型接入时,它可以准确识别到文件顶部的相关函数,结合该函数信息补全相关方法。
其次,在企业开发场景中,更重要的是跨文件分析的能力,它可以从多个代码文件中自动识别并提取所需。
如下图所示,我们需要在树结构上应用动态规划来实现编辑距离搜索,让模型补全树结构上目录节点的动态规划状态类。
模型准确识别到了编辑距离的计算与另一个文件中滚动数组内部取最小值的计算之间的关系,从而结合非当前的两个文件给出了正确的预测结果。
以上都还没完,aiXcoder-7B Base 版的补全还是相当智能化的。
例如当用户的采纳情况发生调整时,它会根据当下的采纳情况自动调整补全长度。
同时,作为一个补全代码专家,它还能根据用户输入的流畅性(即停顿时间)来判断用户当前是否需要补全,并不随意触发功能打断咱的工作状态。
不得不说:真香啊。
而广大程序员们真正需要的,正是 aiXcoder 这样不仅懂通用代码,还能懂“我们企业”代码的 AI 编程工具。
那么,如此接地气的模型,究竟是如何炼成的?
团队介绍,该模型属于全自研,首先是训练数据:
一共包括 1.2TUniqueTokens,在 7B 参数级模型中,训练数据量算是非常大的了。
不光“量胜”,团队也在这些数据上取得了“质胜”:他们耗费大量时间针对数十种主流语言做了语法分析过滤,以及静态分析排除掉了 163 种 Bug 和 197 种缺陷。
其次是针对性的训练方法,团队专门针对真实环境中的项目级代码进行了代码结构化语义训练,充分保证模型效果。
最后就是在训练过程中一开始就充分考虑了多文件的处理问题,通过结合聚类、代码 Calling Graph 等方式构建了多文件之间的相互注意力关系。
最终,更适用于真实开发场景的 aiXcoder-7B Base 版得以诞生。
aiXcoder 背后的团队
再扒扒这个模型背后的玩家,我们发现来历也不简单:
首先,aiXcoder 团队由北京大学软件工程研究所孵化,从 2013 年起开始搞代码生成,国际上最早的基于深度学习的代码生成论文就出自于他们;
其次,十年来,团队在 NeurIPS、ACL、IJCAI、ICSE、FSE、ASE 等顶会上发表相关论文 100 余篇,多篇论文被国际学者认为是“首创成果”并被广泛引用,多次获 ACM 杰出论文奖。
可谓要实力有实力,要成绩也有成绩。
2017 年,aiXcoder 最开始的雏形——aiXcoder1.0发布,提供代码自动补全与搜索功能。
2021 年 4 月,团队推出完全自主知识产权的十亿级参数代码大模型 aiXcoder L 版,支持代码补全和自然语言推荐。这也是国内⾸个基于“⼤模型”的智能编程商⽤产品。
而后,团队持续攻坚,2022 年 6 月再次推出了国内首个支持方法级代码生成的百亿级参数量模型aiXcoder XL 版,同样具有完全自主知识产权。
2023 年 7 月,aiXcoder 团队推出聚焦企业适配的 aiXcoder Europa,具有代码自动补全、代码自动生成、代码缺陷检测与修复、单元测试自动生成等功能。
据了解,aiXcoder Europa 可根据企业数据安全和算力要求,为企业提供私有化部署和个性化训练服务,有效降低代码大模型的应用成本,提升研发效率。
直到今日,aiXcoder-7B Base 版诞生。
在科技的璀璨星河中,每一次技术的突破都如同新星的诞生,照亮了未来的无限可能。
随着代码大模型的能力日益增强,它们在解决复杂编程问题上的卓越表现,不仅在提高软件开发的效率和质量上发挥着重要作用,在推动编程自动化的浪潮中扮演着关键角色,更激发了程序员们的创新潜能,让他们能够将更多的精力投入到探索和创造中。
换句话说,aiXcoder-7B 这款前沿的代码大模型,不仅加速了软件开发自动化的进程,更在重塑技术行业的生态,引领着未来发展的趋势:
加快实现软件开发自动化。
这既是行业大势所趋,更是发展的必然选择。
荣幸的是,我们正站在这个转折点面前,见证着这一趋势的兴起和实现。
aiXcoder 开源链接:
https://github.com/aixcoder-plugin/aiXcoder-7B