最近在搞一个私有化知识库问答项目,用的ChatGLM3-6B,想把模型部署到公司内网服务器上。机器是两张4090(24G),数据量不大,就几千条文档。试了FastChat,感觉启动挺方便,但并发一高响应就很慢,显存也吃紧。后来看别人说vLLM吞吐量高很多,但配置起来有点懵,PagedAttention那些参数不太会调。有没有大佬实际部署过这两个框架的?想请教下:1)6B模型用哪个更稳?2)两张卡怎么分配显存比较合理?3)如果量化成int8或者AWQ,实际效果和速度会差多少?求指点,感谢!
部署ChatGLM3-6B用vLLM还是FastChat?显存不够怎么优化?
全部回复
共 88 条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后这个问题基本就没了,值得折腾一下。