随着ChatGPT的爆发出圈,势头从22月底持续到23年初。与以往的技术突破不同,这个大模型不仅引起了技术界的关注,也备受投资界的关注,工业和大众消费。它成为史上月活跃用户过亿速度最快的现象级应用,引发了全球科技巨头之间的人工智能竞争。
【资料图】
大模型的高智能离不开模型的大规模预训练,这需要强大的AI框架进行底层支撑。面对千亿参数的大模型,当前大模型研究如何让开发者和用户能够在分秒必争的情况下开发和弯道超车?让我们跟随大模型技术方案的拆解,来探究一下MindSpore AI框架的技术能力。
大规模预训练——GPT3和Peng Cheng.Pangu
2020年,OpenAI推出了远远超过同期所有预训练模型的杀手锏GPT3。凭借1750亿个参数和300B Token预训练,GPT3展示了非常强大的自然语言处理能力,包括:
文本生成:根据提示继续(完成)句子。情境学习: 遵循给定任务的几个示例,然后为新测试用例生成解决方案。世界知识:包括事实知识和常识。此时,与GPT3同等量级的大规模预训练语言模型在国内外仍然是一座难以逾越的大山。 2021年4月,基于MindSpore AI框架的多维自动混合并行能力,鹏程实验室牵头的联合科研团队训练出了业界首个2000亿级AI算力平台鹏程云脑II。参数,预训练的以中文为核心的生成语言模型鹏城。盘古。联合团队从开源开放数据集、常见爬取网页数据、电子书等中收集了近80TB的原始数据,构建了分布式集群进行大型语料预处理。通过数据清洗过滤、去重、质量评估等处理流程,联合团队构建了约1.1TB规模的高质量中文语料数据集,代币数量预计约250B。
在与GPT3相同数量的参数下,Peng Cheng.Pangu预训练模型的上下文学习和世界知识能力并不逊色于GPT3。
图1 鹏城.盘古模型架构
利用MindSpore AI框架的自动并行能力,开发者只需一行代码即可实现自动模型分割和分布式并行计算,无需大量复杂的设计和高效训练数千亿至万亿参数的模型在大集群上。关于MindSpore的自动并行能力,这里先不讨论。让我们继续讨论下一个技术要素。
必经之路:思维链——代码预训练
Chain of Thought(链式思维推理)是大型模型具备拟人对话能力的关键。 GPT3之后,思维链能力开始被认为是通过少镜头学习来激发的,而后续“让我们一步步思考”的零镜头提示进一步触发了这种能力。然而,此时的大型模型仍然仅限于在各种数据集上表现出薄弱的思维链能力。
直到代码数据预训练模型的出现,并融入到自然语言预训练模型中,大模型的思维联动能力跃上了一个新的台阶。下图是OpenAI自GPT3以来的演进路线图。左边的分支是大代码模型的不断演化,直到code-davinci-002整合了LM和Code训练,然后加入指令调优,最终诞生了我们熟悉的ChatGPT。
图2 ChatGPT演进路线
2022年9月,清华大学团队基于MindSpore 1.7开发了大型CodeGeeX代码预训练模型,并使用鹏城实验室大规模AI计算平台(鹏程云脑II)进行训练。 CodeGeeX的训练语料由两部分组成:第一部分是开源代码数据集The Pile和CodeParrot;第二部分是补充数据,直接从GitHub开源仓库爬取Python、Java、C++代码。整个代码语料库包含23种编程语言,总共1587亿个标识符(不包括填充符)。
在开发和训练过程中,清华大学与MindSpore团队深度合作,实现了一系列算子融合优化,包括单元素算子融合、层归一化算子融合、FastGelu与矩阵乘法融合、批量矩阵乘法等。与加法融合等,显着提高了训练速度。
发挥人类智慧——RLHF和PPO
ChatGPT 的惊人能力在于它能够以真正拟人化的方式进行对话,并生成更符合人类认知和价值观的内容。在大模型已经具备足够的世界知识、情境学习能力和思维链能力的情况下,虽然能够在各大NLP数据集中继续排名,但仍然存在一个问题——与人类表达习惯差异巨大。 ChatGPT的前身InstructGPT向我们展示了当人类反馈加入模型训练周期时可以实现的巨大变化,这就是RLHF(Reinforcement Learning from Human Feedback,即利用人类反馈来强化学习)。
RLHF技术主要分为以下四个步骤:
1)无监督预训练:预训练GPT-3等语言模型。
2)监督微调:生成一组提示,并对每个提示进行人工反馈。即由对组成的训练数据集。然后对预训练的模型进行微调。
3)训练“人类反馈”的奖励模型:构建奖励模型来对预训练的语言模型输出进行评分。首先,给定一组提示,机器会生成这些指令的答案,然后人类对其质量进行评分或排名。使用此数据集训练奖励模型,该模型输出任何对的质量得分。
4)训练基于奖励模型优化的强化学习策略。
下图是RLHF的核心PPO算法示意图:
图3 PPO算法逻辑
针对RLHF所需的强化学习算法,MindSpore已经布局,发布了MindSpore强化学习套件,为强化学习算法的编写提供了简洁的API抽象,将算法与部署、调度解耦;将强化学习算法转换为一系列编译后的计算图,然后由升腾MindSpore AI框架在升腾AI处理器、CPU和GPU上高效运行。目前MindSpore强化学习套件提供以下功能:
1)提供丰富的强化学习算法:目前支持15+种经典强化学习算法,涵盖Model-free/Model-based/Offline-RL/Imitation Learning、单智能体/多智能体、连续/离散动作空间、episodic /Non-Episodic等算法;访问常见的仿真环境,例如Mujoco、MPE、StarCraft2、DeepMind Control 等。
2)聚焦高性能训练:通过计算图和ReplayBuffer加速、异步环境并行和高性能域组件,支持算法平均吞吐率较主流框架提升120%。
3)支持大规模分式训练:通过将强化学习算法划分为多个数据流片段(Fragmented Dataflow Graphs)并映射到异构设备上高效执行,相比业界主流框架实现3~5倍的性能提升。
随着人工智能技术的发展,预训练的大模型成为世界科技强国竞争的焦点。预训练大模型率先在自然语言处理领域取得突破性进展,并迅速扩展到图像、视频、图形、语言等涉及跨媒体推理的各种任务以及大量商业应用,展现出巨大的发展潜力。过去几年,业界基于MindSpore发布了一系列有影响力的大型模型。下图展示了这些大型模型的训练时间线。
图4 MindSpore大模型流程
上图中的模型结构涉及到Transformer Encoder、Transformer Decoder、MOE,甚至还有Clip和Diffusion,都是基于MindSpore AI框架训练的。
MindSpore拥有丰富的并行能力,可以轻松完成4096卡集群、万亿参数规模的训练任务。因此支持国内多个领域首个大模型的训练。这些大模型涉及知识问答、知识检索、知识推理、阅读理解、文本/视觉/语音多模态、生物制药、遥感、代码生成等。
在梳理完ChatGPT的技术方案以及嵊泗MindSpore的大模型历史之后,我们将进一步扩展嵊泗MindSpore AI框架支持大量大模型的核心——分布式并行能力。
分布式训练
MindSpore支持当前主流的分布式训练范式,并开发了自动混合并行解决方案,提供以下关键技术:
1)数据切片预处理:将训练数据进行任意维度切片,然后导入设备进行训练;
2)算子级并行:前向网络中每个算子独立建模,每个算子可以有不同的分割策略;
3)优化器并行:将数据并行的参数副本拆分到多个设备上,以节省内存使用;
4)流水线并行性:将神经网络中的计算图划分为多个阶段(Stage),然后将阶段映射到不同的设备上,使得不同的设备可以计算神经网络的不同部分;
5)MOE并行性:将专门的计算任务分配给每个专家,不同的专家可以托管在不同的设备上;
6)多副本并行:在迭代步骤中,将一个训练批次拆分为多个微批次,同时进行模型并行通信和计算;
7)异构并行:将算子分配到异构硬件上执行,充分利用硬件资源,提高整体训练吞吐量;
8)正向重计算:正向计算时,不保存占用内存量大的中间输出结果,而是保存占用内存量小的输入;而反向计算时,根据输入重新计算正向输出,从而大大减少了正向计算累积的内存峰值;
9)全局内存复用:对计算图进行静态编译和优化,得到最优的内存复用策略;
与业界的深度学习框架或分布式并行框架相比,MindSpore在分布式关键技术方面支持能力广泛、自动化程度高、易用性好。它具有以下优点:
1)支持更多的模型类型(Transformer、超分辨率图像、推荐等),通用性更强,而业界的Megatron框架是为Transformer定制的框架;
2)相同算力和网络下,丰富的并行策略可以实现更大的计算通信比和更好的性能(相同硬件平台(V100、A100),性能超过威震天15%);
3)丰富的并行策略,无需手动分割,大模型开发调优效率优于业界;
分布式推理
与训练相比,推理对计算性能的要求更高。如何在集群上实现高效、快速的大模型推理是当前各种框架研究的重点和难点。为了解决上述问题,MindSpore提出了分布式推理+增量推理的解决方案,利用数据并行、模型并行、流水线并行等多维混合在大集群上进行推理。另外,由于类似Transformer Decoder的自回归语言模型,传统推理模式中存在大量重复计算。盛思MindSpore提供的增量推理能力可以消除这些重复计算,提升推理效率。
图5 增量推理流程图
如上图所示,第一阶段会利用完整的输入推理来保存当前单词(word)对应的向量。第二阶段,输入只是上一步推理得到的字符(单词),然后将当前一步推理得到的向量与保存的前序向量拼接起来作为本次的完整向量推理步骤,得到该步骤的输出单词(word)。重复以上两个阶段。
在现有的大模型开发过程中,用户经常发现SOTA基础模型代码不模块化,影响进一步的创新开发。不仅如此,用户在模型实现过程中往往找不到对应的SOTA模型和对应的下游任务,从而拉长了开发周期,影响了论文或项目的进度。为了解决这些痛点,基于嵊泗MindSpore的大型模型套件——MindSpore Transformers横空出世。
MindSpore Transformers 是一款基于MindSpore 的深度学习大型模型开发套件。其目标是构建大型模型训练、微调、评估、推理和部署的全流程开发套件。该套件涵盖了CV、NLP等AIGC热门领域,提供模型生命周期全流程快速开发能力,支持开箱即用,具有四大特点:
MindSpore Transformers 提供了非常丰富的预设模型,包括当前典型的预训练大模型(Bert、T5、VIT 等),涵盖了CV、NLP 等AIGC 的热门领域。同时该套件还包含丰富的下游微调任务,精度与SOTA基本一致。 MindSpore Transformers 提供了统一的开发范例。套件开放Trainer、Pipeline等功能接口,实现模块化、可配置开发,极大提高典型模型(尤其是基于Transformer结构的网络)的开发效率。在模型部署方面,该套件支持Ascend AI基础软硬件平台,并提供一键云部署接口。 MindSpore Transformers 提供了统一的外部接口。当前版本中,该套件与业界流行的Huggingface界面保持一致,用户可以一键切换,从而大大降低了代码迁移成本。 MindSpore Transformers套件天然包含了MindSpore AI框架的优势,包括多维并行(模型并行、管道并行、优化器并行、多副本并行等)、图计算融合等能力,可以有效提升内存模型训练期间的使用。效率和速度帮助用户快速训练数百亿、数千亿甚至万亿个模型。 图6 MindSpore Transformers架构图
从以上技术拆解和案例可以看出,MindSpore发展至今,已经具备了支持大型模型开发所需的全部核心技术。它还提供了一套高效、易用的大模型使能套件,形成了端到端使能的大模型开发能力。 MindSpore AI框架为助力大规模模型创新、繁荣AI产业生态铺平了信心之路。
图7 MindSpore原生支持大型模型的能力
欢迎使用MindSporeAI框架:
https://mindspore.cn/
https://gitee.com/mindspore/mindformers
引用:
[1]曾文,任晓,苏涛,等。关键词: 自动并行计算, 大规模自回归预训练中文语言模型arXiv 预印本arXiv:2104.12369
[2]https://yaofu.notion.site/GPT-3-5-360081d91ec245f29029d37b54573756
[3]https://huggingface.co/blog/rlhf
[4] https://aijishu.com/a/1060000000222564
[5]https://gitee.com/mindspore/mindformers/wikis/%E7%89%B9%E6%80%A7%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3