写点什么

如何构建一个大模型?看完你就知道了!

  • 2024-07-29
    北京
  • 本文字数:3361 字

    阅读完需:约 11 分钟

根据 OpenAI 联合创始人 Andrej Karpathy 在微软 Build 2023 大会上公开的信息,OpenAI 使用的大语言模型构建流程如图 1 所示,主要包含四个阶段:预训练、有监督微调、奖励建模和强化学习

这四个阶段都需要不同规模的数据集及不同类型的算法,会产出不同类型的模型,所需要的资源也有非常大的差别。 



图 1 OpenAI 使用的大语言模型构建流程

预训练(Pretraining)阶段需要利用海量的训练数据(数据来自互联网网页、维基百科、书籍、GitHub、论文、问答网站等),构建包含数千亿甚至数万亿单词的具有多样性的内容。

利用由数千块高性能 GPU 和高速网络组成的超级计算机,花费数十天完成深度神经网络参数训练,构建基础模型(Base Model)。

基础模型对长文本进行建模,使模型具有语言生成能力,根据输入的提示词,模型可以生成文本补全句子。

有一部分研究人员认为,语言模型建模过程中隐含地构建了包括事实性知识(Factual Knowledge)和常识知识(Commonsense)在内的世界知识(World Knowledge)。

根据文献 [1] 中的介绍,GPT-3 完成一次训练的总计算量是 3 640PFLOPS,按照 NVIDIA A100 80GB GPU 和平均利用率达到 50% 计算,需要花费近一个月的时间使用 1 000 块 GPU 完成。

文献[1] BROWN T B, MANN B, RYDER N, et al. Language models are few-shot learners[J]. arXiv preprint

arXiv:2005.14165, 2020.

由于 GPT-3 的训练采用 NVIDIA V100 32GB GPU,其实际计算成本远高于上述计算。

文献 [2] 介绍了参数量同样是 1 750 亿个的 OPT 模型,该模型训练使用 992 块 NVIDIA A100 80GB GPU,整体训练时间将近 2 个月。

文献[2] ZHANG S, ROLLER S, GOYAL N, et al. Opt: Open pre-trained transformer language models[J].

arXiv preprint arXiv:2205.01068, 2022.

BLOOM[32] 模型的参数量也是 1 750 亿个,该模型训练一共花费 3.5 个月,使用包含 384 块 NVIDIA A100 80GB GPU 集群完成。

可以看到,大语言模型的训练需要花费大量的计算资源和时间。LLaMA、Falcon、百川(Baichuan)等模型都属于基础语言模型。由于训练过程需要消耗大量的计算资源,并很容易受到超参数影响,因此,如何提升分布式计算效率并使模型训练稳定收敛是本阶段的研究重点。

有监督微调(Supervised Fine Tuning),也称为指令微调,利用少量高质量数据集,通过有监督训练使模型具备完成问题回答、翻译、写作等能力。

有监督微调的数据包含用户输入的提示词和对应的理想输出结果。用户输入包括问题、闲聊对话、任务指令等多种形式和任务。 

例如:提示词:复旦大学有几个校区?理想输出:复旦大学现有 4 个校区,分别是邯郸校区、新江湾校区、枫林校区和张江校区。其中邯郸校区是复旦大学的主校区,邯郸校区与新江湾校区都位于杨浦区,枫林校区 位于徐汇区,张江校区位于浦东新区。

利用这些有监督数据,使用与预训练阶段相同的语言模型训练算法,在基础模型的基础上进行训练,得到有监督微调模型(SFT 模型)。经过训练的 SFT 模型具备初步的指令理解能力和上下文理解能力,能够完成开放领域问答、阅读理解、翻译、生成代码等任务,也具备了一定的对未知任务的泛化能力。

由于有监督微调阶段所需的训练数据量较少,SFT 模型的训练过程并不需要消耗大量的计算资源。根据模型的大小和训练数据量,通常需要数十块 GPU,花费数天时间完成训练。SFT 模型具备了初步的任务完成能力,可以开放给用户使用,很多类 ChatGPT 的模型都属 于该类型,包括 Alpaca、Vicuna、MOSS、ChatGLM-6B 等。很多这类模型的效果非常好, 甚至在一些评测中达到了 ChatGPT 的 90% 的效果。当前的一些研究表明,有监督微调阶 段的数据选择对 SFT 模型效果有非常大的影响,因此构造少量并且高质量的训练数据是本阶段的研究重点。

奖励建模(Reward Modeling)阶段的目标是构建一个文本质量对比模型。对于同一个提示词,SFT 模型对给出的多个不同输出结果的质量进行排序。

奖励模型可以通过二分类模型,对输入的两个结果之间的优劣进行判断。奖励模型与基础模型和 SFT 模型不同,奖励模型本身并不能单独提供给用户使用。

