vLLM部署GLM-5.1:高并发推理实战

你花三天调出来的智能客服小程序,上线第一天就崩了——不是代码有 bug,是推理太慢。

中午 12 点,10 个用户几乎同时提问,你的 GLM-5.1 模型每次只答一个人。第一个人回复 2 秒,第二个人等 4 秒,第三个人等 6 秒……到第四个人,网页直接超时。用户体验断崖式滑坡,你盯着 GPU 利用率发呆:才 30%,显存却快满了,剩下的算力像堵在早高峰十字路口,干烧油不走车。

这不是你的模型不够聪明,而是推理引擎不会「拼车」。

为什么普通部署扛不住并发

多数人用大模型的第一直觉是:启动一个服务,来一个请求处理一个。这就像开一辆五座轿车,每次只拉一个乘客就发车。即便车上还有四个空位,也绝不会等人拼单。GPU 上闲置的计算单元(类比空座位)就这么浪费了,而显存里存着模型权重和不断扩张的对话缓存(Key-Value cache),很快碎片化到无法放进新请求。

vLLM 0.21.0 的做法不同。它用了两件利器:PagedAttention连续批处理

PagedAttention 把显存中的对话缓存切分成固定大小的「块」(page),就像操作系统的虚拟内存分页。不再需要为每个请求预留一整块连续显存,块可以灵活拼接,显存碎片率从 40% 降到不到 4%。你几乎可以把 GPU 显存用到极限而不崩。

连续批处理则把「拼车」发挥到极致。每进来一个新请求,vLLM 不是让它排队,而是立刻插进当前正在计算的批次里。你不再等待一批凑齐再发车,而是「车门永远敞开,随时落座,随时出发」。这样 GPU 利用率能轻松压到 90% 以上,同一张显卡同时服务几十个用户,延迟却只增加一点点。

动手试试:用 vLLM 部署 GLM-5.1

前提:你已经有一张显存足够的 GPU(运行 GLM-5.1 官方模型大概需要 80GB+,可考虑量化版本),并且安装好驱动。现在开始。

安装 vLLM 0.21.0 和测试用并发库:

pip install vllm==0.21.0 aiohttp

启动 OpenAI 兼容的 API 服务(确保模型路径正确,这里假设已下载至本地或可通过 HuggingFace 拉取):

python -m vllm.entrypoints.openai.api_server \
    --model glm-5.1 \
    --host 0.0.0.0 --port 8000 \
    --gpu-memory-utilization 0.95

--gpu-memory-utilization 0.95 意思是允许 vLLM 使用最多 95% 的显存来缓存对话块,尽可能塞进更多并发请求。

服务启动后,我们写一个并发脚本,模拟 12 个用户同时发问。

import asyncio
import aiohttp
import time

async def query(session, prompt):
    payload = {
        "model": "glm-5.1",
        "messages": [{"role": "user", "content": prompt}],
        "max_tokens": 50
    }
    async with session.post(
        "http://localhost:8000/v1/chat/completions", json=payload
    ) as resp:
        return await resp.json()

async def main():
    prompts = ["讲个笑话", "什么是量子力学", "推荐一本好书", "解释一下油价的涨跌原理"] * 3
    start = time.time()
    async with aiohttp.ClientSession() as session:
        tasks = [query(session, p) for p in prompts]
        results = await asyncio.gather(*tasks)
    elapsed = time.time() - start
    print(f"12个并发请求总耗时:{elapsed:.2f}秒")
    print(f"第一个结果片段:{results[0]['choices'][0]['message']['content'][:30]}")

asyncio.run(main())

如果换成逐个请求,12 个问题可能需要 20~30 秒。而 vLLM 下,你大概率会看到总耗时缩短一半以上,因为连续批处理自动把多个请求的计算重叠在一起,GPU 再也不会「空跑等人」。

这对你意味着什么

最直接的是省钱。原本需要两块显卡才能扛住的并发,现在一块卡就能搞定;原本要上推理专用芯片的场景,现在消费级大显存卡也可能胜任。对于个人开发者和中小团队,私有部署大模型的成本门槛被一脚踹低。

其次,它让你能以云原生的方式使用开源模型。vLLM 暴露的是标准 OpenAI 接口,你现有的任何依赖 ChatGPT API 的应用,都可以直接换成本地 http://localhost:8000/v1,零改动迁移。

当然,vLLM 的优化主要在吞吐而非单请求延迟。如果你的场景是一个用户不断追问、每次只发一条消息,那优化效果不大。另外,GLM-5.1 这类超大模型依然需要巨大的显存空间,量化版本(类似将高清图压缩为 JPG)能显著减负,但损失多少精度需要你在实际任务上评估。

下次再有人跟你说「开源大模型太慢了,根本没法上线」,你已经知道了:不是模型慢,是你没给它配个会拼车的司机。


皖ICP备2025105865号-2|皖公网安备34010402704739号