大模型基础架构

发布时间:2025-04-25 10:38:57编辑:123阅读(22)

    大规模语言模型构建流程

    主要包含四个阶段:预训练、有监督微调、奖励建模、强化学习。这四个阶段都需要不同规模的数据集合以及不同类型的算法,会产出不同类型的模型,同时所需要的资源也有非常大的差别。

    image.png


    预训练(Pretraining)阶段,需要利用海量的训练数据,包括互联网网页、维基百科、书籍、GitHub、论文、问答网站等,构建包含数千亿甚至数万亿单词的具有多样性的内容。利用由数千块高性能GPU 和高速网络组成超级计算机,花费数十天完成深度神经网络参数训练,构建基础语言模型(Base Model)。基础大模型构建了长文本的建模能力,使得模型具有语言生成能力,根据输入的提示词(Prompt),模型可以生成文本补全句子。也有部分研究人员认为,语言模型建模过程中也隐含地构建了包括事实性知识(Factual Knowledge)和常识知识(Commonsense)在内的世界知识(World Knowledge)。

    由于训练过程需要消耗大量的计算资源,并很容易受到超参数影响,如何能够提升分布式计算效率并使得模型训练稳定收敛是本阶段的重点研究内容。


    有监督微调(Supervised Finetuning),也称为指令微调(Instruction Tuning),利用少量高质量数据集合,通过有监督训练可以使得模型具备完成问题回答、翻译、写作等能力。有监督微调的数据包含用户输入的提示词(Prompt)和对应的理想输出结果。用户输入包括问题、闲聊对话、任务指令等多种形式和任务。

    例如:提示词(Prompt):复旦大学有几个校区?

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

    利用这些有监督数据,使用与预训练阶段相同的语言模型训练算法,在基础语言模型基础上再进行训练,从而得到有监督微调模型(Supervised Finetuning,SFT 模型)。经过训练的 SFT 模型具备了初步的指令理解能力和上下文理解能力,能够完成开放领域问题、阅读理解、翻译、生成代码等能力,也具备了一定的对未知任务的泛化能力。由于有监督微调阶段的所需的训练语料数量较少,SFT 模型的训练过程并不需要消耗非常大量的计算。根据模型的大小和训练数据量,通常需要数十块 GPU,花费数天时间完成训练。

    当前的一些研究表明有监督微调阶段数据选择对 SFT 模型效果有非常大的影响[47],因此如何构造少量并且高质量的训练数据是本阶段有监督微调阶段的研究重点。


    奖励建模(Reward Modeling)阶段,目标是构建一个文本质量对比模型,对于同一个提示词,SFT模型给出的多个不同输出结果的质量进行排序。奖励模型(RM 模型)可以通过二分类模型,对输入的两个结果之间的优劣进行判断。RM 模型与基础语言模型和 SFT 模型不同,RM 模型本身并不能单独提供给用户使用。奖励模型的训练通常和 SFT 模型一样,使用数十块GPU,通过几天时间完成训练。由于 RM 模型的准确率对于强化学习阶段的效果有着至关重要的影响,因此对于该模型的训练通常需要大规模的训练数据。Andrej Karpathy 在报告中指出,该部分需要百万量级的对比数据标注,而且其中很多标注需要花费非常长的时间才能完成。下面例子,给出了 InstructGPT 系统中奖励模型训练样本标注示例。可以看到,示例中文本表达都较为流畅,标注其质量排序需要制定非常详细的规范,标注人员也需要非常认真地对标规范内容进行标注,需要消耗大量的人力,同时如何保持众包标注人员之间的一致性,也是奖励建模阶段需要解决的难点问题之一。此外奖励模型的泛化能力边界也是本阶段需要重点研究的另一个问题。如果 RM 模型的目标是针对所有提示词系统所生成输出都能够高质量的进行判断,该问题所面临的难度在某种程度上与文本生成等价,因此如何限定 RM 模型应用的泛化边界也是本阶段难点问题。

    标注数据:

    A 美国的一个研究小组发现鹦鹉能够模仿人类语言,而且一些鹦鹉甚至能够以与人类相同的方式做到这一点。该小组研究了鹦鹉在自然环境中所发出的声音,并发现它们以惊人的方式使用舌头和喙。

    B 一组来自耶鲁大学和加利福尼亚大学戴维斯分校的研究人员研究了不同种类鹦鹉的鸣叫模式。他们发现鹦鹉喜欢模仿人类语言,并且能够产生各种声音,如口哨声、尖叫声和其他类型的鸣叫。

    C 鹦鹉被发现能够理解数字。研究人员发现鹦鹉能够理解高达六个数字。在一系列实验中,鹦鹉能够识别杯子下的食物数量。

    D 目前的研究表明,鹦鹉看到和听到的东西与人类不同。虽然人类看到彩虹的颜色,但鹦鹉只能看到红色和绿色。鹦鹉还能看到紫外线,这对人类来说是看不见的。许多鸟类都有这种看到紫外线的能力。

    E 科学家发现绿翅鹦鹉能够分辨出两个相同但顺序不同的声音。这一点很重要,因为绿翅鹦鹉以模仿声音而闻名。这项研究表明它们能够理解声音之间的差异。


    强化学习(Reinforcement Learning)阶段,根据数十万用户给出的提示词,利用在前一阶段训练的 RM 模型,给出 SFT 模型对用户提示词补全结果的质量评估,并与语言模型建模目标综合得到更好的效果。该阶段所使用的提示词数量与有监督微调阶段类似,数量在十万量级,并且不需要人工提前给出该提示词所对应的理想回复。使用强化学习,在 SFT 模型基础上调整参数,使得最终生成的文本可以获得更高的奖励(Reward)。该阶段所需要的计算量相较预训练阶段也少很多,通常也仅需要数十块 GPU,经过数天时间的即可完成训练。在模型参数量相同的情况下,强化学习可以得到相较于有监督微调好得多的效果。关于为什么强化学习相比有监督微调可以得到更好结果的问题,也没有完整和得到普遍共识的解释。此外强化学习也并不是没有问题的,它会使得基础模型的熵降低,从而减少了模型输出的多样性。在经过强化学习方法训练完成后的 RL 模型,就是最终提供给用户使用具有理解用户指令和上下文的类 ChatGPT 系统。由于强化学习方法稳定性不高,并且超参数众多,使得模型收敛难度大,再叠加 RM 模型的准确率问题,使得在大规模语言模型如何能够有效应用强化学习非常困难。


    Transformer 结构

    Transformer 结构[48] 是由谷歌在 2017 年提出并首先应用于机器翻译的神经网络模型架构。机器翻译的目标是从源语言(Source Language)转换到目标语言(Target Language)。Transformer 结构完全通过注意力机制完成对源语言序列和目标语言序列全局依赖的建模。当前几乎全部大语言模型都是基于 Transformer 结构,本节以应用于机器翻译的基于 Transformer 的编码器和解码器介绍该模型。基于 Transformer 的编码器和解码器结构如图2.1所示,左侧和右侧分别对应着编码器(Encoder)和解码器(Decoder)结构。它们均由若干个基本的 Transformer 块(Block)组成(对应着图中的灰色框)。语义抽象过程中,主要涉及到如下几个模块:

    注意力层:使用多头注意力(Multi-Head Attention)机制整合上下文语义,它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构,从而更好地解决文本的长程依赖。

    位置感知前馈层(Position-wise FFN):通过全连接层对输入文本序列中的每个单词表示进行更复杂的变换。

    残差连接:对应图中的 Add 部分。它是一条分别作用在上述两个子层当中的直连通路,被用于连接它们的输入与输出。从而使得信息流动更加高效,有利于模型的优化。

    层归一化:对应图中的 Norm 部分。作用于上述两个子层的输出表示序列中,对表示序列进行层归一化操作,同样起到稳定优化的作用。

    image.png

    嵌入表示层

    对于输入文本序列,首先通过输入嵌入层(Input Embedding)将每个单词转换为其相对应的向量表示。通常,直接对每个单词创建一个向量表示。由于 Transformer 结构不再使用基于循环的方式建模文本输入,序列中不再有任何信息能够提示模型单词之间的相对位置关系。在送入编码器端建模其上下文语义之前,一个非常重要的操作是在词嵌入中加入位置编码(Positional Encoding)这一特征。具体来说,序列中每一个单词所在的位置都对应一个向量。这一向量会与单词表示对

    应相加并送入到后续模块中做进一步处理。在训练的过程当中,模型会自动地学习到如何利用这部分位置信息。


    注意力层

    自注意力(Self-Attention)操作是基于 Transformer 的机器翻译模型的基本操作,在源语言的编码和目标语言的生成中频繁地被使用以建模源语言、目标语言任意两个单词之间的依赖关系。为了实现对上下文语义依赖的建模,进一步引入在自注意力机制中涉及到的三个元素:查询 qi(Query),键 ki(Key),值 vi(Value)。在编码输入序列中每一个单词的表示过程中,这三个元素用于计算上下文单词所对应的权重得分。直观地说,这些权重反映了在编码当前单词的表示时,对于上下文不同部分所需要的关注程度。


    前馈层

    前馈层接受自注意力子层的输出作为输入,并通过一个带有 Relu 激活函数的两层全连接网络对输入进行更加复杂的非线性变换。实验证明,这一非线性变换会对模型最终的性能产生十分重要的影响。实验结果表明,增大前馈子层隐状态的维度有利于提升最终翻译结果的质量,因此,前馈子层隐状态的维度一般比自注意力子层要大。


    残差连接与层归一化

    由 Transformer 结构组成的网络结构通常都是非常庞大。编码器和解码器均由很多层基本的Transformer 块组成,每一层当中都包含复杂的非线性映射,这就导致模型的训练比较困难。因此,研究者们在 Transformer 块中进一步引入了残差连接与层归一化技术以进一步提升训练的稳定性。具体来说,残差连接主要是指使用一条直连通道直接将对应子层的输入连接到输出上去,从而避免由于网络过深在优化过程中潜在的梯度消失问题。层归一化技术可以有效地缓解优化过程中潜在的不稳定、收敛速度慢等问题。


    编码器和解码器结构

    编码器端可以较为容易实现。相比于编码器端,解码器端要更复杂一些。具体来说,解码器的每个 Transformer 块的第一个自注意力子层额外增加了注意力掩码,对应图中的掩码多头注意力(Masked Multi-Head Attention)部分。这主要是因为在

    翻译的过程中,编码器端主要用于编码源语言序列的信息,而这个序列是完全已知的,因而编码器仅需要考虑如何融合上下文语义信息即可。而解码端则负责生成目标语言序列,这一生成过程是自回归的,即对于每一个单词的生成过程,仅有当前单词之前的目标语言序列是可以被观测的,因此这一额外增加的掩码是用来掩盖后续的文本信息,以防模型在训练阶段直接看到后续的文本序列进而无法得到有效地训练。此外,解码器端还额外增加了一个多头交叉注意力(Multi-Head Cross-attention)模块,使用交叉注意力(Cross-attention)方法,同时接收来自编码器端的输出以及当前 Transformer 块的前一个掩码注意力层的输出。查询是通过解码器前一层的输出进行投影的,而键和值是使用编码器的输出进行投影的。它的作用是在翻译的过程当中,为了生成合理的目标语言序列需要观测待翻译的源语言序列是什么。基于上述的编码器和解码器结构,待翻译的源语言文本,首先经过编码器端的每个 Transformer 块对其上下文语义的层层抽象,最终输出每一个源语言单词上下文相关的表示。解码器端以自回归的方式生成目标语言文本,即在每个时间步 t,根据编码器端输出的源语言文本表示,以及前 t − 1 个时刻生成的目标语言文本,生成当前时刻的目标语言单词。


    基于 HuggingFace 的预训练语言模型实践

    HuggingFace 是一个开源自然语言处理软件库。其的目标是通过提供一套全面的工具、库和模型,使得自然语言处理技术对开发人员和研究人员更加易于使用。HuggingFace 最著名的贡献之一是 Transformer 库,基于此研究人员可以快速部署训练好的模型以及实现新的网络结构。除此之外,HuggingFace 还提供了 Dataset 库,可以非常方便地下载自然语言处理研究中最常使用的基准数据集。构建 BERT 模型,介绍基于 Huggingface 的 BERT 模型构建和使用方法。

    1. 数据集合准备

    常见的用于预训练语言模型的大规模数据集都可以在 Dataset 库中直接下载并加载。例如,如果使用维基百科的英文语料集合,可以直接通过如下代码完成数据获取:


关键字

上一篇: AI多模态- Janus-Pro-7B模型推理微调,融合实战2

下一篇: 没有了