简介

本文详细分析了LLM大模型的参数量、计算量和显存占用。从decoder-only架构出发,深入探讨了注意力层(MHA/GQA/MLA)、MLP层、归一化层和嵌入层的参数计算方法,并通过Qwen3和DeepSeek V3的实际案例展示了参数分布特点。同时,分析了不同精度下的模型参数内存需求和推理内存需求,为开发者提供了理解大模型资源消耗的重要参考。

一、背景知识

chatgpt 的火热引爆了 llm(大语言模型) 的研究和发展,llm 的大体现在两个方面:模型参数和训练数据规模,这进而带来了两个挑战:GPU 内存访问和计算效率。

目前的 llm 都是基于 transformer 模型,得益于GPT 模型的成功,主流的模型架构是采用 decoder-only 架构的,同时模型的输出是自回归的形式,所以 GPT 这类模型也叫做 Causal LM。

因果建模模型、自回归模型、生成式 generative 模型所代表的意义几乎一致。

本文分析的是采用 decoder-only 框架的 llm(类 gpt 的大语言模型)的参数量 params、计算量 FLOPs、理论所需 CPU 内存和 GPU 显存

这里简单介绍下 decoder-only 架构的 llm 结构,其只采用 Transformer 模型中的解码器(Decoder)部分,同时 decoder 结构去掉了 Encoder-Decoder attention(Decoder 中的第二个 attention),只保留了 Masked Self-Attention。这里以 gpt1 模型为例,其模型结构如下所示:

gpt 模型结构,llama 在细节上会有所区别,但是主要网络层不会变。

[(masked)multi_headed_attention --> layer_normalization --> MLP -->layer_normalization]* N -> Linear -> softmax -> output probs

与正常的 Attention 允许一个位置关注/看见到它两边的 tokens 不同,Masked Attention 只让模型看到左边的 tokens:

masked Self Attention

图:self attention vs mask self attention

在计算模型参数量/计算量之前,我们先定义好一些表示符号(这些符号在后面的几篇文章里面都是通用的)

  • b: 批量大小 batch_size。
  • s: 输入序列长度 seq_len,即输入 prompt 字符串的长度。
  • o: 输出 tokens 数量,用于计算 KV Cache 的形状。
  • h: 隐藏层的维度,也叫 dmodel,对应的是json文件中的hidden_size这个参数,即序列中每个 token 的 embedding 向量的维度。它定义了输入和输出的特征向量的大小,也是模型内部各个组件(特别是注意力机制和前馈网络)操作的主要向量维度
  • V: 词表大小 vocab_size。也是每个 token 在做 embedding 前的 one-hot 向量维度。
  • n: 模型中 decoder layers 层数,对应 hf 模型配置文件中的 num_hidden_layers。

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
在这里插入图片描述
二、 模型参数量估计

大部分的模型都是由 N 个相同的 decoder block 串联而成,每个 decoder block 又由 1 个带掩码(mask)注意力层(可能是MHA也可能是GQA啥的)、1 个前馈神经网络(MLP/FFN)层和 2 个层归一化层组成,我下面用的Qwen3指的都是Qwen3的0.6B版本。

2.1 注意力层参数量

2.1.1 传统Multi-Head Attention (MHA)

MHA 块有 4 个线性层(全连接层/映射层),对应的是 Q、K、V 和输出映射层的权重矩阵 及其偏置。4 个线性层权重参数形状都为 ,偏置形状为 。MHA 块的参数量。

2.1.2 Qwen3的Group Query Attention (GQA)

对于使用GQA的模型,权重矩阵为:

  • • (查询映射)
  • • (键映射)
  • • (值映射)
  • • (输出映射)

其中为查询头数,为键值头数,为头维度。

对于Qwen3的0.6B模型的GQA配置(),各权重矩阵的具体参数量为:

GQA块的总参数量
(不考虑偏置,现代模型很多不使用注意力偏置)

2.1.3 DeepSeek V3的Multi-Head Latent Attention (MLA)

对于DeepSeek V3的MLA架构(Multi-Head Latent Attention),使用了更复杂的LoRA分解结构。

