ChatGPT量化分析(三) - 计算量分析
背景
ChatGPT出现后,惊人的效果完全颠覆了业界人员包括笔者的认知,抛开其模型细节层面的因素,已公开的训练方法,需要巨量的数据和计算资源,门槛非常高。本文基于公开资料,希望以量化方式分多篇介绍ChatGPT的分析结论,具体内容包含以下三篇,本文为计算量分析篇。
ChatGPT模型结构为Transformer,下面对计算细节拆解分析。
计算量分析
变量定义
Embedding
embedding层是lookup操作,输入是词序列,输出是词序列embedding,浮点操作可忽略。
Transformer Blocks
transformer block的计算图如下,每个transformer block主要包含四部分,既multi-head attention和mlp,以及两个add&norm。Multi-head Attention
multi-head attention结构如图:变量定义:
- 矩阵乘法算子中包括浮点乘法和加法,
的输入激活Tensor是 , 在第一个block是词本身embedding和position embedding之和,在其他block是上游block的输出, 的形状为 , 的形状为 ,因此计算量为 , 和 同 ; - Softmax算子的输入Tensor为
和 ,形状为 , 和 矩阵乘法的计算量为 , 操作的计算量为 , 操作计算量为 ,归一化操作计算量为 ,共 ; 的输入Tensor为 和 ,计算量为 ;- 每个head的计算量为
,共 个head,计算量为: ; 输入为激活 和参数 ,计算量为 。
综上,multi-head attention的总计算量为:
MLP
multi-head attention后面,接两层的全连接网络,计算逻辑为:
- 矩阵乘法算子
的输入激活Tensor 是multi-head attention输出,形状为 , 形状为 ,计算量为 ; 加法部分输入是激活 和参数 ,计算量为 ; 输入和输出都是 ,计算量简单计为 ; 的输入是激活 和参数 ,计算量为 ; 加法部分输入是激活 和参数 ,计算量为 ;
综上,mlp部分的总计算量为:
Add&Norm
两个add部分的计算量为
Transformer Blocks计算量
综上,每个transformer block的计算量为:
推理阶段
在推理阶段,计费量为:
训练阶段
在训练阶段,需要反向传播,反向传播计算量和前向一致。另外还有梯度更新,Adam需要更新两个累积值和参数,计算量简单计为