大模型显存怎么省?聊聊量化、FlashAttention、PagedAttention
兄弟们,大模型部署最头疼的就是显存爆炸。一张A100 80G跑个LLaMA-65B都费劲,更别提生产环境。今天直接上干货,聊几个实际能用的优化手段。首先,量化是必选项。INT4/INT8量化能把模型体积压到1/4甚至更小,精度损失能接受。推荐用bitsandbytes的NF4或GPTQ,推理速度不拉胯。但别一上来就量化全精度,部分层(比如attention的QKV)保持FP16效果好。
其次,FlashAttention和PagedAttention这俩玩意儿是真香。FlashAttention通过分块计算和IO优化,把attention的内存占用从O(n²)降到O(n),长序列场景下直接省一半显存。PagedAttention则是vLLM那帮人搞的,把KV cache按页管理,避免碎片化,吞吐量能翻倍。
另外,模型并行也别瞎搞。张量并行对通信要求高,数据并行则简单粗暴。小团队建议先用DeepSpeed ZeRO-3做参数分片,零冗余,显存省得明显。
最后,分享个实战经验:用HuggingFace的`model.half()`转FP16,再配合`gradient_checkpointing`,对单卡A100跑7B模型基本稳。
提问:你们在部署大模型时,遇到最蛋疼的显存瓶颈是哪一块?是attention还是前馈层?出来聊聊!
页:
[1]