大模型演变:模型结构对比(一)
发布时间:2023-07-24 08:00
1、简介
近几年来,大语言模型蓬勃发展,除了之前我们已经介绍过的GPT、BERT等模型之外,也诞生了很多新的模型,这些模型在训练方式、网络结构以及计算实现等方面都存在一定的差异,本文主要对比三种常见的大语言模型结构。
2、背景
Transformer类模型的核心是注意力机制Attention和前馈网络FFN,网络结构如图1所示,由编码器和解码器两部分组成,目前大多语言类模型都基于此结构,例如我们比较熟知的GPT就是一个纯基于解码器的语言生成模型。关于Attention及Transformer的详细介绍可以参考我们之前的公众号文章“语言模型的顶梁柱:Transformer, GPT, BERT”以及“Transformer加速:稀疏注意力加速器调研”,本文不再赘述。
图1 Transformer网络结构图[1]
图片来源:https://arxiv.org/pdf/1706.03762.pdf
3、模型介绍
- 3.1 GPT3-175B
GPT3-175B模型共有96层,head数量为96,每个head的大小为128,共有175B的参数,OPT-175B的模型结构和大小与GPT3-175B基本相同,编码词汇表大小为50257。
3.1.1 Learned Position Embedding
在Attention计算中,输入是很多个tokens,这些tokens包含有位置信息,即词与词之间是有顺序关系的,但是Attention的计算是无向的,为了把位置信息传递给模型,需要对输入词的位置进行编码。将输入词的位置信息进行编码后直接传给Attention计算输入称为绝对编码,相对编码通过调整Attention的结构使其可以分辨输入词的不同位置。
GPT-3 175B和BERT模型一样,均采用learned Position Embedding这种绝对位置编码方式,对每个位置的词初始化一个随机的位置编码值,和词编码后的值相加之后,随着模型的训练得到更新。这种位置编码方式使用简单,但是对句子长度有一定的限制,且只能表示每个词在句子中的绝对位置信息。对于learned Position Embedding的详细介绍可以参考论文[2]。
- 3.1.2 Sparsity Attention
Attention是Transformer模型中的核心计算模块,主要变量有Query(Q)、Key(K)和Value(V),计算可以用如下公式表示。如果句子的长度是n,Attention计算的复杂度为O(n^2),当序列长度比较大时,Attention的计算就会很庞大,可以利用Attention的稀疏性来减小复杂度。
在论文[3]中,作者提出了Sparsity Transformer,如下图2所示,图2a是普通的Transformer Attention计算,深颜色表示参与计算,可以看到计算是稠密的,图2b是Strided Attention,每隔固定的时间步进行稀疏计算,图2c是Fixed Attention,固定某些KT的值进行稀疏计算,具体的细节可以参考论文[3]。
图2 Sparse Transformer Attention
图片来源:https://arxiv.org/pdf/1904.10509.pdf
在GPT-3模型中,一半的网络层(偶数层)采用原始的稠密注意力计算,另一半的网络层(奇数层)采用稀疏(fixed sparse)注意力计算,既减少了复杂度,同时也能保证原始模型的预测能力。
- 3.1.3 激活函数
FFN模块在FC1结束后需要使用激活函数,GPT3使用Gelu激活函数,OPT使用Relu激活函数,公式如下:
3.2 BLOOM-176B
BLOOM-176B相比GPT3-175B网络层数减小,共有70层,但网络宽度增加,共有112个head,每个head的大小仍然为128,编码词汇表大小为250880。
3.2.1 ALIBI Position Embedding
不同于GPT3,BLOOM采用ALIBI Embedding的编码方式,这种编码方式没有给词向量加入位置向量,而是用一个query和 key之间的距离计算出一个偏置值,再把这个偏置值和注意力得分矩阵相加来对其进行偏置,所以Position Embedding并不在Embedding层完成,而是在Attention中计算Q * KT值的时候加上去。
图3 ALIBI Embedding编码方式
图片来源:https://arxiv.org/pdf/2108.12409.pdf%5C
如图3所示,先进行Attention的Q乘KT计算之后得到注意力得分矩阵S,然后根据q和k的相对位置计算偏置值,对角线上的值由qi * ki计算得到,q和k的相对位置一样,因此偏置为0,第二行第一个值由q2 * k1计算得到,偏置为-1,以此类推,得到如图3右边所示的矩阵,然后再乘以一个系数m, 每个head的系数m不同,具体计算为公式如下,通过以上计算之后,得到矩阵和原来的注意里得分矩阵相加后进行后续的softmax等操作,具体的编码过程可以参考论文[4]。
- 3.2.2 Standard Attention
BLOOM的Attention计算与标准的的Transformer Attention计算一样,但是为了增加训练的稳定性,在Embedding层之后加了Layernorm操作,网络结构如图4所示。
图4 BLOOM网络结构
图片来源:https://arxiv.org/pdf/2211.05100.pdf
3.3 LLaMA
LLaMA模型是最近比较火热的模型之一,有不少模型比如百川模型,姜子牙模型等都基于LLaMA模型,LLaMA模型的网络结构配置细节见表1,编码词汇表大小均为32000。关于LLaMA的细节可以参看论文[6]和源码https://github.com/facebookresearch/llama[7]。
表1 LLaMA模型大小
表格来源:https://arxiv.org/pdf/2302.13971.pdf
3.3.1 Rotary position embedding
LLaMA模型中采用Rotary Position Embedding的位置编码方式,通过和Attention结合以绝对编码的形式实现相对编码。
我们知道Attention计算第一步的核心是Q和K的内积,对于qm和kn,如果经过位置编码后的f(q, m)和f(k, n)的内积只和qm和kn以及相对位置m-n有关,就实现了使用绝对编码达到相对编码的目的。可以借助复数实现这一目的,对于QK的内积,用复数计算可以表示为如下公式,即一个复数和另一个复数的共轭的乘积实部。
通过一些求解手段,得到二维时编码函数可以表示为如下公式,具体的求解过程和介绍可以参考论文[8],经过编码后当q和k的相对位置一样时,对应的旋转幅度一样。
通过以上分析,我们得到了q和k的位置编码函数,在计算QK内积时,首先分别对QK进行位置编码,编码矩阵如图5左所示,其中 ,d为hidden维度,另外可以发现矩阵Wm比较稀疏,可以将计算简化为位相乘,如图5右所示。
图5 Rotary Position Embedding编码计算
图片来源:https://arxiv.org/pdf/2104.09864.pdf
对位置编码后的qk进行内积得到相对位置编码的注意力得分矩阵S,再进行后续的softmax等操作完成Attention计算。
3.3.2 Standard Attention
LLaMA的Attention实现采用标准的Transformer Attention计算,用于计算的qk需要先经过Rotary Embedding,然后完成后续计算。
3.3.3 激活函数
LLaMA的激活函数采用SwiGlu的方式,对应计算如下:
值得注意的是,在LLaMA计算中,FFN中第一层的维度没有采用4*hidden_dim,而是近似2/3 * 4d大小。
4、总结
本文对比了三种大语言模型结构,差异主要体现在Position Embedding编码方式、Attention的计算以及激活函数等,其中GPT3和BLOOM模型参数量比较大,LLaMA模型相对较小,更易于在GPU上进行训练和推理部署。除了以上介绍的模型之外,目前还有很多比较新的模型,比如ChatGLM1/2、Llama2以及Falcon等,结构设计上也有很多值得关注的细节,由于篇幅有限放在后续文章中进行介绍,感兴趣的读者可以先行阅读论文和模型代码[9-11]。作者水平有限,文中若有任何纰漏之处,也请各位读者批评指正!谢谢!
5.参考文献
[1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30.
[2] onas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N. Dauphin. Convolutional sequence to sequence learning. arXiv preprint arXiv:1705.03122v2, 2017.
[3] Child R, Gray S, Radford A, et al. Generating long sequences with sparse transformers[J]. arXiv preprint arXiv:1904.10509, 2019.
[4] Press O, Smith N A, Lewis M. Train short, test long: Attention with linear biases enables input length extrapolation[J]. arXiv preprint arXiv:2108.12409, 2021.
[5] Scao T L, Fan A, Akiki C, et al. Bloom: A 176b-parameter open-access multilingual language model[J]. arXiv preprint arXiv:2211.05100, 2022.
[6] Touvron H, Lavril T, Izacard G, et al. Llama: Open and efficient foundation language models[J]. arXiv preprint arXiv:2302.13971, 2023.
[7] https://github.com/facebookresearch/llama.
[8] Su J, Lu Y, Pan S, et al. Roformer: Enhanced transformer with rotary position embedding[J]. arXiv preprint arXiv:2104.09864, 2021.
[9] https://huggingface.co/THUDM/chatglm-6b.
[10] Penedo G, Malartic Q, Hesslow D, et al. The RefinedWeb dataset for Falcon LLM: outperforming curated corpora with web data, and web data only[J]. arXiv preprint arXiv:2306.01116, 2023.
[11] Peng B, Alcaide E, Anthony Q, et al. RWKV: Reinventing RNNs for the Transformer Era[J]. arXiv preprint arXiv:2305.13048, 2023.
上一个: 多模态大语言模型:让AI看图说话
下一个: 大语言模型微调:定制自己的微调数据集
近期文章
2023-09-04
2023-08-07