完整题目
在大模型训练或推理过程中,显存不足是一个常见瓶颈。请列举并解释有效的显存优化技术,如梯度检查点、模型并行、量化等。
本文目录
第一步不是选技术,而是做内存账本
训练显存至少拆成 parameters、gradients、optimizer states、activations、临时 workspace/通信 buffer;推理拆成 weights、KV Cache、activations/workspace 与调度开销。谁占主导取决于参数量、优化器、序列长度、batch、精度和并行方式,不能笼统说激活永远最大。
训练侧
- BF16/FP16 降低权重与计算精度;FP16 常配 loss scaling,BF16 因指数范围较大通常不需要同类缩放;
- activation checkpointing 以反向重算换保存激活,收益和额外计算由 checkpoint 粒度及图决定;
- ZeRO/FSDP 分片状态,tensor/pipeline/sequence parallel 拆参数或序列,选择取决于内存账本和通信;
- FlashAttention 通过 IO-aware tiling 避免物化完整注意力矩阵;
- CPU/NVMe offload 以传输换显存,梯度累积以更多 micro-step 换较小 micro-batch。
推理侧
权重量化、KV Cache 量化/分页/卸载、GQA/MQA/MLA 架构,以及限制最大上下文和并发,可降低或约束显存峰值。continuous batching 主要改善动态调度和设备利用率,本身不保证降低峰值;更多请求的 KV 同时驻留时,峰值还可能上升,需配合 paged KV、最大并发、batch token 或 memory budget 控制内存。无论采用哪种方案,质量、TTFT、TPOT 与吞吐都必须一起测。
不要给 checkpoint 固定节省百分比、INT4 固定精度损失或固定提速,也不要按“8 卡以下 ZeRO-2、更多 ZeRO-3”选型。先用 profiler 与公式估算,再在目标硬件上测峰值、OOM margin 和性能。