大模型权重的B/T参数量、显存估算、MoE与Dense模型加载区别以及EP相关问题整理
文章目录
abstract:
trillion 英/ ˈtrɪljən / 美/ ˈtrɪljən / 万亿,兆;<英,旧>百万兆;大量,无数
B = Billion = 十亿,1B = 10^9,这里注意10的九次方是1后面跟着9个0,那么是10位,是十亿。
T = Trillion = 万亿/兆
权重大小: 如果是INT8 1B参数≈1GB 1T参数≈1TB
Dense模型:参数是多少,需要加载多少权重
MoE模型:总参数很大,但是每次只激活部分Expert
不使用EP:MoE仍然需要加载全部Expert
使用EP:Expert权重被切分到多个GPU,降低单卡显存压力
1. 大模型参数量中的B和T是什么意思?
大模型参数规模通常使用:
- M
- B
- T
表示。
其中:
1.1 B是什么?
B是 Billion 的缩写。
中文:
十亿
即:
1B = 10^9
这里注意10的九次方是1后面跟着9个0,那么是10位,所以是十亿。
也就是:
1B = 10亿参数
例如:
70B
表示:
70 Billion parameters
= 700亿参数
1.2 T是什么?
T是 Trillion 的缩写。
中文:
万亿,也可以称为兆
即:
1T = 10^12
参数数量关系:
1T = 1000B
例如:
2.8T
表示:
2.8 Trillion parameters
= 2800B
= 2.8万亿参数
2. 参数量中的B/T和存储单位GB/TB有什么关系?
这里需要注意:
虽然参数量里面也有B/T,但是和存储单位中的GB/TB不是一个概念。
2.1 参数量单位
模型参数:
B = Billion
T = Trillion
表示:
参数数量
例如:
671B参数
表示:
6710亿个参数
2.2 存储单位
存储:
Byte
KB
MB
GB
TB
表示:
数据大小
常见关系:
1KB = 1024 Byte
1MB = 1024 KB
1GB = 1024 MB
1TB = 1024 GB
其中:
1024 = 2^10
所以:
1GB = 1024^3 Byte
计算:
1024 × 1024 × 1024
= 1,073,741,824 Byte
约等于:
10.7亿Byte
因此在工程估算中:
如果一个参数占用1Byte:
1B参数 ≈ 1GB存储空间
这就是大模型部署中常用的快速估算方法。
3. 参数量如何换算模型权重大小?
模型权重大小:
模型权重大小 ≈ 参数数量 × 单个参数占用空间
不同精度下:
| 精度 | 单个参数大小 |
|---|---|
| FP32 | 4 Byte |
| FP16/BF16 | 2 Byte |
| INT8 | 1 Byte |
| INT4 | 0.5 Byte |
4. INT8、FP16、INT4显存估算
4.1 INT8
INT8:
1参数 = 1 Byte
所以:
1B参数 ≈ 1GB权重
例如:
70B模型
70B × 1Byte
≈70GB
671B模型
例如DeepSeek-V3:
671B参数
INT8:
≈671GB
2.8T模型
2.8T = 2800B
INT8:
2800B × 1Byte
≈2800GB
≈2.8TB
4.2 FP16/BF16
FP16:
1参数 = 2Byte
因此:
1B参数≈2GB
例如:
2.8T模型:
2800B × 2
≈5600GB
≈5.6TB
4.3 INT4
INT4:
1参数≈0.5Byte
因此:
1B参数≈0.5GB
例如:
2.8T模型:
2800B × 0.5
≈1400GB
≈1.4TB
5. Dense模型加载显存分析
传统Transformer通常采用Dense结构。
结构:
Attention
↓
MLP(FFN)
↓
Attention
↓
MLP(FFN)
Dense模型中:
每一层只有一个FFN。
假设:
模型参数量:
2.8T
INT8
那么:
权重大小≈2.8TB
如果忽略:
- KV Cache
- activation
- CUDA Graph buffer
- runtime buffer
那么:
至少需要:
2.8TB显存
才能加载完整模型。
6. MoE模型加载显存分析
MoE:
Mixture of Experts
中文:
混合专家模型
相比Dense模型:
MoE不是只有一个MLP,而是包含多个Expert。
结构:
Attention
↓
Router
↓
Expert0
Expert1
Expert2
...
Expert N
Router负责根据输入token选择需要计算的Expert。
例如:
128个Expert
但是:
每个token只选择Top-K Expert
比如:
Top-8
表示:
每个token只计算8个Expert。
7. MoE相比Dense模型的核心区别
Dense模型:
一个MLP
所有token都会经过这个MLP计算
MoE模型:
多个Expert
Router选择部分Expert计算
因此:
MoE特点:
- 总参数量更大
- 每次激活参数更少
- 推理计算量降低
例如:
模型总参数:
671B
激活参数:
37B
表示:
模型拥有671B参数容量,但是每个token只计算约37B参数。
8. 不使用EP时,MoE和Dense加载显存有什么区别?
这是很多初学者容易混淆的问题。
很多人认为:
MoE每次只激活部分Expert,所以显存也会减少。
实际上:
不是。
如果不使用EP:
MoE模型启动时:
仍然需要加载所有Expert权重。
例如:
Expert0
Expert1
...
Expert127
全部需要加载。
所以:
MoE权重显存
≈ 所有Expert参数
因此:
如果一个Dense模型:
500B参数
无法加载。
那么一个:
500B Expert参数的MoE模型
不使用EP:
同样可能无法加载。
MoE解决的问题:
降低每个token计算量,提高模型容量。
但是:
MoE本身不会降低模型权重加载显存。
9. 使用EP后,MoE模型权重如何分布?
EP:
Expert Parallel
即:
Expert并行
利用MoE中Expert之间相互独立的特点:
将不同Expert分布到不同GPU。
例如:
原始模型:
Expert0
Expert1
...
Expert127
EP=8:
GPU0:
Expert0-15
GPU1:
Expert16-31
...
GPU7:
Expert112-127
这样:
每张GPU只保存部分Expert。
显存变化:
原来:
全部Expert权重
变成:
Expert权重 / EP数量
注意:
不是:
总参数量 / EP
因为:
模型中还有:
- Attention
- Embedding
- Norm
- Router
等非Expert参数。
因此:
MoE+EP情况下:
显存
≈
非MoE参数
+ Expert参数 / EP
10. MoE和EP分别解决什么问题?
总结:
MoE解决:
如何增加模型容量,同时降低单次推理计算量。
特点:
- 参数规模大
- 激活参数少
- 每个token只计算部分Expert
EP解决:
如何将大量Expert权重分布到多个GPU,降低单卡显存压力。
特点:
- Expert权重切分
- 多GPU共同保存模型
- 支撑超大规模MoE模型部署
11. 一个节点8张卡能不能跑起来,是不是只要加载显存够,推理就没问题?
很多人会有这样的理解:
只要模型权重能加载进8张卡的显存,推理就可以正常跑。
这个理解不完整。
更准确的说法是:
权重能加载成功,只是模型“能启动”的最低条件;
真正能不能稳定推理,还要看加载之后还剩多少显存给运行时使用。
11.1 先分清两件事:加载 vs 推理
可以把显存需求拆成两部分:
总显存需求
≈
模型权重显存
+
推理运行时显存
其中:
1)模型权重显存
这是启动时必须占用的部分,主要包括:
- Attention权重
- MLP / Expert权重
- Embedding
- Norm
- Router(MoE)
如果这部分都装不下:
模型直接加载失败
所以:
看一个节点8张卡能不能“装下模型”,首先确实是看加载。
2)推理运行时显存
模型加载成功之后,推理时还需要额外显存,例如:
- KV Cache
- activation(中间激活)
- CUDA Graph / workspace buffer
- 通信临时缓冲(TP/EP相关)
- MoE dispatch / combine 相关缓冲
这些会随着:
- batch size
- 序列长度(context length)
- 并发请求数
- 并行策略(TP/EP等)
发生变化。
所以:
加载成功 ≠ 推理一定没问题
11.2 为什么“加载能起来”还不够?
举个直观例子。
假设:
单卡显存:80GB
节点:8卡
总显存:640GB
某个模型权重加载后:
每张卡占用权重:70GB
这时:
模型可以启动
但每张卡只剩:
约10GB
这剩下的10GB,还要承担:
- KV Cache
- activation
- 其他runtime buffer
如果:
- 上下文很长
- 并发很大
- batch较大
就可能出现:
模型能加载
但推理时 OOM
或可服务的并发极低
因此:
加载显存够,只能说明“模型装得下”;
不能说明“推理一定能跑得好、跑得稳”。
11.3 工程上更准确的判断方式
判断一个节点8张卡能不能跑某个模型,通常要问两层:
第一层:能不能加载?
看:
权重显存(按并行策略切分后)
是否 ≤ 单卡可用显存
例如:
- Dense + TP=8:权重大致按TP切分
- MoE + EP=8:Expert权重按EP切分,非Expert部分另算
如果这一步都过不去:
模型无法启动
第二层:加载后还剩多少显存给推理?
看:
剩余显存
是否足以支撑目标业务场景
业务场景通常包括:
- 需要支持多长的上下文
- 需要支持多大的并发
- 需要多大的吞吐
如果剩余显存很少:
- 可能只能跑很小 batch
- 可能只能支持很短 context
- 可能几乎没法实用服务
11.4 一句话总结这个问题
看一个节点8张卡能不能跑起来:
先看加载,再看推理余量。
更完整地说:
- 能不能启动:主要看权重能不能装下
- 能不能推理:还要看加载后剩余显存够不够放 KV Cache / activation 等
- 能不能实用:还要看在目标 context、batch、并发下是否够用
所以正确理解不是:
只要加载够,推理就没问题
而是:
加载够是必要条件,不是充分条件。
总结
大模型部署需要先理解:
1. 参数量单位
B = Billion = 十亿
T = Trillion = 万亿
1T = 1000B
2. 权重大小估算
INT8:
1B参数≈1GB
1T参数≈1TB
3. Dense模型
参数量是多少
就需要加载多少权重
4. MoE模型
总参数很大
但是每个token只激活部分Expert
5. 不使用EP
MoE仍然需要加载全部Expert
6. 使用EP
Expert权重被切分到多个GPU
降低单卡显存压力
更多推荐





所有评论(0)