本文重点参考了文章分析 transformer 模型的参数量、计算量、中间激活、KV cache,同时加入了自己一些理解。
01 前提假设
GPT 系列模型及大多数 LLM 使用的基座模型都是 Transformer Decoder,这里以 GPT1 模型为代表来分析大模型。
假设字典大小为 V,查询向量的维度为 d,隐藏层向量大小为 d,Transformer层的层数为 N,FFN 层隐藏层向量大小为 4d,模型输入为 batch size(B)、sequence length(S)。

GPT1 模型
02 模型参数量
(1)参数量是模型本身可以经过反向传播更新的模型参数数据量大小,模型参数量大小和模型输入无关。
(2)Transformer 从前往后依次需要经历 embedding、positional embedding、masked multi-head attention、residual and layer normlization、FFN、linear 层。
计算分别如下:
- embedding 层:Vd
- positional embedding:无可训练的参数
- masked multi-head attention:4dd+d(bias)。看代码 WQ、WK 和 WV 计算时无 bias,WO 计算时包含 bias;隐藏层维度和查询向量维度相同
- 两个 residual and layer normlization:4d
- FFN:8dd+5d(bias)
- 末尾 linear 层:使用 embedding 层的转置,无新增参数
考虑层数 N,那么模型参数量为 Vd+N*(12dd+10d)。当 d 数值较大且远大于 V 时,此时参数量近似为 12Ndd。
03 前向传递计算量
(1)最开始理解计算量=输入*模型参数,后来了解到这一点并不完全对,如 self-attention 计算过程中没有模型参数,但确实产生了计算量。
(2)补充 3 点矩阵计算背景知识:
- 可以进行计算前提条件:第一个矩阵列数等于第二个矩阵行数;
- 计算过程:第一个矩阵行数依次分别乘第二个矩阵列数;
- 计算量:对于 1*N 和 N*1 的矩阵计算,计算量为 N 次加法和 N 次乘法,共 2N。
(3)这里从输入依次从前向后总结计算量:这里忽略了计算量小头-包括 layer normalization 等。
- 输入计算得到 QKV:6BSdd
- QKT 计算:[B,num_heads,S,d_head] * [B,num_heads,d_head,S] = 2BSSd
- SV 计算:[B,num_heads,S,S] * [B,num_heads,S,d_head] =2BSSd
- PO 计算:[B,S,d] * [d,d] = 2BSdd
- FFN 第一层:[B,S,d] * [d,4d] = 8BSdd
- FFN 第二层:[B,S,4d] * [4d,d] = 8BSdd
- 隐藏层映射到词表:[B,S,d] * [d,V] = 2BSdV
考虑层数 N,那么计算量为 2BSdV+N*(24BSdd+4BSSd)。当 d 数值较大且远大于 V、S 时,此时参数两近似为 24NBSdd。
04 反向传播计算量
(1)反向传播的核心是利用梯度下降法求得梯度,然后优化器根据梯度更新模型参数。
(2)大模型的核心是矩阵计算,矩阵计算的反向传播需要对两个输入 X 和 W 分别求导,要经过两次矩阵计算。
以下述 self-attention 计算为例,对于 Q=X WQ 计算,前向传播只需计算一次,反向传播则需要对 X 和 WQ 分别求导,需要计算 2 次。因此,反向传播的计算量近似是前向传递计算量的 2 倍。

前向传递与对应反向传播
05模型参数量和计算量的关系
(1)训练神经网络的一次迭代分为三步:前向传递计算损失函数;反向传播计算梯度;优化器根据梯度更新模型参数。在实验中发现优化器更新的耗时几乎可以忽略。
(2)在一次迭代中,对于每个 token,参数量和计算量关系分别如下。
在前向传递中,上面提到参数量近似为 12Ndd,计算量近似为 24NBSdd,所以计算量/参数量=2BS。
所以,在一次前向传递中,对于每个 token,每个模型参数需要进行 2 次浮点数运算,即一次乘法法运算和一次加法运算。
在反向传播中,根据上述计算量分析,每个参数需要进行 4 次浮点数计算。
所以,如果在不考虑激活重计算情况下,对于每一个 token,需要进行 6 次浮点数计算。
如果考虑 flash attention 提出的激活重计算,需要进行一次额外的前向传递,那么在一次训练中,对于每一个 token,需要进行 8 次浮点数计算。
06 混合精度训练
(1)为什么在训练时使用混合精度训练的策略?
如果使用 float32 进行全参数训练,对硬件显存和存储要求极高;
如果使用 float16 进行全参数训练,则会出现浮点数精度限制导致的溢出风险,造成精度损失。
因此,大家一般会使用混合精度训练,即使用 float16 的模型参数进行前向传递和基于反向传播计算得到 float16 的梯度;
在优化器更新模型参数阶段,会使用 float32 的优化器状态、float32 的梯度、float32 的模型参数来更新模型参数。
(2)在混合精度训练中,具体的计算流程如下:
- 第一,float16 模型参数前向传递;
- 第二,反向传播得到 float16 的梯度;
- 第三,float16 的梯度转换成 float32 的梯度,与 float32 的优化器状态,更新 float32 模型参数;
- 第四,float32 的模型参数转换为 float16 的模型参数。

