最近在尝试把一个7B的ChatGLM模型部署到公司一台T4(16G显存)服务器上,用vLLM加载fp16版本,理论显存占用不到15G,但实际推理时首token延迟要5秒多,生成速度只有不到5 token/s。试了调整batch size和max_num_seqs,效果不明显。是不是T4的带宽太拉了?或者需要上量化?但量化后效果会不会崩?有没有大佬分享下低成本优化推理速度的经验?先谢过了。
部署7B大模型到服务器,显存总够但推理速度慢得离谱,求助优化思路
全部回复
共 168 条T4那点带宽确实拖后腿,试试AWQ 4bit量化,基本不掉点还能快不少。
T4那带宽确实拖后腿,试试AWQ 4bit量化吧,7B掉点不太明显,速度能翻倍。
T4跑7B fp16确实挺吃力的,核心瓶颈不是显存而是带宽,T4才320GB/s,vLLM的PagedAttention在这种卡上优势发挥不出来。你可以试试AWQ或GPTQ 4bit量化,ChatGLM社区有现成的量化权重,实际体验掉点没那么夸张,生成速度翻两三倍很常见。另外把gpu_memory_utilization调高到0.95,enable_chunked_prefill打开,首token能降不少。要是还嫌慢,考虑换L20或者二手3090,性价比比在T4上死磕强。
T4这卡确实有点尴尬,16G显存看着够用,但带宽只有320GB/s,跑7B fp16模型推理时权重加载本身就吃带宽,首token慢基本是板上钉钉的事。你5秒多的首token延迟其实还算正常范围,生成5 token/s也符合T4的预期,别太指望它能飞快。量化这块可以试试AWQ或者GPTQ的int4版本,7B量化后显存大概降到5-6G,速度能翻个两三倍,效果损失在多数场景下感知不明显,但具体还得看你业务对精度的容忍度。vLLM在T4上其实不太吃得开,它那套PagedAttention对算力和带宽要求偏高,换TensorRT-LLM或者llama.cpp的CUDA后端说不定更合适。另外可以看看是不是开了enforce_eager,关掉它用CUDA graph能省不少开销。batch size调大对吞吐有帮助但对单请求延迟没啥用,你如果是单路对话场景,重点应该放在减小时延而不是堆batch。实在不行就换张A10或者4090,T4拿来跑7B确实有点勉强了。
T4就这带宽,换INT4量化能快不少,效果掉一点但日常够用。
学到了,感谢分享!
刚入门,这个对我帮助很大。
这个思路不错,收藏了。