人工智能

编码碾压ChatGPT!UIUC清华联手发布7B参数Magicoder,代码数据权重全开源

字号+作者: 来源:新智元公众号 2023-12-19 13:44 评论(创建话题) 收藏成功收藏本文

声明:本文来自于微信公众号 新智元(ID:AI_era),作者:新智元,授权站长之家转载发布。【新智元导读】全新代码大模型Magicoder,不到7B参数,就能在代码生成领域'...

声明:本文来自于微信公众号 新智元(ID:AI_era),作者:新智元,授权站长之家转载发布。XZd品论天涯网

【新智元导读】全新代码大模型Magicoder,不到7B参数,就能在代码生成领域与顶级代码模型不相上下。XZd品论天涯网

开源「代码大模型」来了!XZd品论天涯网

UIUC清华团队的研究人员发布了Magicoder,不到7B参数,就能在代码生成领域与顶级代码模型不相上下。XZd品论天涯网

值得一提的是,Magicoder的代码、权重和数据,毫无保留完全开源。XZd品论天涯网

图片XZd品论天涯网

论文地址:https://arxiv.org/abs/2312.02120XZd品论天涯网

Magicoder依靠的OSS-INSTRUCT的方法,是通过对现有顶级代码模型(例如ChatGPT)的提示,加上网络上的种子代码片段,来生成的代码。XZd品论天涯网

图片XZd品论天涯网

这可真是取之于大模型,用之于大模型;就有网友转发说道:通过这些结果,看到了提高用于LLMs的合成数据的潜力也是一个非常有趣的领域。XZd品论天涯网

图片XZd品论天涯网

话不多说,那就让我们来具体了解一下Magicoder的来历吧!XZd品论天涯网

代码生成的发展史XZd品论天涯网

代码生成(Code Generation),也叫程序合成(Program Synthesis),近几十年来,一直都是学术界的一块「硬骨头」,在此领域进行过的许多尝试,例如基于抽象的合成和基于示例的编程,都没有取得很好的效果。XZd品论天涯网

直到最近,使用在代码上训练的大型语言模型取得了显著的突破,被广泛应用于辅助实际软件开发。XZd品论天涯网

最初,诸如GPT-3.5Turbo和GPT-4之类的闭源模型主导了各种代码生成基准和排行榜。XZd品论天涯网

为了推动开源LLM在代码生成领域的应用,SELF-INSTRUCT方法被开发出来,通过使用强大的LLM生成合成的编码指令,并利用这些指令对较弱的学生模型进行微调,以从强大的教师模型中提取知识。XZd品论天涯网

然而,SELF-INSTRUCT在提高LLM的指令遵循能力时,仍然依赖于狭窄范围的预定义任务或启发式方法。XZd品论天涯网

为了解决这一问题,UIUC和清华的研究人员提出了Magicoder,其中采用的OSS-INSTRUCT方法,旨在减轻LLM固有的偏见,通过直接学习开源代码释放其创造高质量和创意编码指令的潜力。XZd品论天涯网

OSS-INSTRUCT通过从开源中搜集的随机代码片段获得灵感,自动生成新的编码问题。借助于不同的种子代码片段,OSS-INSTRUCT能够直接产生多样、真实和可控的编码指令数据。XZd品论天涯网

如下图所示,在这个例子中,LLM从两个不同函数的不完整代码片段中获取灵感,成功地将它们关联起来,并构建出一个现实的机器学习问题。XZd品论天涯网

图片XZd品论天涯网

由于OSS-INSTRUCT与现有的数据生成方法是正交的,OSS-INSTRUCT可以被同时结合使用,进一步推动模型在编码任务中的能力。XZd品论天涯网

为什么OSS-INSTRUCT如此神奇?XZd品论天涯网

OSS-INSTRUCT的工作方式是通过对LLM(例如ChatGPT)进行提示,然后根据从互联网搜集的一些种子代码片段(例如来自GitHub)生成编程问题及其解决方案。XZd品论天涯网

一方面,种子片段提供了生成的可控性;XZd品论天涯网

另一方面,OSS-INSTRUCT加强了LLM创建编程问题的多样化,更符合真实的编程场景。XZd品论天涯网

我们可以从以下几个指标中一探究竟:XZd品论天涯网

1. 类别平衡XZd品论天涯网

如下图所示,通过计算OSS-INSTRUCT中每个样本的嵌入与这10个类别之间的余弦相似性,可以看出其在不同类别之间表现出了多样性和平衡。XZd品论天涯网

图片XZd品论天涯网

2. 长度分布XZd品论天涯网

下图展示生成问题和解决方案的长度分布,良好的平衡性让OSS-INSTRUCT更贴合实际应用场景。XZd品论天涯网

图片XZd品论天涯网

3. 与HumanEval的相似性计算XZd品论天涯网

