vLLM 生产部署笔记:从 PagedAttention 到 OpenAI 兼容接口

陈老师871 阅读

如果你的 QPS 需求超过个位数,别用 transformers 硬扛,直接上 vLLM。我这次把服务从 HF pipeline 迁到 vLLM,同样的 4090,吞吐从 12 tokens/s 干到 80+,关键是不用改业务代码,因为它自带 OpenAI 兼容接口。

部署命令其实就一行:

Bash
python -m vllm.entrypoints.openai.api_server --model /data/models/Qwen2.5-14B-Instruct --gpu-memory-utilization 0.9 --max-model-len 32768 --served-model-name qwen

启动后 8000 端口就是 /v1/chat/completions,之前调 OpenAI 的代码把 base_url 一换就能用。

说几个我实际踩的坑。

第一,--max-model-len 别拍脑袋设。它直接决定 KV cache 能开多大。设小了长文本直接崩,设大了并发上不去。我用 32768 是因为业务里有大量长文档问答,如果只是短对话,8192 完全够,并发能翻几倍。

第二,gpu-memory-utilization 别拉满。0.95 看着爽,但一旦峰值请求来了直接 OOM,vLLM 不会优雅降级,整个服务崩给你看。0.85-0.9 比较稳。

第三,换模型要重启。vLLM 不支持动态加载多个模型(新版本对单卡多模型支持还很弱),我一开始想一个进程服务两个模型,折腾半天发现还是拆成两个实例靠谱。

最后,生产环境记得加 --trust-remote-code,有些模型的 modeling 文件需要本地执行,不加会直接拒绝加载。

评论0

还没有评论,来抢沙发~