奖励模型的训练通常和 SFT 模型一样,使用数十块 GPU,通过数天时间完成训练。

由于奖励模型的准确率对强化学习阶段的效果有至关重要的影响,因此通常需要大规模的训练数据对该模型进行训练。

Andrej Karpathy 在报告中指出,该部分需要百万量级的对比 数据标注,而且其中很多标注需要很长时间才能完成。图 2 给出了 InstructGPT 系统中奖励模型训练样本标注示例。



图 2 InstructGPT 系统中奖励模型训练样本标注示例

可以看到,示例中文本表达都较为流畅,标注其质量排序需要制定非常详细的规范,标注者也需要认真地基于标规范进行标注,需要消耗大量的人力。

同时,保持众包标注者之间的一致性,也是奖励建模阶段需要解决的难点问题之一。

此外,奖励模型的泛化能力 边界也是本阶段需要重点研究的一个问题。

如果奖励模型的目标是针对系统所有的输出都能够高质量地进行判断,那么该问题的难度在某种程度上与文本生成等价,因此限定奖励模型应用的泛化边界是本阶段需要解决的问题。 

强化学习(Reinforcement Learning,RL)阶段根据数十万用户给出的提示词,利用前一阶段训练的奖励模型,给出 SFT 模型对用户提示词补全结果的质量评估,并与语言模型建模目标综合得到更好的效果。

该阶段使用的提示词数量与有监督微调阶段类似,数量在十万量级,并且不需要人工提前给出该提示词所对应的理想回复。

使用强化学习,在 SFT 模型的基础上调整参数,使最终生成的文本可以获得更高的奖励(Reward)。该阶段需要的计算量相较预训练阶段也少很多,通常仅需要数十块 GPU,数天即可完成训练。

文献 [3] 给出了强化学习和有监督微调的对比,在模型参数量相同的情况下,强化学习可以得到相较于有监督微调好得多的效果。

文献[3] OUYANG L, WU J, JIANG X, et al. Training language models to follow instructions with human feedback[J]. Advances in Neural Information Processing Systems, 2022, 35: 27730-27744.

关于为什么强化学习相比有监督微调可以得到更好结果的问题,截至 2023 年 9 月还没有完整或得到普遍共识的解释。

Andrej Karpathy 也指出,强化学习并不是没有问题的,它会使基础模型的熵降低,从而减少模型输出的多样性。

经过强化学习方法训练后的 RL 模型,就是最终提供给用户使用、具有理解用户指令和上下文的类 ChatGPT 系统。

由于强化学习方法稳定性不高,并且超参数众多,使得模型收敛难度大,叠加奖励模型的准确率问题,使得在大语言模型上有效应用强化学习非常困难。


以上内容选自《大规模语言模型:从理论到实践(全彩)》一书,更多关于构建大语言模型的细节内容,可以阅读此书!

本书共分为 8 章,围绕大语言模型基础理论、预训练、指令理解和模型应用四个部分展开:

  • 第一部分介绍大语言模型的基础理论;

  • 第二部分介绍大语言模型的预训练,包括大语言模型预训练 数据和分布式训练;

  • 第三部分介绍大语言模型如何理解并服从人类指令,包括有监督微调和强化学习;

  • 第四部分介绍大语言模型应用和评估。

具体章节安排如图 3 所示。 



图 3 本书章节安排

第 2 章介绍大语言模型的基础理论知识,包括语言模型的定义、Transformer 结构、大语言 模型框架等内容,并以 LLaMA 使用的模型结构为例介绍代码实例。

第 3 章和第 4 章围绕大语言模型预训练阶段的主要研究内容开展介绍,包括模型分布式训练 中需要掌握的数据并行、流水线并行、模型并行及 ZeRO 系列优化方法。除此之外,还将介绍预 训练需要使用的数据分布和数据预处理方法,并以 DeepSpeed 为例介绍如何进行大语言模型预 训练。

第 5 章和第 6 章围绕大语言模型指令理解阶段的主要研究内容进行介绍,即如何在基础模型 的基础上利用有监督微调和强化学习方法,使模型理解指令并给出类人回答,包括 LoRA、Delta Tuning 等模型高效微调方法、有监督微调数据构造方法、强化学习基础、近端策略优化,并以 DeepSpeed-Chat 和 MOSS-RLHF 为例介绍如何训练类 ChatGPT 系统。

第 7 章和第 8 章围绕大语言模型的应用和评估开展介绍,包括将大语言模型与外部工具和知 识源进行连接的 LangChain 框架、大语言模型在智能代理及多模态大模型等方面的研究和应用情 况,以及传统的语言模型评估方式、针对大语言模型使用的各类评估方法。

↑限时五折优惠↑



用户头像

还未添加个人签名 2019-10-21 加入

还未添加个人简介

评论

发布
暂无评论
如何构建一个大模型?看完你就知道了!_博文视点Broadview_InfoQ写作社区