最近在搞一个私有化知识库问答项目,用的ChatGLM3-6B,想把模型部署到公司内网服务器上。机器是两张4090(24G),数据量不大,就几千条文档。试了FastChat,感觉启动挺方便,但并发一高响应就很慢,显存也吃紧。后来看别人说vLLM吞吐量高很多,但配置起来有点懵,PagedAttention那些参数不太会调。有没有大佬实际部署过这两个框架的?想请教下:1)6B模型用哪个更稳?2)两张卡怎么分配显存比较合理?3)如果量化成int8或者AWQ,实际效果和速度会差多少?求指点,感谢!
部署ChatGLM3-6B用vLLM还是FastChat?显存不够怎么优化?
全部回复
共 95 条vLLM的吞吐优势在6B上其实没那么夸张,但长上下文下PagedAttention确实省显存,我建议直接上vLLM,FastChat适合快速验证不太适合扛生产。两张4090的话别用张量并行,6B单卡就能跑,另一张可以留给embedding模型或者备用,省得显存碎片化。量化的话我试过AWQ,4bit下效果几乎无损,int8反而有点尴尬,速度提升不大但显存能省将近一半,你这数据量不大其实优先保证精度更重要。参数不用太纠结,vLLM默认配置改个max-model-len和gpu-memory-utilization到0.9基本就够用了。
两张4090跑6B其实挺宽裕的,建议先上vLLM试试,它那个PagedAttention不用你手动调太细,默认参数就能跑,gpu-memory-utilization设0.85左右两张卡各分一半就行。FastChat并发上来确实顶不住,我们之前也是这问题才换的。量化的话AWQ比int8体感好一些,速度大概能快个三四成,精度掉得不算明显,知识库问答场景基本够用。
两张4090跑6B直接上vLLM,张量并行加AWQ量化,吞吐稳很多,FastChat高并发确实吃力。
两张4090跑6B直接vLLM吧,AWQ量化后显存省一半速度也快,FastChat并发确实拉胯。
两张4090跑6B直接上vLLM吧,AWQ量化后单卡就够,吞吐比FastChat高好几倍,别折腾了。
几千条文档直接上vLLM吧,双卡张量并行加AWQ量化,6B跑起来又快又稳,FastChat并发确实拉胯。
我们公司上个月刚把ChatGLM3-6B从FastChat迁到vLLM,同样是两张4090,吞吐量提升非常明显,并发十几路基本没啥压力。显存分配建议用tensor-parallel-size=2,每张卡gpu-memory-utilization给到0.85左右,别拉满留点余量。量化方面试过AWQ,精度掉得不多但速度比int8快不少,几千条文档的RAG场景完全够用,唯一坑是vLLM版本要跟模型量化格式对得上,不然加载会报错。
两张4090跑6B其实挺够用的,vLLM确实吞吐比FastChat强不少,PagedAttention的gpu_memory_utilization给到0.85左右基本不用怎么调,tensor_parallel_size直接设2就行。量化的话AWQ比int8体感更好,速度损失小、显存能省快一半,精度掉得也不明显。FastChat并发一高就卡多半是没开连续批处理,换vLLM后这个问题基本就没了,值得折腾一下。
刚入门,这个对我帮助很大。
双4090跑6B绰绰有余,vLLM配AWQ量化最稳,并发直接起飞。
两张4090跑ChatGLM3-6B其实挺够用的,问题多半出在框架和并行策略上。我上个月刚把类似的项目从FastChat迁到vLLM,吞吐量差不多翻了三倍,尤其是并发上来之后差距特别明显,FastChat那个调度确实有点拉。vLLM的PagedAttention不用你手动调太多,gpu_memory_utilization设个0.85到0.9,tensor_parallel_size直接给2就行,两张卡张量并行比一张卡硬扛稳得多。量化这块我试过AWQ,显存能降到10G出头,速度反而比FP16快一点,精度掉得不算厉害,知识库问答基本感知不到;int8就一般了,省显存不如AWQ明显,速度也没优势,不太推荐。真要压显存优先考虑AWQ,别折腾int8了。另外你几千条文档的规模,瓶颈大概率在检索不在生成,embedding那块的batch和索引也得看看。
我们之前也是双4090跑ChatGLM3-6B,FastChat上手快但并发确实拉胯,后来换vLLM吞吐直接翻了几倍。PagedAttention其实不用太纠结,gpu-memory-utilization设0.85左右,tensor-parallel-size=2就行,两张卡别各塞各的。量化我们试过AWQ,速度比int8快不少,效果掉得也不明显,知识库问答基本感知不到。你们文档才几千条,其实可以考虑先把max-model-len调小点,显存能省一大截。
我们组上个月刚把ChatGLM3-6B切到vLLM,之前也是FastChat跑着,情况跟你几乎一样。FastChat做demo还行,但请求一多确实扛不住,它那个调度机制对并发不太友好,显存碎片化也严重。vLLM的PagedAttention你其实不用太怵,默认参数对6B模型基本够用,主要把gpu-memory-utilization调到0.85到0.9之间,tensor-parallel-size设成2就行,两张4090各扛一半,别让一张卡先爆。量化的话我实测AWQ比int8舒服,速度掉得不多,大概10%到15%,但显存能省将近一半,精度在知识库问答这种场景里几乎感觉不到差异,int8有时候反而因为反量化开销拖慢吞吐。你要真想稳,建议先拿AWQ跑vLLM,max-model-len别开太大,4096够用,再大显存又紧张了。另外几千条文档其实RAG检索层比模型部署更影响体验,别光盯着推理框架调。
我们之前也是双4090跑ChatGLM3-6B,FastChat上手快但并发确实拉胯,后来换vLLM吞吐直接翻倍。你两张卡可以试试tensor-parallel-size=2,gpu-memory-utilization给0.85左右,别拉满留点余量。AWQ量化我们实测显存能降到单卡12G以内,速度损失大概10%出头,效果基本没肉眼可见的下降,知识库场景够用了。
vLLM配AWQ量化两张4090跑6B绰绰有余,吞吐比FastChat高不少,参数默认基本就能用。