最近在搞一个私有化知识库问答项目,用的ChatGLM3-6B,想把模型部署到公司内网服务器上。机器是两张4090(24G),数据量不大,就几千条文档。试了FastChat,感觉启动挺方便,但并发一高响应就很慢,显存也吃紧。后来看别人说vLLM吞吐量高很多,但配置起来有点懵,PagedAttention那些参数不太会调。有没有大佬实际部署过这两个框架的?想请教下:1)6B模型用哪个更稳?2)两张卡怎么分配显存比较合理?3)如果量化成int8或者AWQ,实际效果和速度会差多少?求指点,感谢!
部署ChatGLM3-6B用vLLM还是FastChat?显存不够怎么优化?
全部回复
共 74 条vLLM吞吐确实香,但6B模型FastChat调好也够用,4090两张跑int8量化稳得很。
同款场景,我也是两张4090跑ChatGLM3-6B做内部知识库,FastChat启动是方便,但一压测就露馅,显存碎片化严重,后来切到vLLM之后吞吐直接翻倍,体感上响应速度快了不止一截。vLLM配置没那么玄乎,PagedAttention基本不用手动调,默认参数就能跑,主要把max-model-len和gpu-memory-utilization设好就行,两张卡建议各分配90%左右的显存,剩下留给KV cache。量化的话我试过AWQ 4bit,效果比int8好,困惑度下降不明显,但生成速度能再快个30%左右,不过如果你们文档检索后的prompt很长,建议还是先跑fp16,因为量化后长上下文下会有概率输出退化。你几千条文档其实数据量不大,瓶颈主要在并发和显存,vLLM开continuous batching之后,两张卡能撑住20个并发基本不抖。有个坑是vLLM对ChatGLM3的模板支持偶尔要手动改一下chat_template,不然多轮对话会串,FastChat就没这问题。
vLLM那个吞吐优势在6B上其实没想象中夸张,但PagedAttention对长文档场景确实友好,尤其你知识库碎片多的时候显存碎片能省不少。FastChat胜在省心,不过并发一上来就得靠调max-memory和swap参数硬撑,我试过把KV cache压到0.3以下才勉强稳。两张4090的话建议直接tensor parallel,单卡跑int8反而容易爆显存。量化这块AWQ比int8稳,速度基本不掉,但中文效果会有轻微损失,你文档量小的话可以接受。
vLLM确实香,我拿6B试过,吞吐量比FastChat高一大截,尤其并发上来以后差距很明显,不过配置确实要花点时间,PagedAttention默认参数其实够用,不用太纠结。两张4090的话建议张量并行,每张卡分12G左右,量化成int8显存压力小很多,速度损失大概在10%以内,AWQ更稳但部署麻烦点,看你项目对响应时延的要求了。另外几千条文档的话,检索这块是不是也吃显存?可以试试把embedding模型单独放一张卡,主模型用另一张,这样调度更灵活。
vLLM吞吐确实猛,但6B模型FastChat调好也够用,量化AWQ能省一半显存,速度损失不大。
vLLM吞吐确实猛,但6B规模FastChat调好batch也够用,别一上来就上强度。两张卡直接张量并行,int8量化损失小,AWQ速度香但显存省不了太多。
vLLM吞吐确实猛,但6B没必要上量化,两张卡张量并行跑FP16最省心。
vLLM确实值得折腾一下,6B模型并发高的时候PagedAttention优势很明显,我这边单卡24G跑int8能稳定撑住20路左右。两张卡的话建议张量并行关掉,直接数据并行各跑各的,省得通信开销反而拖慢速度。量化方面AWQ比int8稳,体感速度几乎没损失,但显存能省下4-5G,你这数据量其实不用太纠结精度。FastChat适合快速验证,真上生产还是vLLM吧。
这题我熟,之前踩过坑。vLLM配置别被参数吓到,默认值就能跑,主要调下max-num-seqs和gpu-memory-utilization就行,0.9那个值挺关键。两张4090别做张量并行,6B模型单卡完全带得动,双卡反而浪费带宽。量化我试过AWQ,4bit下回答质量掉得能接受,速度比FP16快将近一倍,显存直接减半,你知识库场景完全够用。
我用的vLLM,FastChat并发上来确实拉胯。显存分配这事,建议先看下你实际峰值占用,我这边24G单卡跑6B int8,KV cache留了8G左右,剩余给模型,用gpu-memory-utilization设成0.85就挺稳
vLLM吞吐确实猛,但6B这体量FastChat调好也够用,显存紧就上int8,AWQ效果更稳但麻烦点。
vLLM确实吞吐量香,但6B模型上FastChat调好tensor并行也够用,你这数据量瓶颈多半在RAG检索不在生成。两张4090建议直接张量并行,各占12G左右,剩下留给KV cache,int8量化基本无损,AWQ在小batch下收益不明显,但显存能压到10G以内,优先试试FP16+张量并行,真爆显存再上量化。
vLLM吞吐确实强,但6B模型FastChat调好batch也够用,两张卡直接张量并行就行。量化的话int8损失小,AWQ速度提升明显但得看你的知识库检索重不重。
4090双卡跑6B其实vLLM更省心,pagedattention默认参数就行,显存不够就开gpu-memory-utilization到0.9。int8和AWQ我实测差距不大
vLLM吞吐确实强,但6B这规模FastChat调好也够用,4090双卡建议tensor parallel加int8量化,AWQ效果更稳但部署麻烦点。
vLLM上限高但调参费劲,你这规模FastChat加量化够用,两张卡各塞一半模型就行。
vLLM吃显存更狠但吞吐确实猛,6B的话两张卡用tensor parallel加AWQ量化最稳。