150亿参数、一次通过率超60%,华为代码能力超GPT3.5的大模型来了

简介: 150亿参数、一次通过率超60%,华为代码能力超GPT3.5的大模型来了

这次,华为代码生成大模型盘古 Coder2 采用了一种类似于 RLHF(基于人类反馈的强化学习)的框架,相较前代实现了更高的一次生成通过率。

随着大模型成为 AI 开发新范式,将大语言模型集成至编程领域、完成代码生成与补全任务成为重要趋势之一。业界出现了一些引人瞩目的代码大模型,比如 OpenAI 的 CodeX、谷歌 DeepMind 的 AlphaCode、HuggingFace 的 StarCoder 等等。


在国内,去年 7 月底,华为诺亚方舟实验室语音语义实验室联合华为云 PaaS 技术创新实验室推出了其代码大模型 PanGu-Coder。与 Codex 和 AlphaCode 相比,该模型在代码生成的一次通过率(PASS@1)指标上大幅超越同等参数规模的模型,甚至优于规模更大的模型。除了英文外,PanGu-Coder 在中文上表现出色。


PanGu-Coder 模型大小和配置。


根据对 PanGu-Coder 的相关内测表现,它不仅熟悉常见算法,而且能熟练地使用各种 API,求解高等数学问题也不在话下。


一年过去了,PanGu-Coder2 终于来了,论文已在 arXiv 上提交。此次华为云、中国科学院和北京大学的研究者联合带来了更强大的代码生成大模型。



论文地址:https://arxiv.org/pdf/2307.14936.pdf


为了增强预训练代码大模型的生成性能,各种各样的方法被提出并应用,比如监督微调、指令调整、增强学习(RL)等。在本文中,针对现有基于 RL 方法所存在的问题并进一步挖掘代码大模型的潜力,研究者提出了一种全新的 RRTF 框架,它的全称为 Rank Responses to align Test&Teacher Feedback,成功地在代码大模型上应用自然语言 LLM 对齐技术


就其思路而言,RRTF 框架有别于以往的 CodeRL 和 RLTF,而是遵循了 RLHF(基于人类反馈的强化学习)的思路,使用排序响应(代替奖励模型的绝对值)作为反馈,实现了更简单和高效的训练方法。


研究者将 RRTF 应用于开源的 StarCoder 15B 上,并推出了一个在所有已发布代码大模型中实现最佳性能的 PanGu-Coder2。该模型在 OpenAI HumanEval 基准上实现了 62.20% 的 pass@1 指标,相较 PanGu-Coder 3 亿参数版本的 17.07% 有了显著提升



不仅如此,在 CoderEval 和 LeetCode 基准上的广泛评估结果表明,PanGu-Coder2 超越了以往所有的代码大模型


方法概览


RRTF 框架


研究者们提出了一个更简单但是功能强大的框架 RRTF,它将几种前沿技术无缝结合,包括指令调优、Evol-Instruct 方法以及强化学习。本次方法的核心理念是:利用测试信号和人类偏好共同作为反馈,对响应进行排序,从而引导模型生成更高质量的代码。


因此,受最近大型自然语言模型与指令微调取得的进展启发,研究者提出了这一新的训练范式,即 RRTF 框架。框架概览如下图所示。


图 1:RRTF 框架概览


RRTF 包括以下三个步骤:采样、排序和训练。


采样阶段:通过 Evol-Instruct 生成的 prompt 对响应性进行采样。

排序阶段:根据单元测试和启发式偏好对不同来源的响应进行排序。

训练阶段:使用 prompt 三元组和被选用 / 被拒绝响应的相应分数来训练代码大模型。


模型架构


基于具有 Multi-Query-AttentionShazeer 的 decoder-only Transformer,研究者训练出一个 15B 参数的 PanGu-Coder2。同时利用 FlashAttention 来减少计算量和内存占用。因此,该模型的最大长度可以扩展到 8192。下表 1 显示了该模型的详细超参数。



训练语料库


由于手动收集高质量语料库耗时耗力,研究者遵循 Evol-Instruct 技术来构建其训练语料库。具体来讲,他们基于 Alpaca 20K 数据集,并迭代进化该数据集中的编程问题,从而获得新的编程问题。prompt 如下图 2 所示。



针对这些问题,研究者从不同模型中采样了答案。总的来说,他们收集了一个包含 100K 个有答案编程问题的原始语料库,并把它称为指令和解答方案对(instruction and solution pairs)。然后利用一些手动定义的规则在原始语料库上进行数据预处理,将其规模缩小至 68K。


