山东网站优化
NEWS 新闻中心
当前位置:科技

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

发布时间:2023-08-03 12:16:14    作者:小编    点击量:

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

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

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

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

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

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

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

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

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

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

  由于手动收集高质量语料库耗时耗力,研究者遵循 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 与现有的代码大模型在 Python 代码生成方面进行了性能比较。下表 2 显示了在 HumanEval 基准上的比较结果。

  在训练计算量方面,无论数据集大小如何,准确率可能会在训练开始时急剧下降或持平。大约 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 次,这三个模型也都无法解决。

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

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

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

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

  「Llama 2 大模型算法与应用实践」——机器之心 AI 技术论坛来了!

  8月26日,与资深大模型技术专家一起相聚北京,拆解 Llama 2 算法与应用,动手搭建一个私有大模型。

  论坛为期 1 天,内容包括 Llama 2 算法解读、基于 Llama 2 开发中文大模型、Llama 2 案例解读和应用实践等。通过本场分享,你将系统了解到 Llama 2 背后的技术以及潜在的应用场景,为即将到来的「大模型安卓时代」做好准备。

返回列表

联系我们

contact us
济南网站优化  ICP备案编号:鲁ICP备19029271号
365整形网 方舟号