LLM部署所需GPU内存
·
显存需求的核心公式(快速估算)
推理内存需求
推理阶段的内存需求主要由模型权重、KV缓存和激活内存组成。其中,模型权重是内存占用的主要部分。
计算公式
推理内存 ≈ 参数数量 × 精度(通常为 2 或 4 字节)
例如:10亿参数(1B)在16位精度下占用约2GB内存,100B参数则占用约200GB内存。
示例:70.6B模型,16位精度,约需130GB GPU内存,因此需要2张80GB的H100 GPU。
训练内存需求
训练阶段的内存需求通常是推理的4-6倍,因为需要额外存储梯度、优化器状态(如Adam优化器需要额外8字节/参数)等。
推理
执行推理需要资源来加载模型权重并存储 KV 缓存和激活内存。模型大小是最主要的参数,比其他参数要大得多。
总推理内存 = 模型大小 + KV 缓存 + 激活
显存需求的核心公式(精确计算)
基础模型内存估算
- 公式:总内存 ≈ 参数数量 × 精度(字节) × 额外开销系数
- 参数数量(P):如7B、13B、70B等。
- 精度(Q):16位(2字节)、8位(1字节)、4位(0.5字节)。
- 额外开销系数:通常为1.2(覆盖缓存、元数据等)。
- 换算示例:
- 13B参数 + 16位精度:(13B × 2 × 1.2) / 8 = 31.2 GB
- 70B参数 + 16位精度:70B × 2 = 140 GB(未含额外开销)。
推理场景
- 总内存 = 模型权重 + KV缓存 + 激活内存
- 模型权重:参数数量 × 精度(如70B × 2字节 = 140 GB)。
- KV缓存:2 × 批次大小 × 序列长度 × 层数 × 隐藏大小 × 精度。
- 激活内存:批次大小 × 序列长度 × 隐藏大小 × (34 + 5×序列长度×注意力头数/隐藏大小)。
训练与推理的差异
| 场景 | 内存需求 | 关键因素 |
|---|---|---|
| 推理 | 较低 | 模型权重、KV缓存、激活内存 |
| 训练 | 4-6倍推理需求 | 模型权重 + 梯度 + 优化器状态(如Adam需额外8字节/参数) |
示例:
- 训练70B模型:需约924 GB显存(基于全精度、Adam优化器)。
- 微调优化:通过LoRA、QLoRA等技术减少可训练参数,显著降低内存需求。
量化技术的应用
通过降低精度减少显存占用,但可能影响模型效果:
常见量化方案:
- 16位(FP16):显存减半,性能接近全精度。
- 8位(int8):显存为全精度的25%,轻微性能损失。
- 4位(int4):显存为全精度的12.5%,需结合QLoRA等技术优化。
示例:70B模型量化至4位后,显存需求从140 GB降至约35 GB。
GPU配置建议
单卡限制
NVIDIA A100(80GB)可支持:
- 40B模型(16位)或更小模型。
- 70B模型需2张A100或H100(80GB)。
多卡扩展
- 使用模型并行(如Tensor Parallelism)拆分模型到多卡。
- 注意通信开销和框架支持(如DeepSpeed、vLLM)。
实例参考
| 模型规模 | 精度 | 显存需求(推理) | 所需GPU配置 |
|---|---|---|---|
| 13B | 16位 | ~31 GB | 1×A100(40GB) |
| 70B | 16位 | ~140 GB | 2×A100/H100 |
| 70B | 4位+QLoRA | ~35 GB | 1×A100(40GB) |
如果你还想挖掘更多宝藏内容,请关注公众号“智界元枢”。
更多推荐
所有评论(0)