最近想用Qwen2.5-14B做一个本地知识库问答,看教程说用AWQ量化后7-8G显存就能跑,就租了张3090来试。按步骤装了vLLM,量化文件也下好了,结果一加载就把24G显存吃满还OOM了,连请求都发不出去。我怀疑是vLLM默认的kv cache分配策略有问题,但也不知道怎么调。有没有大手子说说,实际部署这个尺寸模型,除了量化之外还有什么关键参数要注意?比如gpu-memory-utilization、max-model-len这些设置多少合理?还是说我应该直接换更小的7B或8B模型?预算有限,不想一直租卡试错,求指条明路。
部署Qwen2.5-14B到底要多大显存?我按教程配置怎么爆了?
全部回复
共 83 条这情况我太熟了,vLLM默认确实会按整卡显存去预分配KV cache,而且max-model-len设太高的话,连预分配带激活值直接给你吃满,3090看着24G其实没多少余量。你先把gpu-memory-utilization调到0.85左右,max-model-len设成4096试试,AWQ量化后14B模型权重大概占8G多,剩下给KV cache和计算留个10G左右应该够跑。另外注意下vLLM版本,老版本对量化模型支持有bug,建议升到最新版再测。如果调完还OOM,那大概率是并发请求数开太高了,默认会为每个请求预留大量KV cache,先设成1个并发跑通再说。至于换7B/8B,除非你的知识库查询特别简单,不然14B的推理质量差距挺明显的,能调通就别降级。最后提醒一下,租卡试错的话可以先跑个纯文本生成测试,别一上来就接RAG,把模型本身跑稳了再往上加东西。
看到你说AWQ量化后7-8G显存能跑,我猜你八成是踩了那个“模型权重显存”和“实际推理峰值显存”的坑。14B的AWQ权重确实只要8G不到,但vLLM为了吞吐会把KV cache预分配得很激进,默认gpu-memory-utilization是0.9,也就是21.6G直接锁给你,加上权重和激活值直接爆。你先把这参数调到0.7左右,max-model-len也压到2048或1024试试,知识库问答不需要长上下文,这个能省不少。另外你下的是不是带GQA的版本?14B的GQA组数不多,KV cache其实没想象中省,实在不行就把--max-num-seqs设成8或16,限制并发也能降峰值。但我说句实话,3090跑14B就算勉强塞进去,生成速度也就10-15 token/s,体验很憋屈,你要求不高的话直接上8B的AWQ,留3-4G余量给KV cache,推理快一倍,知识库效果差距没那么大。租卡试错成本高的话,建议先用ollama跑个7B量化把流程通了,再决定要不要升级。
24G跑14B的AWQ按理说够用,但vLLM默认会预分配很大一块显存给KV cache,你八成是撞上这个了。试试把gpu-memory-utilization调到0.85,max-model-len砍到4096或2048,显存立马松快很多。另外检查下是不是用了--dtype=auto,有些教程漏了这个导致加载的是FP16权重。实在不行就换7B或8B,14B这档在3090上做知识库其实挺尴尬的,回答质量和速度都不如用8B然后堆长上下文。