相关配置参数:

  • • hidden_size : 7168
  • • num_attention_heads : 128
  • • num_key_value_heads : 128
  • • q_lora_rank: 1536
  • • kv_lora_rank: 512
  • • qk_rope_head_dim: 64
  • • v_head_dim: 128

K/V相关权重矩阵

$(down-projection):

(带RoPE的K投影):

(up-projection for K):

(up-projection for V):

Query相关权重矩阵

(down-projection for Q):

(无RoPE部分的Q投影):

(有RoPE部分的Q投影):

输出权重矩阵

MLA块的总参数量 =

相比于传统MHA的参数,MLA通过LoRA分解实现了参数压缩。

2.2 MLP层参数量

2.2.1 传统MLP架构

MLP/FFN 块由 2 个线性层组成,一般第一个线性层完成 h 到 4h 的升维,第二个将 4h 降维到 h。对应权重矩阵为 ,偏置形状分别为 和 ,MLP 块的参数量 。

2.2.2 Qwen3的SwiGLU MLP

不过现在的现代模型使用SwiGLU激活函数,MLP块实际包含3个线性层:Gate Linear、Up Linear和Down Linear。对于Qwen3,intermediate_size = 3072 = 3h,对应权重矩阵为:

(门控线性层)

(上升线性层)

(下降线性层)

MLP块的参数量(不考虑偏置)

2.2.3 DeepSeek V3的MoE架构

对于DeepSeek V3的MoE架构,使用混合专家模型:

相关配置参数:

  • • intermediate_size: 18432 (稠密层)
  • • moe_intermediate_size: 2048 (MoE专家层)
  • • n_routed_experts: 256 (可路由专家数量)
  • • num_experts_per_tok: 8 (每个token激活的专家数)
  • • n_shared_experts: 1 (共享专家数量)
  • • first_k_dense_replace: 3 (前3层为稠密层)

前3层(稠密层)

使用标准的SwiGLU MLP,intermediate_size = 18432

  • • (门控线性层)
  • • (上升线性层)
  • • (下降线性层)

前3层MLP参数量

后58层(MoE层)

1.Shared Expert(每层1个)

单个shared expert参数量

    1. Routed Experts(每层256个,每次激活8个)
  • • 每个expert: ,
  • • 单个routed expert参数量
  • • 256个routed experts总参数量

3.Router(专家选择网络)

  • • Router参数量 =

单层MoE参数量 =

后58层MoE总参数量 =

2.3 归一化层参数量

LN 层有两个,分别连接在 MHA 和 MLP 块的后面,layer norm 层有两个可训练参数: 和 (scale factor and offset),参数大小都是 [h]。2 个 Layer Norm 层的总参数量 = 4h

RMS Norm层:现代模型普遍使用RMS Norm替代Layer Norm,每个RMS Norm层只有一个可训练参数(scale factor ),没有offset参数,参数大小为[]。2个RMS Norm层的总参数量 = 2h

2.4 嵌入层参数量

除了 decoder block 有很多参数,Embedding 层同样也有参数,Embedding 层包括两部分:Token Embedding(TE)和 Positional Embedding(PE)。 TE 层的输入张量形状是 ,输出维度是 ,对应的 TE 层权重矩阵形状为 , 即 TE 层参数量 = 。另外,最后的输出层通常是和 TE 层共享权重矩阵的。

位置 Embedding 层一般使用纯数学计算,无需经过训练,现代模型使用RoPE(旋转位置编码)替代传统的位置嵌入PE,RoPE是无参数的位置编码,故忽略不计。

对于DeepSeek V3():

    1. Embedding层参数量
    1. 输出层参数量:主要是1个linear层,通常与Embedding层共享权重矩阵:

注:DeepSeek V3配置中tie_word_embeddings: false,表示输出层与嵌入层不共享权重,因此需要单独计算输出层参数。

2.5 实际参数量计算示例

模型类型 注意力参数 MLP参数 归一化参数 单Block总计
传统MHA+LN 4h^2+4h 8h^2+5h 4h 12h^2+13h
Qwen3(GQA+RMS+SwiGLU) 6h^2 9h^2 2h 15h^2+2h

