
上周五半夜我们线上的大模型推理网关突然告警TPS 跌穿地心GPU 显存直接 OOM。运维一顿排查发现是业务方切了个几万并发的渠道vLLM 的 KV Cache 瞬间被打爆。为了选型新的推理底座我花了整整三天在真实生产物理机上把 vLLM、SGLang、TensorRT-LLM 等主流框架扒了个底朝天。结论先行没有任何一个框架是银弹如果你的业务是高并发短文本无脑选 vLLM如果是复杂 Prompt 和超长上下文SGLang 是降维打击如果你有极端的极致延迟要求且不差工程师上 TensorRT-LLM。今天直接把压测数据和踩坑实录端上来看完保证你少走半个月弯路。一、 为什么大厂都在疯狂卷推理框架其实很多小公司还在用原生的 Transformers 或者直接包一层 FastAPI 就敢上生产这在内网玩玩可以一旦放到真实的生产环境QPS 10两个致命问题马上教做人显存碎片化并发一高显存分配释放跟不上直接 OOM 崩溃。计算密集度低Prefix 阶段和 Decode 阶段的算力利用极不平衡导致 GPU 一直在“等待”。所以搞定 Continuous Batching动态批处理和 PagedAttention分页注意力的推理框架成了后端系统的“救命稻草”。下面直接看我们这三天几轮压测下来的真实对比。二、 五大框架实战横评与避坑指南为了公平我们的压测环境统一为4 * NVIDIA A100 (40G)模型采用Qwen-2-72B-Instruct (GPTQ_INT4)。1. vLLM高并发短文本的绝对王者vLLM 是目前开源圈最火的它的 PagedAttention 确实牛。在我们的“高并发短对话输入500 token输出200 token”场景下它的吞吐量Tokens/s稳居第一。❌踩坑实录千万别开启默认的 chunked-prefill分块预填充我在生产上为了图省事直接python -m vllm.entrypoints.openai.api_server结果高并发时延迟 P99 飙升到 10 秒以上。原因在同时处理长上下文和短上下文时vLLM 的调度器为了拉满吞吐量会把 prefill 和 decode 混在一起导致短文本请求被长文本计算“卡住”。✅正确配置python-mvllm.entrypoints.openai.api_server\--modelQwen/Qwen2-72B-Instruct\--disable-custom-all-reduce\--enable-chunked-prefillFalse# 关键延迟敏感业务必须关掉或者限制 max_num_seqs2. SGLang复杂 Prompt 的性能怪兽这是 LMSYS 团队放出的王炸。它两个核心特性RadixAttention前缀树缓存和约束解码。我们的业务有个复杂的 Few-shot 提示词加起来有 3000 token但每次只有最后一句用户输入在变。用 vLLM 时每次都要重新跑一遍 Prefix慢得要死。切到 SGLang 后相同的系统提示词直接命中缓存首字响应TTFT时间从 1200ms 暴降到 350ms性能暴涨 300%❌踩坑实录部署时如果把 SGLang 放在 Docker 容器里且开启了多机多卡NCCL 通信极其容易卡死。✅正确做法如果是 Docker 部署务必开启宿主机的 IPC 共享。dockerrun--gpusall --shm-size 16G-it...# --shm-size 必须给够3. TensorRT-LLM高攀不起的性能天花板老黄的亲儿子。我们花了极大精力把模型转成 TensorRT 的 engine 格式编译后单看延迟确实比 vLLM 快了大概 15%。但是它实在太重了你只要改一行业务代码的提示词模板或者换个模型你就得重新走一遍繁琐的编译流程。如果你没有专门的算法/部署工程师去维护这套流转线千万别碰它。4 5. LMDeploy TGILMDeploy (商汤)对 internLM 系列优化极好但生态不如 vLLM 丰富稳定性在常规场景下表现中规中矩。TGI (HuggingFace)起步早兼容性好。但我们压测时发现在极长上下文16k时它的 P99 延迟极高目前我们团队已经基本将其从备选库中剔除。你怎么看上面提到 vLLM 的吞吐量和 SGLang 的 RadixAttention 前缀缓存。在你们公司的实际业务中大模型应用是偏向于多轮短对话客服/AI助手还是偏向于重度长文本分析文档总结/RAG外挂主打短平快我们坚定不移用 vLLM。死磕长文本和复杂 RAGSGLang 才是未来。财大气粗/对延迟要求苛刻直接梭哈 TensorRT-LLM。欢迎在评论区留下你们的真实技术选型我看看大家的业务侧重点都在哪落地工作流总结给架构师的 5 条避坑清单测试先于选型不要只看 Benchmark 跑分一定要拿你们自己真实业务的 Prompt 分布去压测。短文本和长文本的配比直接决定了最终的吞吐表现。监控指标抓重点别光盯着 QPS核心盯住GPU 显存占用率、KV Cache 命中率、P99 延迟。尤其是 P99业务方对卡顿极其敏感。部署隔离长短文本请求务必分开部署到不同的推理集群千万不要把它们塞进同一个框架实例中否则调度器会让你痛不欲生。保留降级方案无论你选哪个开源框架务必在网关层加上熔断机制。例如用 OneAPI 或者 Higress 做统一控制发现推理节点 OOM 立刻重启并切流。对齐 CUDA 版本无数血泪史证明报 80% 的部署 Bug 都是因为底层 CUDA / cuDNN 版本和框架要求的版本对不上。写了这么多如果你在搞 RAG 或者大模型落地时也被推理延迟搞到头皮发麻或者遇到过奇奇怪怪的 OOM 问题欢迎在评论区说出你的“惨案”点赞收藏不迷路顺手点个关注下一期我将手把手教大家《在生产环境如何用 Nginx Lua 玩转大模型网关的“长连接保活与高并发熔断”》绝对硬核我们下期见