第五章 模子架构
在前述章节中已经对预训练数据的预备流程(第 4 章)举行了介绍。本章主 要讨论大语言模子的模子架构选择,主要围绕 Transformer 模子(第 5.1 节)、详细 设置(第 5.2 节)、主流架构(第 5.3 节)、长上下文模子(第 5.4 节)以及创新型 模子 5.5 节)等五个主要方面展开讨论。表 5.1 列举了一些典范的大语言模子的详细设置。
表 5.1 大语言模子架构设置表(L 表现层数,N 表现注意力头数,H 表现隐蔽状态的巨细)
模子
| 类别
| 巨细
| 归一化
| 位置编码
| 激活函数
| L
| N
| H
| GPT-3
| 因果
| 175B
| Pre Layer
| Learned
| GELU
| 96
| 96
| 12288
| PanGU-
| 因果
| 207B
| Pre Layer
| Learned
| GELU
| 64
| 128
| 16384
| OPT
| 因果
| 175B
| Pre Layer
| Learned
| ReLU
| 96
| 96
| 12288
| PaLM
| 因果
| 540B
| Pre Layer
| RoPE
| SwiGLU
| 118
| 48
| 18432
| BLOOM
| 因果
| 176B
| Pre Layer
| ALiBi
| GELU
| 70
| 112
| 14336
| MT-NLG
| 因果
| 530B
| -
| -
| -
| 105
| 128
| 20480
| Gopher
| 因果
| 280B
| Pre RMS
| Relative
| -
| 80
| 128
| 16384
| Chinchilla
| 因果
| 70B
| Pre RMS
| Relative
| -
| 80
| 64
| 8192
| Galactica
| 因果
| 120B
| Pre Layer
| Learned
| GELU
| 96
| 80
| 10240
| LaMDA
| 因果
| 137B
| -
| Relative
| GeGLU
| 64
| 128
| 8192
| Jurassic-1
| 因果
| 178B
| Pre Layer
| Learned
| GELU
| 76
| 96
| 13824
| LLaMA-2
| 因果
| 70B
| Pre RMS
| RoPE
| SwiGLU
| 80
| 64
| 8192
| Pythia
| 因果
| 12B
| Pre Layer
| RoPE
| GELU
| 36
| 40
| 5120
| Baichuan-2
| 因果
| 13B
| Pre RMS
| ALiBi
| SwiGLU
| 40
| 40
| 5120
| Qwen-1.5
| 因果
| 72B
| Pre RMS
| RoPE
| SwiGLU
| 80
| 64
| 8192
| InternLM-2
| 因果
| 20B
| Pre RMS
| RoPE
| SwiGLU
| 48
| 48
| 6144
| Falcon
| 因果
| 180B
| Pre Layer
| RoPE
| GELU
| 80
| 232
| 14848
| MPT
| 因果
| 30B
| Pre Layer
| ALiBi
| GELU
| 48
| 64
| 7168
| Mistral
| 因果
| 7B
| Pre RMS
| RoPE
| SwiGLU
| 32
| 32
| 4096
| Gemma
| 因果
| 7B
| Pre RMS
| RoPE
| GELU
| 28
| 16
| 3072
| DeepSeek
| 因果
| 67B
| Pre RMS
| RoPE
| SwiGLU
| 95
| 64
| 8192
| Yi
| 因果
| 34B
| Pre RMS
| RoPE
| SwiGLU
| 60
| 56
| 7168
| YuLan
| 因果
| 12B
| Pre RMS
| RoPE
| SwiGLU
| 40
| 38
| 4864
| GLM-130B
| 前缀
| 130B
| Post Deep
| RoPE
| GeGLU
| 70
| 96
| 12288
| T5
| 编-解
| 11B
| Pre RMS
| Relative
| ReLU
| 24
| 128
| 1024
| 5.1.Transformer 模子
当前主流的大语言模子都基于 Transformer 模子举行设计的。Transformer 是由 多层的多头自注意力(Multi-head Self-attention)模块堆叠而成的神经网络模子。原 始的 Transformer 模子由编码器和解码器两个部分构成,而这两个部分现实上可以 独立使用,例如基于编码器架构的 BERT 模子和解码器架构的 GPT 模子。 与 BERT 等早期的预训练语言模子相比,大语言模子的特点是使用了更长的向量 维度、更深的层数,进而包含了更大规模的模子参数,并主要使用解码器架构,对 于 Transformer 本身的结构与设置改变并不大。本部分内容将起首介绍 Transformer 模子的基本组成,包括底子的输入、多头自注意力模块和前置网络层;接着分别 介绍 Transformer 模子中的编码器和解码器模块。
5.1.1 输入编码
在 Transformer 模子中,输入的词元序列 ( = [,,. . . , ]) 起首经过一个 输入嵌入模块(Input Embedding Module)转化成词向量序列。详细来说,为了捕捉 词汇本身的语义信息,每个词元在输入嵌入模块中被映射成为一个可学习的、具有固定维度的词向量 ∈ 。由于 Transformer 的编码器结构本身无法辨认序列中元素的顺序,位置编码(Position Embedding, PE)被引入来表现序列中的位置信 息。给定一个词元 ,位置编码根据其在输入中的绝对位置分配一个固定长度的 嵌入向量 ∈ 。然后,每个词元对应的词向量和位置向量将直接相加,生成了 最终的输入嵌入序列 X = [,. . . , ],而且被传入到后续层中:
= + (5.1)
通过这种建模方法的表现,Transformer 模子可以使用位置编码 建模差别词元 的位置信息。由于差别词元的位置编码仅由其位置唯一决定,因此这种位置建模方式被称为绝对位置编码。尽管绝对位置编码能够肯定程度上建模位置信息,然而它只能局限于建模训练样本中出现的位置,无法建模训练数据中未出现过的位 置,因此极大地限定了它们处理长文本的能力。
5.1.2 多头自注意力机制
多头自注意力是 Transformer 模子的核心创新技能。相比于循环神经网络(Re- current Neural Network, RNN)和卷积神经网络(Convolutional Neural Network, CNN) 等传统神经网络,多头自注意力机制能够直接建模任意间隔的词元之间的交互关系。在卷积神经网络中,只有位于同一个卷积核的窗口中的词元可以直接举行交互,通过堆叠层数来实现远间隔词元间信息的交换。
多头自注意力机制通常由多个自注意力模块组成。在每个自注意力模块中,对 于输入的词元序列,将其映射为相应的查询(Query, Q)、键(Key, K)和值(Value,V) 三个矩阵。然后,对于每个查询,将和全部没有被掩盖的键之间计算点积。这 些点积值进一步除以 举行缩放(D是键对应的向量维度),被传入到 softmax函数中用于权重的计算。进一步,这些权重将作用于与键相干联的值,通过加权和的情势计算得到最终的输出。在数学上,上述过程可以表现为:
Q= , (5.2)
K= , (5.3)
V= , (5.4)
Attention( Q, K, V) = softmax( Q / ) V. (5.5)
与单头注意力相比,多头注意力机制的主要区别在于它使用了H组结构相同 但映射参数差别的自注意力模块。输入序列起首通过差别的权重矩阵被映射为一 组查询、键和值。每组查询、键和值的映射构成一个“头”,并独立地计算自注意 力的输出。末了,差别头的输出被拼接在一起,并通过一个权重矩阵 ∈ 举行映射,产生最终的输出。如下面的公式所示:
MHA = Concat(,. . . , ) (5.6)
= Attention(,, ). (5.7)
由上述内容可见,自注意力机制能够直接建模序列中任意两个位置之间的关 系,进而有用捕捉长程依赖关系,具有更强的序列建模能力。另一个主要的优势 是,自注意力的计算过程对于基于硬件的并行优化(如 GPU、TPU 等)非常友爱, 因此能够支持大规模参数的高效优化。
5.1.3 前馈网络层
为了学习复杂的函数关系和特性,Transformer 模子引入了一个前馈网络层
(Feed Forward Netwok, FFN),对于每个位置的隐蔽状态举行非线性变动和特性 提取。详细来说,给定输入 x,Transformer 中的前馈神经网络由两个线性变动和 一个非线性激活函数组成:
FFN(X) = |