更重要的,为了防止数据泄露,研究者花大力气调查了其 68K 数据集与 HumanEval 基准之间的潜在重叠。经过细致的调查,他们确信其实验中无数据泄露,进一步验证了 PanGu-Coder2 的有效性。


实现细节


研究者选择 StarCoder 15B 作为基础模型,并以 512 的全局批大小对其进行 6 epoch 训练。图 3 展示了单个训练样本的格式。除了在 prompt 中添加一对三引号外,研究者只使用从响应中提取的代码片段进行训练。



实验及评估


研究团队进行了一系列的实验来评估 PanGu-Coder2 的性能。


性能


该研究将 PanGu-Coder2 与现有的代码大模型在 Python 代码生成方面进行了性能比较。下表 2 显示了在 HumanEval 基准上的比较结果。


在所有闭源模型中,PanGu-Coder2 排名第二。与 PaLM-Coder 和 LaMDA 等大模型相比,PanGu-Coder2 虽然规模较小,但性能却更好。值得注意的是,PanGu-Coder2 的表现优于 OpenAI 的 GPT-3.5,但与 GPT-4 仍有差距。



表 3 展示了贪婪解码的比较结果。在所有基准测试中,PanGuCoder2 都取得了最好的成绩。值得注意的是,PanGu-Coder2 不仅在 HumanEval 上超过了 WizardCoder 和 StarCoder,而且在 CoderEval 和 LeetCode 上也超过了这两个模型。



表 2 和表 3 的实验结果可以得出以下结论:


在开源模型中,PanGu-Coder2 在 HumanEval 上以 61.64% pass@1 达到了 SOTA。

尽管 PanGu-Coder2 的规模较小,但其性能却优于 PaLM-Coder 和 LaMDA 等更大规模的模型。

PanGu-Coder2 是实验中唯一同时在 HumanEval、CoderEval 和 LeetCode 上都达到最佳性能的模型。


如下图 4 所示,整体准确率随着数据集大小的增加而增加:



在训练计算量方面,无论数据集大小如何,准确率可能会在训练开始时急剧下降或持平。大约 2 个 epoch 后,训练曲线变得更加稳定,准确率随着损失的减少而持续上升。3 个 epoch 后,准确率达到最佳,而 4 个 epoch 后,准确率变得更加稳定,显示出收敛的迹象。这表明,PanGu-Coder2 模型大约需要 3-4 个 epoch 才能完全捕捉到数据集中的知识,而之后的训练步骤对提高模型能力的帮助可能微乎其微。


用例研究


为了对模型进行实证研究并分析未来的工作方向,该研究比较和分析了三个模型的成功和失败案例:基础模型 StarCoder、指令调整模型 WizardCoder 和 PanGu-Coder2 模型。下图 5 显示了三种模型在贪婪解码(greedy decoding)和核采样(nucleus sampling)方面的异同:



图 5 还表明 PanGu-Coder2 和 WizardCoder 可以互补:虽然 PanGu-Coder2 解决了大部分问题,并且其中一些问题是 WizardCoder 无法解决的,但也有一些问题只能通过 WizardCoder 解决。此外,还有一些问题即使采样 200 次,这三个模型也都无法解决。


该研究选择 StarCoder、WizardCoder 和 PanGu-Coder2 生成的几个具有代表性的示例代码作为案例进行研究,以对 PanGu-Coder2 的优缺点进行评估。


如下图 6 所示,PanGu-Coder2 能够熟练地理解编程问题的逻辑,而 WizardCoder 和 StarCoder 在这方面有所欠缺。这一观察结果表明,PanGu-Coder2 通过该研究提出的排名反馈,有效地在编程问题陈述和代码解决方案之间建立了细致的映射。



如下图 7 所示,在某些情况下,PanGu-Coder2 和 StarCoder 的性能差于 WizardCoder,WizardCoder 可能受益于使用大量丰富注释代码指令进行训练。在某种程度上,这一观察表明,引入注释数据可能会在训练过程中产生积极效果。



此外,下图 8 给出了一个复杂的编程挑战,StarCoder、WizardCoder 和 PanGu-Coder2 都给出了错误的代码解决方案。这一观察结果表明,目前代码大模型在处理复杂编程要求方面仍达不到人类的熟练程度,还有一些改进的空间。



推理优化


GPU 内存消耗和推理速度是模型实际部署和使用的关键因素,因此该研究使用 CTranslate2 和 GPTQ 两种量化技术来进行实验,研究模型推理的优化策略。下表 4 展示了使用不同量化技术优化的模型的 GPU 内存消耗、推理速度和 HumanEval 性能。



参考链接:

https://zhuanlan.zhihu.com/p/548457445


