transformer参数量分析

进入大模型时代,基本上所有大模型都使用 decoder 部分,因此本文只分析 decoder 部分的参数量。 Transformer 的 decoder 每一层由 attention 和 mlp 组成,一般有 l 层。

Self-attention

Self-attention 层由 \(W_{Q}\)\(W_{K}\)\(W_{V}\) 和输出矩阵 \(W_{O}\) 和它们的偏置组成,权重矩阵的形状为 \([h,h]\),偏置形状为 \([h]\),则 self-attention 部分的参数量为 \(4h^2+4h\)

MLP

MLP 由 2 个线性层构成,第一个线性层将维度从 h 变为 4 h,第二个将维度由 4 h 变为 h,第一个权重矩阵形状为 \([h,4h]\),偏置为 \([4h]\),第二个形状为 \([4h,h]\),偏置为 \([h]\),则参数量为 \(8h^2+5h\)

Layer norm

在 self-attention 和 mlp 中都存在 layer norm,有 2 个可训练参数:缩放参数 \(\gamma\) 和平移参数 \(\beta\),形状都是 \([h]\),2 个 layer norm 的参数量为 4 h。

词嵌入

词嵌入矩阵的参数量和词表大小 V 有关,而且输入和输出一般公用一个矩阵,因此参数量为 \(Vh\)

位置编码

如果是可训练式的位置编码,则占据一定的参数量,否则不占参数量

总参数

综上所述,transformer 一个层的参数量为 \(12h^2+13h\),l 层就是 \(l(12h^2+13h)\),再加上词嵌入矩阵,总参数量为 \(l(12h^2+13h)+Vh\),h 较大时,可以忽略一次项,近似为 \(12lh^2\)

实际参数量 隐藏维度h 层数l 12lh^2
6.7B 4096 32 6,442,450,944
13.0B 5120 40 12,582,912,000
32.5B 6656 60 31,897,681,920
65.2B 8192 80 64,424,509,440

表来自 分析 transformer 模型的参数量、计算量、中间激活、KV cache ## 参考