Qwen3 0.6B计算示例(层,):

  • 单个Decoder Block: 参数
  • 28层Decoder Block: 参数
  • Token Embedding: 参数
  • 总计:参数

DeepSeek V3计算示例(层,):

  • MLA注意力层:每层 187.11M 参数
  • 前3层稠密MLP: 参数
  • 后58层MoE: 参数
  • RMS Norm层:忽略不记
  • Attention总计: 参数
  • Token Embedding + 输出层: 参数
  • 总计: 参数

注:DeepSeek V3官方公布的参数量约为671B,与我们的计算结果基本吻合。

2.6 参数量计算总结

2.6.1 参数量计算公式
  • • LLM 参数量和输入序列长度无关。对于有 n 层 decode block 块的 llm 参数量为传统的LLM大模型的参数量为 ,如果按照Qwen3来计算的话是 ,当 h 较大时,可忽略一次项,近似为 。
  • • 从这里我们其实可以看得出来主要参数量大的地方是注意力模块和FFN模块。
2.6.2 传统模型参数分布

下面是 gpt-like 模型(如 OPT)的不同大小模型的参数分布图,可以看出,随着模型变大,MLP 和 Attention 层参数量占比越来越大,最终分别接近:

MLP:约 2/3
Attention:约 1/3

gpt-like 模型(opt)的参数分布

这个比例可以通过上面的参数估算公式推导得出(以传统 的 MLP 为例):

  • • MLP占比:
  • • Attention占比:
2.6.3 Qwen3参数分布

对于 Qwen3 这种使用 SwiGLU 的 MLP 和 GQA 的模型:

  • • MLP占比:
  • • Attention占比:

这个跟我们上面的结论是一样的,这个比例也不是固定的,会随着注意力模块和 FFN 模块的设计变化而产生变化。现代模型通过 GQA、调整 intermediate_size、使用 SwiGLU 等技术,可以在保持性能的同时优化参数分布和计算效率。

2.6.4 DeepSeek V3 MoE参数分布

对于 DeepSeek V3 的 MoE 架构,参数分布发生了显著变化。以 DeepSeek V3 (671B) 为例:

DeepSeek V3 参数分布

  • MLA注意力层
  • 稠密MLP层(前3层):
  • MoE层(后58层)
  • • -Embedding + 输出层:1

可以看出,在MoE架构中:

    1. MoE层占据绝对主导地位(~98%),这是因为每层包含256个专家,虽然每次只激活8个,但所有专家参数都需要存储
    1. 注意力层占比大幅下降(从传统的33%降至1.7%),得益于MLA的LoRA分解压缩
    1. 这种设计实现了模型容量与计算效率的平衡:大量参数提供丰富表达能力,稀疏激活控制计算成本

三、CPU 内存使用量

3.1 模型参数内存如何计算?

  • • 对 int8 而言:模型参数内存 = 参数量 × (1 字节 / 参数)
  • • 对 fp16 和 bf16 而言:模型参数内存 = 参数量 × (2 字节 / 参数)
  • • 对 fp32 而言:模型参数内存 = 参数量 × (4 字节 / 参数)

LLM 模型一般都是保存为 fp16 或者 bf16 格式。 以 LLaMA-13B 为例,,可知 LLaMA-13B 模型权重参数文件占用的存储空间是约 26GB。

对于 Qwen3 0.6B 使用 bf16 格式: 模型参数内存

3.2 DeepSeek V3 模块内存占用详细分析

MoE专家层详细分解

注:根据前文计算,单层MoE = 44.04M(shared) + 11.274B(256×routed) + 1.84M(router) = 11.32B,58层共656.56B参数。

3.3 模型推理需要的总 CPU 内存是多少?

推理内存需求: 内存模型参数内存(

对于 Qwen3 0.6B: 内存

对于 DeepSeek V3 使用 bf16 格式: 模型参数内存

DeepSeek V3 推理内存需求: 内存

四、AI大模型学习和面试资源

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
在这里插入图片描述

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Logo

更多推荐