相关文章
|
1月前
|
数据采集 API 决策智能
华为诺亚联合中科大发布工具调用模型ToolACE,效果持平GPT-4获开源第一
 【10月更文挑战第10天】华为诺亚方舟实验室与中国科学技术大学合作推出ToolACE,一种自进化合成过程的工具调用模型。ToolACE通过多智能体交互和双重验证系统生成准确、复杂、多样化的工具学习数据,显著提升大型语言模型(LLM)的功能调用能力。实验结果显示,使用ToolACE数据训练的80亿参数模型性能媲美GPT-4,在伯克利功能调用排行榜上获得开源第一。
59 4
|
3月前
|
人工智能 自然语言处理
公理训练让LLM学会因果推理:6700万参数模型比肩万亿参数级GPT-4
【8月更文挑战第3天】新论文提出“公理训练”法,使仅有6700万参数的语言模型掌握因果推理,性能媲美万亿级GPT-4。研究通过大量合成数据示例教授模型因果公理,实现有效推理并泛化至复杂图结构。尽管面临合成数据需求大及复杂关系处理限制,此法仍为语言模型的因果理解开辟新途径。[链接: https://arxiv.org/pdf/2407.07612]
73 1
|
3月前
|
存储 人工智能 异构计算
大模型下HPE GPT解决问题之确保服务高效可靠如何解决
大模型下HPE GPT解决问题之确保服务高效可靠如何解决
33 0
|
3月前
|
JSON C# 数据格式
gpt-3.5-turbo与星火认知大模型v3.5回答对比
gpt-3.5-turbo与星火认知大模型v3.5回答对比
38 0
|
23天前
|
机器学习/深度学习 弹性计算 人工智能
大模型进阶微调篇(三):微调GPT2大模型实战
本文详细介绍了如何在普通个人电脑上微调GPT2大模型,包括环境配置、代码实现和技术要点。通过合理设置训练参数和优化代码,即使在无独显的设备上也能完成微调,耗时约14小时。文章还涵盖了GPT-2的简介、数据集处理、自定义进度条回调等内容,适合初学者参考。
151 6
|
1月前
|
机器学习/深度学习 测试技术
ACL杰出论文奖:GPT-4V暴露致命缺陷?JHU等发布首个多模态ToM 测试集,全面提升大模型心智能力
【10月更文挑战第6天】约翰斯·霍普金斯大学等机构提出了一项荣获ACL杰出论文奖的研究,旨在解决大模型在心智理论(ToM)上的不足。他们发布了首个MMToM-QA多模态ToM测试集,并提出BIP-ALM方法,从多模态数据中提取统一表示,结合语言模型进行贝叶斯逆规划,显著提升了模型的ToM能力。这一成果为机器与人类自然交互提供了新思路,尽管仍面临一些局限性和技术挑战。论文详情见:https://arxiv.org/abs/2401.08743。
47 6
|
2月前
|
数据可视化 Swift
小钢炮进化,MiniCPM 3.0 开源!4B参数超GPT3.5性能,无限长文本,超强RAG三件套!模型推理、微调实战来啦!
旗舰端侧模型面壁「小钢炮」系列进化为全新 MiniCPM 3.0 基座模型,再次以小博大,以 4B 参数,带来超越 GPT-3.5 的性能。并且,量化后仅 2GB 内存,端侧友好。
小钢炮进化,MiniCPM 3.0 开源!4B参数超GPT3.5性能,无限长文本,超强RAG三件套!模型推理、微调实战来啦!
|
2月前
|
数据采集 自然语言处理 监控
大模型微调使GPT3成为了可以聊天发布指令的ChatGPT
正是通过微调大模型使得GPT3成为了可以聊天发布指令的ChatGPT。聊天大模型在通用大模型的基础上加一层微调就实现人人能用的大模型,使得通用大模型的能力被更多人使用和了解。
55 4
大模型微调使GPT3成为了可以聊天发布指令的ChatGPT
|
1月前
|
开发工具 git
LLM-03 大模型 15分钟 FineTuning 微调 GPT2 模型 finetuning GPT微调实战 仅需6GB显存 单卡微调 数据 10MB数据集微调
LLM-03 大模型 15分钟 FineTuning 微调 GPT2 模型 finetuning GPT微调实战 仅需6GB显存 单卡微调 数据 10MB数据集微调
57 0
|
3月前
|
人工智能 API Python
Openai python调用gpt测试代码
这篇文章提供了使用OpenAI的Python库调用GPT-4模型进行聊天的测试代码示例,包括如何设置API密钥、发送消息并接收AI回复。

热门文章

最新文章