背景

ChatGPT出现后,惊人的效果完全颠覆了业界人员包括笔者的认知,抛开其模型细节层面的因素,已公开的训练方法,需要巨量的数据和计算资源,门槛非常高。本文基于公开资料,希望以量化方式分多篇介绍ChatGPT的分析结论,具体内容包含以下三篇,本文为模型参数分析篇。

模型结构

基于Transformer结构的encoder-decoder模型如图:

图片替换文本

encoder编码器将输入词序列转换成一个向量序列,decoder解码器生成输出词序列。解码时一个个词按顺序解码,在解码时,根据,生成。 ChatGPT的基础模型为Transformer,采用的是decoder-only结构。

参数量分析

输入词序列首先lookup词向量,得到,然后经过多个transformer block,参数分布在embedding层和transformer block中。

Embedding层

变量定义: 对于可训练的position embedding,其参数量为,一般在整体中占比不大,并且很多模型都为固定参数,因此将它忽略。 所以,embedding层的参数量为:

Transformer Blocks层

transformer block计算图如下,每个transformer block的参数分布在两部分中,既multi-head attention和mlp。

图片替换文本

Multi-head Attention

multi-head attention结构如图:

图片替换文本

变量定义: multi-head attention的计算逻辑为: 其中,。 所以,multi-head attention的参数量为:

MLP

multi-head attention后面,接两层的全连接网络,计算逻辑为: 其中,

所以,mlp的参数量为:

Transformer Block参数量

根据multi-head attention和mlp,得到每个transformer block的参数量为: 个transformer block,参数量为:

模型总参数量

最终,Transformer的总参数量为:

在GPT3中,,都与Transformer原始论文一致,上式也可写为:

根据GPT3 175B的模型参数配置,并假设,代入公式计算得到的参数量为174566473728,与175B非常接近。

图片替换文本

各个参数对模型大小的影响力度不同,这里需要特别注意的配置,如果,GPT3 175B大小的模型将会降低至87B,可见对模型参数量的影响力度非常大,但它对模型效果影响在论文中并没有提及。

各配置对总参数量的影响

对参数配置进行求导,得到: 我们使用GPT3 175B配置代入得到:

参数配置 梯度值
14175872
2359392
452984832
1812000768
603979776

可以看到,对参数量的影响最大,在GPT3中训练了不同规模的模型,主要通过调整这几个参数。

参考资料