下图展示了与HumanEval样本的余弦相似性。XZd品论天涯网

可以看出,OSS--INSTRUCT在所有研究的数据生成技术中表现出最低的平均相似度,这说明OSS--INSTRUCT生成的数据是最富有多样性的。XZd品论天涯网

图片XZd品论天涯网

但是,既然OSS-INSTRUCT获取到的种子片段来自于开源代码,为什么不直接在这些开源代码上进行微调呢?XZd品论天涯网

为了回答这个问题,研究人员遵循CodeSearchNet,使用基础的CODELLAMA-PYTHON-7B对配对数据进行了2个时期的微调,遵循相同训练设置。XZd品论天涯网

对比结果如下表,在75,000个配对注释-函数数据上,微调甚至使基础模型恶化,而OSS-INSTRUCT有助于引入实质性的提升。XZd品论天涯网

研究人员推测,这种恶化可能是由这些配对数据固有的大量噪声和不一致性导致的。XZd品论天涯网

这进一步表明,数据的真实性对于代码指令调整至关重要,而非格式。XZd品论天涯网

该结果还凸显了OSS-INSTRUCT的优越性,可以将这些松散相关的代码片段转化为语义一致的指令调整数据。XZd品论天涯网

图片XZd品论天涯网

Magicoder表现评估XZd品论天涯网

研究团队首先构建了使用OSS-INSTRUCT进行训练的Magicoder系列,同时进一步组合使用OSS-INSTRUCT和Evol--INSTRUCT构建了MagicoderS系列,并在两个系列上都进行了测试。XZd品论天涯网

代码生成基准使用的是HumanEval和MBPP,这是目前两个最广泛使用的基准。这些基准中的每个任务都包括一个任务描述(例如docstring)作为提示,然后让LLMs生成相应的代码。其正确性由少量测试用例进行检查。XZd品论天涯网

为了更严格的评估,研究人员还使用了由EvalPlus框架支持的HumanEval+和MBPP+以获取更多的测试。XZd品论天涯网

值得注意的是,MagicoderS-CL和MagicoderS-DS在HumanEval+上的表现都优于只有7B参数的ChatGPT。XZd品论天涯网

图片XZd品论天涯网

让我们具体看下Magicoder的表现:XZd品论天涯网

1. Python语言XZd品论天涯网

我们首先可以观察到Magicoder-CL相在HumanEval和HumanEval+上相对于CODELLAMA-PYTHON-34B有了实质性的改进。XZd品论天涯网

MagicoderS-CL在HumanEval+上优于ChatGPT和所有其他开源模型。XZd品论天涯网

此外,尽管在HumanEval上得分略低于WizardCoder-CL-34B和ChatGPT,但在更严格的HumanEval+数据集上超过了它们,这表明MagicoderS-CL可能生成更稳健的代码。XZd品论天涯网

图片XZd品论天涯网

2. 其他编程语言XZd品论天涯网

在除了Python之外的语言对比中,Magicoder-CL在所有研究过的编程语言中都大幅超过了基础的CODELLAMA-PYTHON-7B。XZd品论天涯网

此外,MagicoderS-CL在所有编程语言上都进一步改进了Magicoder-CL,仅使用7B参数就实现了与WizardCoder-CL-34B相当的性能。XZd品论天涯网

值得注意的是,Magicoder-CL仅使用非常有限的多语言数据进行训练,但仍然优于其他具有相似甚至更大规模的LLMs。这意味着LLMs可以从数据中学习超出其格式的知识。XZd品论天涯网

图片XZd品论天涯网

3. 数据科学库XZd品论天涯网

最后,针对7个热门Python数据科学库的1,000个独特的数据科学编码问题(DS-1000dataset),研究人员也进行了单元测试,旨在评估LLMs在实际用例中的表现。XZd品论天涯网

从表中可以看出,Magicoder-CL-7B已经在所有评估的基线中表现出色,包括最先进的WizardCoder-SC-15B,改善了8.3个百分点。XZd品论天涯网

虽然Magicoder还不够完美,但作者认为,通过公开分享所有的数据和代码细节,会有越来越多的先进代码模型出现。XZd品论天涯网

图片XZd品论天涯网

让我们也拭目以待。XZd品论天涯网

参考资料:XZd品论天涯网

https://arxiv.org/abs/2312.02120XZd品论天涯网

本网除标明“PLTYW原创”的文章外,其它文章均为转载或者爬虫(PBot)抓取; 本文只代表作者个人观点,不代表本站观点,仅供大家学习参考。本网站属非谋利性质,旨在传播马克思主义和共产主义历史文献和参考资料。凡刊登的著作文献侵犯了作者、译者或版权持有人权益的,可来信联系本站删除。 本站邮箱[email protected]

相关文章