微软祭出代码大模型WaveCoder!四项代码任务两万个实例数据集,让LLM泛化能力飙升
创始人
2025-07-10 16:00:08
0

用高质量数据集进行指令调优,能让大模型性能快速提升。

对此,微软研究团队训练了一个CodeOcean数据集,包含了2万个指令实例的数据集,以及4个通用代码相关任务。

与此同时,研究人员微调了一个代码大模型WaveCoder。

论文地址:https://arxiv.org/abs/2312.14187

实验结果表明,Wavecoder优于其他开源模型,在以前的代码生成任务中表现出色。

指令调优,释放「代码大模型」潜力

过去的一年,GPT-4、Gemini、Llama等大模型在一系列复杂NLP任务中取得了前所未有的性能。

这些LLM利用自监督预训练的过程,以及随后的微调,展示了强大的零/少样本的能力,能够有效遵循人类指示完成不同的任务。

然而,若想训练微调这样一个大模型,其成本非常巨大。

因此,一些相对较小的LLM,特别是代码大语言模型(Code LLM),因其在广泛的代码相关任务上的卓越的性能,而引起了许多研究者的关注。

鉴于LLM可以通过预训练获得丰富的专业知识,因此在代码语料库上进行高效的预训练,对代码大模型至关重要。

包括Codex、CodeGen、StarCoder和CodeLLaMa在内的多项研究已经成功证明,预训练过程可以显著提高大模型处理代码相关问题的能力。

此外,指令调优的多项研究(FLAN、ExT5)表明,指令调优后的模型在各种任务中的表现符合人类预期。

这些研究将数千个任务纳入训练管道,以提高预训练模型对下游任务的泛化能力。

比如,InstructGPT通过整合人类标注者编写的高质量指令数据,有效地调整了用户输入,推进指令调优的进一步探索。

斯坦福的Alpaca利用ChatGPT通过Self-Instruct的方法,自己生成指令数据,进而用于指令调优的过程。

WizardLM和WizardCoder则应用了evol-instruct的方法,进一步提高了预训练模型的有效性。

这些近来的研究都体现了,指令调优在提高大模型性能方面,展现出强大的潜力。

基于这些工作,研究人员的直觉是,指令调优可以激活大模型的潜力,然后将预训练模型微调到出色的智能水平。

对此,他们总结了指令调优的主要功能:

- 泛化

指令调优最初是为了增强大模型的跨任务泛化能力而提出的,当使用不同的NLP任务指令进行微调时,指令调优可提高模型在大量未见任务中的性能。

- 对齐

预训练模型从大量token和句子层面的自监督任务中学习,已经具备了理解文本输入的能力。指令调优为这些预训练模型提供了指令级任务,让它们能够从指令中提取原始文本语义之外的更多信息。这些额外的信息是用户的意图,能增强它们与人类用户的交互能力,从而有助于对齐。

为了通过指令调优提高代码大模型的性能,目前已有许多设计好的生成指令数据的方法,主要集中在两个方面。

例如,self-instructe、vol-instruct利用teacher LLM的零/少样本的能力来生成指令数据,这为教学数据的生成提供了一种神奇的方法。

然而,这些生成方法过于依赖于teacher LLM的性能,有时会产生大量的重复数据,便会降低微调的效率。

CodeOcean:四项任务代码相关指令数据

为了解决这些问题,如图2所示,研究人员提出了一种可以充分利用源代码,并明确控制生成数据质量的方法。

由于指令调优是为了使预训练模型与指令遵循训练集保持一致,研究人员提出了一个用于指令数据生成的LLM Generator-Disciminator(大模型生成器-判别器)框架。

通过使用生成器和判别器,最新方法可以使数据生成过程,更可定制和更可控。

该方法以原始代码作为输入,选择核心数据集,通过调整原始代码的分布,可以稳定地生成更真实的指令数据,控制数据的多样性。

针对上述挑战,研究人员将指令实例分类为4个通用的代码相关任务:代码汇总、代码生成、代码翻译、代码修复。

同时,使用数据生成策略为4个代码相关的任务生成一个由20000个指令实例的数据集,称为CodeOcean。

为了验证最新的方法,研究人员将StarCoder、CodeLLaMa、DeepseekCoder作为基础模型,根据最新的数据生成策略,微调出全新的WaveCoder模型。

与此同时,研究人员在 HumanEval、MBPP、HumanEvalPack对模型进行了评估,结果表明,WaveCoder在小规模指令调优的基准上拥有出色的性能。

代码数据生成

如上所述,研究人员选择了4个具有代表性的编码任务,并从开源数据集中收集原始代码。

以下具体介绍了训练数据生成过程。

在本节中,我们将介绍我们探索的方法细节。我们首先选择4个代表性的编码任务,并从开源数据集中收集原始代码。

对于每个任务,作者使用GPT-3.5-turbo生成指令数据进行微调。生成提示如表2所示。

如下,是LLM Generator-Disciminator整体架构,也是数据生成的完整过程。

Codesearchnet是一个包含来自 GitHub 上托管的开源库的200万对(注释、代码)的数据集。它包括6种编程语言的代码和文档。我们选择 CodeSearchNet 作为我们的基础数据集,并应用基于 coreset 的选择方法KCenterGreedy来最大化原始代码的多样性。

具体来说,生成器根据输入(a)生成指令数据。随后,判别器接受输出并生成分析结果,输出(b)包括四个键,研究人员将这些信息作为指令调优的输入和输出。

分析(c)包括每条规则的详细原因和总体答案,以检查样本是否满足所有要求。

实验评估结果

代码生成任务评估

表3显示了两个基准上不同大模型的pass@1得分。从结果来看,我们有以下观察结果:

WaveCoder大大优于使用少于20k指令调优数据(InsT Data)的指令模型训练。

经过微调过程,与基础模型和开源模型的选择相比,最新模型的性能显示出实质性的改善,但它仍然落后于专有模型的指导模型训练超过70k的训练数据。

研究人员还用HumanEvalPack上最先进的Code LLM对WaveCoder进行评分,如表4。

表5列出了WaveCoder在代码汇总任务方面的结果,突出显示了以下显著的观察结果:

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...