150亿参数、一次通过率超60%,华为代码能力超GPT3.5的大模型来了
随着大模型成为 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 性能。
标签:
为您推荐
广告
- 150亿参数、一次通过率超60%,华为代码能力超GPT3.5的大模型来了
- 两岸青少年“创未来”科普夏令营在福州开营
- 渔网“接上”互联网 致富插上“金翅膀”
- 科创板两融余额1067.24亿元 较上一日环比减少2.82亿元
- 太平中债1-3年政策性金融债C基金暂停大额申购
- “投行+投资”模式下 券商不断加大另类投资业务力度
- 暗黑破坏神2重制版怎么给装备打孔(暗黑破坏神2装备打孔教程)
- 新发展理念的毕节实践|黔西市新仁乡人大主席、化屋村党支部书记许蕾:努力把化屋村建设成为全国乡村振兴新典范
- GDP十强城市半年报:长三角占四席,上海重回首位,南京守住第十
- 招牌爆射!德佩世界波破门,马竞1-0领先曼城!
- 变异的扭转书自己做合算吗 变异的扭转书有什么用
- 甬舟进入防台应急响应 多条航线停航部分海岛疏客4800余人
- 女方买婚房要注意什么
- 神马电力:上半年净利润5084.04万元,同比增长158.27%
- 受降雨影响,天津滨海机场取消航班42架次
- 广州:将尽快推出有关政策措施 满足刚性和改善性住房需求
- 《最终幻想14》新资料片曝光:吉田直树透露新资料片将在他51岁时发售
- ApeCoin发起新提案AIP-242拟创建“财务工作组”
- 福建省直机关各级党组织打赢“杜苏芮”台风防御战
- 瞰汉中|古韵悠悠展新风
- 1新常态下的弱复苏—2023年下半年房地产市场报告丨智库
- 2单向离合器工作原理3d动画 汽车离合器的工作原理是什么
- 3火爆!国家德比没有友谊赛:半场4黄3人受伤 恶犯引发17人冲突
- 4非必要不外出、必要时地铁公交可停运……北京启动防汛红色预警响应,9条措施→
- 5默认网关是多少 默认网关怎么设置 默认网关作用是什么?如何设置默认网关?
- 6热爱永不缺席!横渡钱塘江延期了,但杭州这些年轻人今天玩起了泳池横渡
- 72023年7月29日湖南省二乙二醇丁醚价格最新行情预测
- 8快运通物流品牌介绍_快运通物流
- 92018感动中国颁奖词 2018感动中国颁奖词及事迹
- 10张家界旅游攻略必玩的景点(QQ16番麻将怎么玩)
广告
- 哈尔滨工业大学(深圳)为广东和平县合水村发展引入源头活水
- 股票行情快报:水晶光电(002273)7月28日主力资金净买入3764.37万元
- 吉林通化“四个”行动打造良好营商环境
- 卷发器的用法大全(卷发器的用法)
- 十二生肖婚姻相配,十二生肖男女婚配
- 移远通信:英伟达是公司的生态合作伙伴
- 【夏季行动·平安守护】小案大事!乌当公安成功侦破系列入室盗窃案
- 以新兴产业为支点 泛珠重点项目按下“加速键”
- 央行:上半年人民币贷款增加15.73万亿元;房地产贷款增速回落,但住户消费贷款增速回升
- 万达商业:已完成DALWAN 6.875 07/23/23美元债兑付
- 白鲨针布举办走进东纯兴集团技术交流会
- 黄白玉老玉
- “难上加难”双面侧柱碰试验 比亚迪CTB技术挑战成功
- 振华风光副总唐拓在单位的职工大学就读?这是什么文凭?
- 国力股份(688103.SH):在新能源汽车领域公司毛利率未发生较大波动
- 戴尔n4110一装AMD驱动蓝屏如何解决
- 博通芯片疯了吧 !这行情还能暴涨十几倍!
- 港股内房股集体上扬 龙湖集团涨超10%
- 南山集团5亿元中期票据将于8月5日付息1835万元
- 《万卷风雅集》正式开播!和万卷游学团重走古昔路