兄弟们,最近部署Llama 3 70B和Mixtral 8x7B时,发现显存优化才是真·拦路虎。别说推理,光加载就够喝一壶。分享几个实测有效的骚操作,不是抄论文那种。
先说KV Cache量化。很多人以为FP16是底线,实际4-bit KV Cache在长文本场景下(比如16K上下文),显存能直接砍半。我跑Qwen 72B的32K推理,用GPTQ量化后单batch从48GB降到26GB,困惑度只涨了0.3。但注意:别用对称量化,对长尾分布不友好,跑8K以上会崩。
再说PagedAttention。vLLM这库确实香,但别无脑开。实测当batch size > 32时,预分配显存浪费严重。我调了block_size从16改到64,吞吐量反而上去了。关键是监视page fault率,超过5%就换策略。
最后提一嘴Multi-Query Attention(MQA)。有些社区魔改模型用了它,确实省显存,但精度损失在代码生成任务上特别明显。我试过Starcoder 15B,MQA下代码逻辑错误率比MHA高12%。建议只在对话场景用,别搞推理乱套。
想讨论个实战点:你们在部署长上下文(32K+)模型时,是优先用FlashAttention减少KV缓存,还是直接上量化?我实测前者在A100上更稳,但后者兼容性差。评论区聊聊配置。 |