本文第一章:以LLaMA-2-13B模型为例,计算了大语言模型推理阶段所必须的GPU显存大小;

本文第二章:Deepseek-671b等不同参数量的模型,根据不同Token数以及不同并发请求数的情况下,所需要的GPU显存大小。

一、LLM推理阶段所需的GPU显存

大模型推理过程中对GPU显存的需求主要涉及三方面:模型权重(Model Weights)、KV缓存(Key-Value Cache)、额外内存开销(Memory Overhead)。

1.0 下面以LLaMA-2-13B模型为例:

1.1 模型权重(Model Weights)

对于 LLaMA-2-13B模型,参数量为130亿,每个参数( FP16)占2字节,模型大小 = 13 * 10^9  × 2 byte =26 * 10^9 byte= 26 GB

1.2 KV缓存(Key-Value Cache)

Transformer 模型中为了从不同的表示空间中学习不同角度的语义信息。比如有的 head 学习语法结构,有的 head 学习语义关联,有的 head 学习长距离依赖等,因此对于每层Transformer 设置了多个attention head(子注意力模块)。下面我们由浅入深,从(a) 、(b) 、(c) 、(d) 、(e) 来依次计算一下KV Cache:

(a) 1层Transformer ,1个attention head,1个token

对于每一个 attention head 来说:每个 token 会生成一个 key 向量和一个 value 向量,key 向量和 value 向量的长度都是128 (head_dim)

每个 token 在一个 attention head 中占用的空间包括key和value为:
key: head_dim × 2 Bytes = 256 字节(FP16);value: head_dim × 2 Bytes = 256 字节
因此,1层Transformer ,1个attention head,1个token下会占512byte的显存:512 字节 / token / attention head/Transformer

(b) 1层Transformer ,1个attention head,4096个token

接下来看1层Transformer ,1个attention head,4096个tokens中缓存多少内容:

KV Cache per head per layer per request =

max_seq_len (4096) × (key + value = 2) × head_dim (128) × precision_size (2 Bytes) = 4096 × 2 × 128 × 2 = 2,097,152 字节 ≈ 2 MB

因此,每个 attention head 缓存约 2MB 的 key/value 数据。

(c) 1层Transformer ,40个attention head,4096个tokens

如果你有 40 个 attention head,那么一层 Transformer 就需要:2,097,152 字节 × 40 heads = 83.89 MB / layer / request

(d) 40层Transformer ,40个attention head,4096个tokens,10个并发请求

那么40 层 × 10 个并发请求:83.89 MB × 40 layers × 10 requests = 33554 MB = 32 G

(e) KV Cache总计

KV Cache =   kv_factor(2)× head_dim (128) × precision_size (2 Bytes) ×max_seq_len (4096) × num_heads × num_layers × batch_size= 2 × 128  × 2 × 4096 × 40 × 40 × 10 = 33,554,432,000字节≈33.55GB

参数名 含义
num_layers Transformer 层数(模型深度),40
num_heads 每层的注意力头数量,40
head_dim 每个注意力头中 key/value 向量的维度,128
max_seq_len 单个请求的最大 token 数(即序列长度),4096
batch_size 同时处理的请求数(并发数),10
kv_factor 每个 token 要缓存 key 和 value 两个张量,2
precision_size 每个浮点数值所占字节数,2

1.3 额外内存开销(Memory Overhead)

这部分包括:

  • 中间激活值(Activation memory)
  • 缓冲区(Scratch memory)、临时张量等
  • 框架开销(如 PyTorch、TensorRT、vLLM 等)

一般经验上,这部分可以估计为:

Overhead=0.1×(26+33.55)≈5.955GB

1.4 总 GPU 显存

LLaMA-2 13B 在 10 并发、4096 Token 上下文场景下的显存需求估算

类别 数值
模型权重 26 GB
KV Cache ~33.55 GB
内存开销(10%) ~5.96 GB
总计 ~65.5 GB

实际部署中显存可能更低

  • 使用 分片加载(Tensor Parallelism) 可以将模型拆到多个 GPU 上。
  • 使用 KV Cache 压缩(如 vLLM) 可以降低内存占用。
  • 使用 量化(INT8/INT4) 可大幅减少模型权重和中间激活内存。
  • 使用 批处理优化(Batching Optimization) 可提高吞吐效率。

二、671b等大模型的显存表格

1、不同规模模型在不同序列长度下的显存需求

各规模模型在不同最大序列长度和10并发数下的显存需求如下表所示:

模型规模 4k 8k 32k 64k 128k
7B 16.7GB 33.3GB 133.3GB 266.6GB 533.3GB
13B 33.5GB 67.0GB 268.0GB 536.0GB 1072.0GB
30B 74.5GB 149.0GB 596.0GB 1192.0GB 2384.0GB
66B 167.4GB 334.8GB 1339.2GB 2678.4GB 5356.8GB
70B 178.3GB 356.6GB 1426.4GB 2852.8GB 5705.6GB
175B 286.7GB 573.3GB 2293.3GB 4586.7GB 9173.3GB
671B 167.4GB 334.8GB 1339.2GB 2678.4GB 5356.8GB

计算说明

  • 所有模型均采用FP16精度(2字节/参数)
  • 并发数(batch_size)为10
  • DeepSeek 671B的KV缓存已应用MLA架构压缩(乘以0.135(KV缓存压缩率))

2、不同规模模型的架构参数

上述模型都基于LLaMA-2系列架构参数和参数量规律,各规模模型的架构参数如下表所示:

模型规模 参数量 层数 注意力头数 隐层维度 KV缓存压缩率
7B 7B 32 32 4096 1.00
13B 13B 40 40 5120 1.00
30B 30B 48 48 6144 1.00
66B 66B 64 64 8192 1.00
70B 70B 80 64 8192 1.00
175B 175B 28 96 12288 1.00
671B 671B 80 128 8192 0.135

LLaMA-2系列:7B、13B、30B、66B、70B均采用标准Transformer架构,使用分组查询注意力(GQA)提高推理可扩展性。参数量与层数、头数和隐层维度的平方成正比。例如,LLaMA-2 7B有32层、32头、4096维度,而70B扩展为80层、64头、8192维度。

Falcon 175B:采用GQA架构,假设其有28层、96头、12288维度,总参数量约为175B。

DeepSeek 671B:采用多头潜在注意力(MLA)架构,将KV缓存压缩至原始大小的13.5%(每个token仅需70KB,而传统模型如LLaMA-3.1需要516KB)。这种压缩技术显著降低了长序列推理的内存需求。

三、LLM 训练阶段,需要数百 GB 的显存

以 LLaMA-2 13B 训练为例(FP32):

  • 模型参数:13B × 4 Bytes = 52 GB
  • 梯度存储:52 GB(和参数同规模)
  • 优化器状态(AdamW):约 104 GB(含动量和方差)
  • 中间激活值:几十 GB(取决于 batch size 和 seq length)
  • 批量数据本身:也占一定内存

所以训练一个 LLaMA-2 13B 模型可能需要数百 GB 的显存,必须使用多卡分布式训练(如 DeepSpeed + ZeRO)。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