最近想把公司内部一个问答机器人换成开源7B模型(Qwen2.5-7B-Instruct),用vLLM部署。但遇到一个很实际的问题:单卡A100 80G跑满并发大概能支持多少路请求?我看网上有人说可以塞下20个实例,但实际测下来显存占用比预期高不少。而且如果同时跑多个并发,TTFT会明显变长,用户感知就很明显。现在纠结是上4卡做张量并行,还是干脆用2卡各跑一个实例做负载均衡?另外量化到AWQ 4bit会不会掉点太多?有没有实际部署过的大佬给点建议,主要场景是知识库问答,要求响应时间在2秒内。
部署7B模型到生产环境,显存和并发到底怎么权衡?
全部回复
共 120 条2卡各跑一个实例负载均衡吧,4卡张量并行延迟也没好到哪去,AWQ 4bit知识库问答够用。
我们组之前用7B做过类似场景,4bit量化掉点其实没想象中严重,知识库问答这种任务完全能打,但AWQ对中文长文本偶尔会有点犟,建议自己拿测试集跑一遍看case。显存这块别光看模型权重,kvcache和并发序列长度才是大头,vLLM配好continuous batching之后,单卡A100撑30路左右没问题,但TTFT确实会随着并发涨,想稳2秒内建议还是2卡各跑一个实例做负载均衡,扩缩容也灵活。张量并行延迟低但带宽瓶颈明显,4卡有点浪费,除非你要上更大模型。
说实话你这场景我建议直接2卡各跑一个实例,A100单卡塞20个实例纯属扯淡,Qwen2.5的KV cache吃显存很凶,实测16路并发TTFT就飙到1.5秒了。AWQ 4bit掉点没那么玄乎,知识库问答这种抽取式任务基本无感,但如果你要做长上下文或者复杂推理,还是老老实实FP16。另外vLLM记得开continuous batching,不然并发一上来调度开销直接把你2秒的预算吃光。
说实话我最近刚把7B模型量化到AWQ 4bit跑过,掉点没想象中那么夸张,知识库问答这种场景基本感知不到,但显存确实能省下一大截。你那个20个实例的说法太理想了,实际还要算上KV cache和vLLM的预留,建议你直接用2卡各跑一个实例做负载均衡,这样单卡压力小,TTFT也更稳。另外A100跑7B其实没必要上4卡张量并行,通信开销反而拖慢速度,除非你的并发真的高到单卡扛不住。
我们组之前用7B做过压测,单卡A100 80G跑16并发左右TTFT就开始飘了,跟显存关系不大,主要是算力瓶颈。建议你先别纠结量化,AWQ 4bit在知识库场景掉点其实能接受,但RAG检索质量对最终效果影响更大。如果预算允许,4卡张量并行对单请求延迟更友好,2卡负载均衡则是吞吐上限高,但你要求2秒内响应,我倾向后者,因为知识库问答请求通常短而密集。顺便问下,你vLLM的max-num-seqs调过没?默认值可能太保守了。
看你这个场景,2卡各跑一个实例做负载均衡更稳,张量并行虽然单请求快,但并发一高卡间通信反而拖后腿。AWQ 4bit在知识库问答这种短文本场景掉点真不明显,但记得把max_seq_len调小点能省不少显存。另外TTFT变长大概率是vLLM的continuous batching没调好,试试把--max-num-seqs锁到16左右,体感会好很多。
建议直接上4卡张量并行,AWQ 4bit在知识库场景掉点不明显,TTFT比双实例稳多了。
4卡张量并行延迟更稳,AWQ 4bit在知识库场景掉点其实能接受,建议先量化试跑。
我们最近也踩过这个坑,vLLM的连续批处理会吃满KV cache,显存和你说的20个实例完全对不上。建议先开--max-num-seqs压到32,再把--gpu-memory-utilization调到0.9,实测单卡A100能扛住50路左右,TTFT能压在1.5秒内。AWQ 4bit在知识库问答这种短文本场景掉点其实不明显,但如果你要检索长文档还是得用8bit,不然引用细节会丢。另外别上4卡张量并行,跨卡通信延迟在低并发下反而更糟,2卡各跑一个实例做负载均衡更稳,出问题也好排查。
实测过Qwen2.5-7B在A100上,AWQ 4bit大概能压到6-7G显存,但20个实例纯属理论值,vLLM的KV cache和PagedAttention一开,实际并发到8路TTFT就开始飘了。知识库问答如果检索占时间,建议2卡各跑一个实例加负载均衡,比4卡张量并行稳,单点故障影响也小。4bit掉点看场景,实体抽取和短问答基本无感,长文本生成偶尔会丢细节,你先拿自己知识库跑个评测集对比下再定。
说实话你这问题我上个月刚踩过一遍坑,最后测下来单卡A100跑7B满并发也就30路左右,再往上TTFT直接飙到3秒开外,根本没法用。20个实例那个说法太理想了,实际显存里还有KV cache和中间激活值,尤其是长上下文场景,显存涨得比你预期快得多。我觉得你不如别纠结4卡张量并行还是2卡负载均衡,先看你的知识库问答是不是真的需要那么高并发,如果是内部工具,50路以内单卡加个合理的队列机制完全够用。AWQ 4bit我试过,掉点确实有,但主要是在复杂推理和多轮对话上,纯知识库检索问答这种场景差距不明显,你可以先量化跑一轮离线评估看下召回率。真要上4卡张量并行,得考虑vLLM的调度开销和跨卡通信延迟,小并发下反而可能不如单卡快。我建议你直接用2卡各跑一个实例,前面加个nginx或者vLLM自带的router做负载均衡,这样单实例挂了还能冗余,实际体验比张量并行稳得多。
同款Qwen2.5-7B,vLLM默认的continuous batching吃显存很猛,20个实例纯属理论值,实际8个并发就卡TTFT了。我最后是2卡各跑一个实例,配nginx轮询,单路延迟稳定在1.5秒左右,比单卡塞4个实例强太多。AWQ 4bit在知识库问答这种短文本场景几乎无感,但你要是喂长文档就得留意输出变啰嗦的小毛病。另外建议开一下--enable-prefix-caching,如果你的知识库问题都是带固定上下文的,这个能省一大截算力。
我们从7B的量产经验看,单张A100跑满并发基本在8-12路左右就到头了,TTFT超过1.5秒体验就崩。你不如直接上2卡各跑一个实例做负载均衡,这样单路延迟更稳,而且4卡张量并行对7B来说通信开销反而浪费算力。AWQ 4bit在知识库问答这种短文本场景掉点很小,但我建议先跑一遍你们自己的测试集,重点看长尾答案的连贯性。另外vLLM记得开continuous batching,显存别塞太满,留个10%给推理峰值。
2卡各跑一个实例更稳,AWQ 4bit在知识库场景掉点不明显,TTFT卡在显存带宽上,张量并行改善有限。
实测过2卡各跑实例,并发翻倍但显存碎片多,4卡张量并行TTFT更稳,建议先上4卡。AWQ4bit掉点不大,知识库问答够用。
说实话你这问题我太有共鸣了,之前调优时也卡在显存和并发这个死结上。vLLM的continuous batching确实能塞下不少请求,但显存占用会随着max_num_seqs和KV cache预留动态涨,网上说的20个实例多半是没算上prefill峰值,实际跑起来8到12路并发就到头了。你A100单卡跑7B全精度,TTFT超过2秒大概率是prefill阶段被长prompt卡住,知识库问答的输入经常有几百token,这块比生成更吃资源。我的建议是别纠结4卡张量并行,那东西对7B模型收益很小,通信开销反而拖慢单路延迟,不如2卡各跑一个实例配nginx负载均衡,至少故障隔离和扩缩容灵活得多。AWQ 4bit掉点要看你的数据分布,如果是抽取式问答或短答案生成,基本感觉不到差异,但如果是开放域长文本推理,逻辑连贯性会有点崩,最好拿你们真实语料跑个AB对比。还有个坑是vLLM的--gpu-memory-utilization别默认设0.9,留点余量给碎片,实测0.85左右并发峰值反而更稳。你要是能接受稍微改下代码,试试把prompt截断到512token,TTFT能降30%以上,比换卡划算多了。
你这场景我熟,我们之前也卡在显存和延迟上。7B模型实际跑起来KV cache和中间激活值很吃显存,网上那些20实例多半是纸面参数,别太当真。2卡各跑实例做负载均衡比4卡张量并行更划算,至少单路故障还能兜底,TTFT也更稳定。AWQ 4bit在知识库问答这种短文本场景掉点其实不大,但建议你先量化后跑一遍测试集,重点看长上下文的回复连贯性。另外vLLM记得开continuous batching,2秒响应目标单卡并发控制在8-12路比较稳。
要不你先用小规模压测脚本模拟下真实问答长度,别光看benchmark数字,生产环境用户问题长度方差很大,有时候是显存没爆但调度排队把延迟拖上去了。
我们组之前试过Qwen2.5-7B,单卡A100塞20个实例纯属扯淡,光KV cache就够喝一壶了。实际测下来8并发以内TTFT还能压住,再往上就线性恶化,你这2秒的SLA建议直接砍到6路。别纠结4卡张量并行,那个跨卡通信延迟在小batch下反而吃亏,双卡各跑一个实例做负载均衡更稳,还能顺手扛单点故障。AWQ 4bit掉点其实看领域,知识库问答这种抽取式任务影响不大,但要是生成式回答带长上下文,明显能感觉逻辑变飘,建议先用GPTQ残差校准下再上线。
Qwen2.5-7B用vLLM在A100 80G上,FP16权重就占15G左右,加上KV Cache和激活,实际并发上去显存涨得很快,20个实例那是理论值别当真。我之前跑过类似配置,单卡稳定支撑8-10路并发比较现实,再多TTFT就压不住了。4卡张量并行延迟能降但吞吐未必划算,2卡各跑一个实例加负载均衡对知识库问答这种场景更实用。AWQ 4bit掉点其实还好,知识库问答基本感知不到,但2秒内响应得看你的检索链路占多少时间,别光盯着模型这块。
你这个场景跟我之前做内部知识库问答挺像的,说下我的实际感受。A100 80G跑Qwen2.5-7B-Instruct,如果用vLLM默认的gpu_memory_utilization=0.9,光KV cache就能吃掉不少,想塞20个实例基本不现实,那是小模型或者短上下文才可能。并发一上来TTFT变长,很多时候不是算力不够,而是请求排队加KV cache碎片化,你可以试试开chunked prefill,再把max_num_seqs调低一点,牺牲点吞吐换延迟。至于4卡张量并行还是2卡各跑一个实例,知识库问答这种输入长、输出短的场景我更偏向后者,TP通信开销在解码阶段其实挺伤的,双实例加个前置负载均衡反而更稳。量化方面AWQ 4bit我测过Qwen系列,知识库问答掉点不算明显,但如果你对答案忠实度要求高,建议先拿一批真实问题做对比,别只看benchmark。2秒内响应的话,关键还是控制输入长度和检索返回的chunk数量,模型本身不是瓶颈。