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张卡能不能跑起来:
先看加载,再看推理余量。

更完整地说:

  1. 能不能启动:主要看权重能不能装下
  2. 能不能推理:还要看加载后剩余显存够不够放 KV Cache / activation 等
  3. 能不能实用:还要看在目标 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
降低单卡显存压力

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