Press "Enter" to skip to content

微软和香港浸会大学的研究人员推出了WizardCoder:一种代码演变指导的精调代码LLM

微软和香港浸会大学的研究人员推出了WizardCoder:一种代码演变指导的精调代码LLM 四海 第1张微软和香港浸会大学的研究人员推出了WizardCoder:一种代码演变指导的精调代码LLM 四海 第2张

大型语言模型(LLMs)最近引起了很大的关注并取得了显著的成功。其中OpenAI的ChatGPT尤为突出。这些模型通过利用大量的互联网数据进行重要的预训练,并通过精确的指导数据进行进一步的微调,实现了各种任务的最新(SOTA)零-shot性能。这种模式在代码的理解和生成中也有所体现。许多代码LLMs已被提出来解决代码相关活动中固有的困难。这些代码LLMs通过使用大量的代码数据进行预训练,使它们能够在与代码相关的各种活动中表现出色。

在代码领域中,与大多数之前的代码LLMs主要侧重于预训练阶段不同,需要对细粒度的指令定制进行更多的研究。为了提高语言模型在各种活动中的泛化能力,首次使用了指令调整。例如,OpenAI的InstructGPT要求人工标注员提供具体的指令以验证与用户目标的符合性。类似于最近的Alpaca,使用ChatGPT通过自我指导方法生成指令数据。Vicuna利用用户在ShareGPT.com上发布的聊天记录。WizardLM建立了Evol-Instruct方法,涉及修改当前的指令数据以生成更复杂和多样化的数据集。

然而,重要的是要注意,这些技术在设计时应该特别考虑到代码领域,而不是主要关注通用领域。受Evol-Instruct方法的启发,微软和香港浸会大学的研究人员在这个项目中打算通过使用特定于代码的Evol-Instruct生成详细的代码指令数据来改进开源代码LLM StarCoder的功能。他们对适用于涉及编码的活动的进化提示过程进行了多方面的修改,以实现这一目标。简化了进化提示,改进了进化指令,并包括了代码调试和时间空间复杂性的限制。他们的方法首先用于开发基本的Code Alpaca指令数据。

接下来,他们使用新开发的代码指令跟随训练集来微调StarCoder并获得他们的WizardCoder。根据包括HumanEval、HumanEval+、MBPP和DS-100在内的四个代码生成基准的实验结果,他们的WizardCoder击败了所有其他开源代码LLM,达到了最先进的(SOTA)性能。他们注意到在HumanEval和HumanEval+上的pass@1得分显著提高,即在HumanEval上增加了22.3(57.3 vs. 35.0),在MBPP上增加了8.2(51.8 vs. 43.6)。令人惊讶的是,尽管规模较小,但他们的WizardCoder在HumanEval和HumanEval+的及格率上甚至超过了Anthropic的Claude和Google的Bard。

以下是本研究的贡献摘要:

• 我们提供了WizardCoder,它应用了Code Evol-Instruct来改进开源代码LLM StarCoder的功能。

• WizardCoder在代码生成方面明显优于所有其他开源代码LLM,包括StarCoder、CodeGen、CodeGee、CodeT5+、InstructCodeT5+、StarCoder-GPTeacher和Instruct-Codegen-16B。

• 尽管规模较小,但WizardCoder在代码生成方面超过了主要的闭源LLM,包括Claude、Bard、PaLM、PaLM-2和LaMDA。

Leave a Reply

Your email address will not be published. Required fields are marked *