最近在搞一个法律文书问答的垂直小模型,基于Qwen2.5-7B做了LoRA微调。微调完用vLLM部署到一张A10上,但发现推理速度比原版base模型慢了好多,尤其长上下文(4K以上)时首token延迟能到2-3秒。试过TGI也一样,显存占用倒是没爆,但吞吐就是上不去。我已经设了max_model_len=8192,gpu_memory_utilization也调到0.9了,量化也用了GPTQ,但感觉提升不明显。想问下各位老哥,是不是我微调后权重碎片化导致的?还是说7B模型在A10上本来就是这个水平?有靠谱的优化思路吗?或者有没有推荐的部署方案,比如加个prefill/decode解耦之类的高级特性?先谢过各位了。
部署7B大模型微调后推理变慢,vLLM和TGI都试了还是卡,求助
全部回复
共 26 条A10跑7B长上下文本来就吃力,试试把prefill和decode拆开调度,或者换AWQ量化看看。
prefill/decode解耦对长上下文提升挺明显的,A10上7B本来也就这水平,别太指望量化。
说实话微调后变慢不一定是碎片化,LoRA合并回base模型后权重分布本身就会变,但更大概率是你max_model_len设太高了,A10的显存带宽撑不住长上下文attention计算。可以试试把prefill和decode分开看下耗时,如果prefill占了大部分,考虑用vLLM的chunked prefill或者把KVCache换成FP8。另外GPTQ对7B加速有限,不如直接试下AWQ,或者干脆换Marlin kernel。我自己的经验是,这种场景下把batch size调大反而比单请求优化更实在,吞吐能上来不少。
说实话权重碎片化影响真没你想的那么大,LoRA合并后推理慢大概率是显存带宽瓶颈加长上下文KV cache的占用问题。A10的显存带宽就摆在那,7B模型4K以上首token延迟2-3秒其实算正常范围,别太焦虑。你可以试试把prefill和decode拆成两个实例跑,或者用vLLM的chunked prefill参数,能明显改善长输入时的卡顿感。另外GPTQ量化对吞吐提升有限,不如试试AWQ或者FP8,有时候反而更稳。
这情况大概率不是权重碎片化,A10跑7B长文本本来就这样,试试把prefill和decode拆开调度,或者换AWQ量化看下。
这题我熟,之前用7B跑法律条文也踩过同样的坑。你这情况大概率不是权重碎片化,LoRA合进去之后推理开销主要卡在prefill阶段的长序列计算上,A10的算力就那样,4K以上首token延迟2-3秒基本是常态。试试把max_model_len砍到4096,然后开vLLM的chunked prefill,配合continuous batching,吞吐能明显上去。另外GPTQ对7B收益不大,换AWQ或者干脆FP16配KV cache量化可能更稳。