图说GPT网络结构(参数量与计算量估计)

现在AI领域的主流模型几乎都是Transformer网络架构衍生而来。大热的LLM中的生成类模型很多都是来自于Transformer的变体,即decoder only架构。而GPT就是该类中的经典模型。尽管现在变体甚多,但大多没有根本性地改变其套路。

为了阐述方便,首先约定一些符号:

符号 含义
b Batch size
L Transformer layer层数
s Sequence length
n Attention head个数
h Hidden size,或embedding dim
d 每个head的hidden size,与前两者有关系 h = n d h = n d h=nd
V Vocabulary size
P 最大sequence length

在模型的优化时,我们经常需要一些信息,诸如特定配置的模型计算需要多少compute与memory资源,计算与数据传输大概需要多长时间等。这就要求我们对网络中的一些量(如参数量,计算量,内存使用量等)进行一些粗略估计。基于这些估计,还可以得到这些量之间的大致关系。如一个transformer layer的参数量约为 12 h 2 + 13 h 12 h ^ 2 + 13 h 12h2+13h,计算量约为 24 b s h 2 + 4 b h s 2 24 b s h^2 + 4 b h s^2 24bsh2+4bhs2。这意味着,在 h h h远大于 s s s的情况下,计算量与参数量大约是两倍关系。而Backward的计算量又约是Forward计算量的两倍(因需要对输入与权重都计算梯度)。由于transformer layer是网络中参数量(除embedding外)与计算量的主要贡献者。因此,计算量与除embedding外参数量之间有那个著名的公式 C ≈ 6 N C \approx 6 N C≈6N。

但是,诸如这些都是general的结论。实际使用时,我们会碰到各种网络变体,各种配置或各种跑法,另外还可能需要回答一些更细节具体的问题,比如KV Cache节省了多少计算量,需要额外占用多少memory,把某层分布式计算需要增加多少通信量,或者MQA/GQA相比传统的MHA可以节省多少memory等等。而只有了解了那些估计是怎么来的,才能够更加灵活地运用。

下面以经典的GPT2模型为例,在其网络结构上标注了各操作的shape,并进行参数量和计算量估计。

Prefill阶段:

Generation阶段:

相关推荐
武子康33 分钟前
大语言模型 10 - 从0开始训练GPT 0.25B参数量 补充知识之模型架构 MoE、ReLU、FFN、MixFFN
大数据·人工智能·gpt·ai·语言模型·自然语言处理
有梦想的攻城狮10 小时前
大语言模型与多模态模型比较
人工智能·语言模型·自然语言处理·llm·大语言模型
武子康16 小时前
大语言模型 09 - 从0开始训练GPT 0.25B参数量 补充知识之数据集 Pretrain SFT RLHF
人工智能·gpt·ai·语言模型·自然语言处理
一叶茶17 小时前
VsCode和AI的前端使用体验:分别使用了Copilot、通义灵码、iflyCode和Trae
前端·vscode·gpt·ai·chatgpt·copilot·deepseek
幸福回头19 小时前
ms-swift 代码推理数据集
llm·swift
亚里随笔19 小时前
AlphaEvolve:LLM驱动的算法进化革命与科学发现新范式
人工智能·算法·llm·大语言模型
sbc-study2 天前
GPT( Generative Pre-trained Transformer )模型:基于Transformer
gpt·深度学习·transformer
Code_流苏2 天前
《Python星球日记》 第69天:生成式模型(GPT 系列)
python·gpt·深度学习·机器学习·自然语言处理·transformer·生成式模型
水煮蛋不加蛋3 天前
RAG 赋能客服机器人:多轮对话与精准回复
人工智能·ai·机器人·大模型·llm·rag
字节旅行3 天前
大语言模型主流架构解析:从 Transformer 到 GPT、BERT
gpt·语言模型·transformer