混合精度训练流程
07 模型训练显存
(1)背景知识:float16 数据类型的元素占 2 个 bytes,float32 数据类型的元素占 4 个 bytes。大模型在训练时通常使用混合精度训练策略,通常使用 AdamW 优化器。
(2)计算公式:模型训练显存 = 模型参数显存 + 梯度显存 + 优化器显存 + 中间激活显存
假如模型参数为 1,那么分别计算如下:
- 模型参数显存:float16 + float32 = 6
- 梯度显存:float32 = 4(假设float16梯度在经过优化器转换为float32精度时,会自动释放掉显存)
- 优化器显存:float32 + float32 = 8(对应优化器的一阶动量和二阶动量)
- 中间激活显存:下一节会详细介绍。flash attention、梯度检查点、混合精度训练等技术都可以降低中间激活显存占用,一般情况下中间激活显存占全部显存的 10%-30%。
(3)如果模型参数量为 N(float16),那么训练阶段的显存约为 18N bytes(不考虑中间激活)。
08 中间激活
(1)中间激活定义:为前向传递过程中计算得到的,并在后向传递过程中需要用到的所有张量。
不包括模型本身参数和优化器参数,而包括模型的中间输入和输出过程,如注意力机制中的键值矩阵。
(2)Transformer 中间激活计算:这里只考虑了占中间激活的大头。
对于 multi-head attention:
- QKV 的输入 x:2BSd
- QKT 计算的输入:4BSd
- softmax 的输入:2BSS*num_heads
- 执行 dropout 的 mask 矩阵:BSS*num_heads
- Score*V 的输入:2BSS*num_heads + 2BSd
- 输出矩阵:2BSd
- 执行 dropout 的 mask 矩阵:BSd
对于 FFN 层:
- 第一个线性层输入:2BSd
- 激活函数输入:8BSd
- 第二个线性层输入:8BSd
- 执行 dropout 的 mask 矩阵:BSd
两个 lyaer normalization 层的输入:4BSd
综上,对了 N 层的模型,中间激活占用的显存大小为 N*(34BSd+5BSS*num_heads)。
(3)在一次训练迭代中,模型参数、梯度、优化器状态占用的显存大小只和模型参数相关,而中间激活值和输入数据大小成正相关。
随着 B 或者 S 增大,中间激活占用显存会同步增大,所以当上报内存不足问题时,要么把模型变得更小更轻量化,要么把输入的 B 或者 S 降低。
09 模型推理显存
神经网络在推理阶段,没有优化器状态、梯度、中间激活,占显存大头的是模型参数。
此外,KV cache 也需要占用显存,还有少量激活值,所以冗余系数一般是模型参数量大小的 1.2 倍左右。 如果模型参数量为 N(float16),那么训练阶段的显存约为 2.4N bytes。
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。

随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:

人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!
在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

大模型全套学习资料展示
自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!
01 教学内容

-
从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!
-
大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
02适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。

vx扫描下方二维码即可

本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!
03 入门到进阶学习路线图
大模型学习路线图,整体分为5个大的阶段:

04 视频和书籍PDF合集

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)

05 行业报告+白皮书合集
收集70+报告与白皮书,了解行业最新动态!

06 90+份面试题/经验
AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)

07 deepseek部署包+技巧大全

由于篇幅有限
只展示部分资料
并且还在持续更新中…
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

844

被折叠的 条评论
为什么被折叠?



