如果想要在某个模型基数上做全参数微调,究竟需要多少显存?
全参数微调(Full Fine-Tuning)到底需要多少显存,没有一个固定数字,但有一个非常实用的估算规律:
训练时显存 ≈ 模型参数本体 ×(8~16 倍)
之所以远高于“模型大小”,是因为训练时不仅要放模型参数,还要放:
- 梯度(gradients)
- 优化器状态(Adam 的 m/v)
- 激活值(activations)
- 临时缓存
- batch / sequence 长度带来的额外开销
一、最核心的经验值
FP16 / BF16 全参数微调(最常见)
如果使用:
- AdamW
- fp16 / bf16
- PyTorch
- Transformer 架构
通常:
| 内容 | 显存占用 |
|---|---|
| 模型参数 | 2 bytes/param |
| 梯度 | 2 bytes/param |
| Adam 一阶动量 | 4 bytes/param |
| Adam 二阶动量 | 4 bytes/param |
| Master FP32 权重 | 4 bytes/param |
| 合计(不含激活) | ≈16 bytes/param |
因此:
粗略公式
总显存 ≈ 参数量 × 16 bytes
再加上 activation:
实际训练显存 ≈ 参数量 × (16~24 bytes)
二、不同模型的大致显存需求
7B 模型
例如:
- Meta 的 Llama 2 7B
- Alibaba Cloud 的 Qwen2.5 7B
参数:
7B ≈ 70 亿参数
仅训练状态:
7e9 × 16 bytes
≈ 112 GB
再算 activation:
通常需要 140~180GB 显存
现实配置:
| 配置 | 是否够 |
|---|---|
| 单张 80G A100 | ❌ |
| 2×80G A100 | ✅ |
| 4×48G RTX 6000 Ada | ✅ |
| 8×24G 4090 | 勉强可行(需 ZeRO/FSDP) |
13B 模型
13e9 × 16
≈ 208GB
实际:
250~350GB 显存
一般至少:
- 4×80G A100
- 或更多卡切分
70B 模型
例如:
- Llama 3 70B
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content