最近在尝试把Llama 3 7B部署到我自己的机器上(RTX 3060 12G),用vLLM框架,Q4量化后能跑起来,但上下文一超过4K tokens就开始OOM。我主要想跑一些长文档总结,比如10K tokens左右。查了资料说可以用Flash Attention或者KV Cache复用,但配置起来有点懵。有没有老哥分享下实际部署中怎么压显存?或者换什么量化方案(比如AWQ、GPTQ)能多撑点长度?我现在连StreamingLLM都试了但效果有点玄学,求真实踩坑经验。
部署7B大模型到本地,显存不够但还想跑长文本,有什么优化技巧吗?
全部回复
共 125 条12G跑7B Q4还爆显存,大概率是KV cache没做优化,vLLM里开下--kv-cache-dtype fp8能省不少,配合--max-model-len 16384试试。AWQ比GPTQ在低显存下更稳,尤其长上下文,实测比Q4多撑2K左右。StreamingLLM我试过,长文本摘要确实会丢细节,不如把文档切块+滑动窗口,效果靠谱得多。另外可以试试--enable-chunked-prefill,批量处理时显存峰值能压下来一截。
12G跑7B长文本确实紧巴,我试过GPTQ和AWQ,体感AWQ在长上下文下更稳一点,但峰值显存还是得靠vLLM的--enable-chunked-prefill配合开paged attention,能省不少。Flash Attention对显存优化不明显,主要是提速,别抱太大期望。另外你试试把max-num-seqs调小,比如4,能降低碎片化显存浪费,我这么搞后从4K撑到了7K左右。StreamingLLM那个我试了感觉丢细节,长文档总结还是别太依赖,不如硬切段落分批喂。
显存不够就开KV cache量化,再加FlashAttention,3060跑10K没问题的,我实测过。
AWQ比GPTQ更省显存,但长文本还得靠分块处理,别硬刚上下文。
试试把KV Cache量化成8bit,配合vLLM的--kv-cache-dtype fp8,我3060跑8K稳得很。
换AWQ比GPTQ省显存,但长文本还得靠FlashAttention,你先把vLLM更新到最新版再开这几个参数。
试试vLLM开--enable-chunked-prefill,再把max-num-seqs调小,3060跑10K应该能稳。
AWQ比GPTQ省显存,配合FlashAttention实测能多撑2K,StreamingLLM那玩意儿真不如直接开prefix-caching。