vLLM 本地大模型推理服务实战:从 OpenAI API 到吞吐、显存与延迟调优

前言:为什么本地推理服务会成为团队的基础设施 过去两年,很多团队已经把大模型从“能聊几句的玩具”推进到了真正的业务链路里:客服质检、代码助手、文档检索、知识库问答、BI 分析、研发自动化、设备运维助手,场景越来越具体,调用量也越来越稳定。这个阶段最容易遇到的矛盾是:单次体验看起来不错,但一旦多人同时使用,延迟、成本、限流、数据安全、模型版本控制都会变成工程问题。 如果只是给个人写一个脚本,直接调用云端 API 最省事;如果团队已经有私有数据、内网系统、稳定 QPS、固定模型和合规要求,本地推理服务就值得认真建设。它不是为了“完全替代云服务”,而是为了把一部分可控、可预测、可缓存、可审计的请求沉到自己的基础设施里:模型版本自己定,日志留在内网,显卡利用率自己优化,业务峰值也可以通过队列和降级策略来处理。 在这一类方案中,vLLM 是目前很常见的选择。它的优势并不是“启动一个模型”这么简单,而是围绕大模型在线推理做了系统级优化:OpenAI 兼容 API、连续批处理、PagedAttention、张量并行、流式输出、Prometheus 指标、较成熟的服务端参数。对于很多团队来说,vLLM 正好站在“研究代码”和“生产服务”之间:比手写 Transformers server 更接近生产,比完整平台又轻量许多。 本文不打算只列一组启动命令。我们会按工程落地的顺序讲清楚:怎样选择模型与硬件,如何启动 OpenAI 兼容服务,为什么 PagedAttention 对吞吐和显存很关键,压测时应该看哪些指标,常见参数如何调,最后再补上网关、监控、systemd、Docker Compose 和故障排查。读完以后,你应该能搭出一个可用的内网推理服务,并知道下一步该怎么把它调稳。 一、先把目标说清楚:不是“跑起来”,而是“稳定地跑” 很多本地大模型项目的第一步都很顺利:下载模型,装依赖,跑一个 demo,看见回复,大家都很兴奋。真正的问题通常在第二周出现:同事开始接入,输入长度不一样,输出长度不一样,有人跑 8K 上下文,有人开流式输出,还有人批量生成摘要。GPU 显存看起来还剩不少,但请求排队越来越长;某些请求首 token 等待十几秒;升级模型后,原来的参数突然不合适;日志里偶尔出现 CUDA OOM,却很难复现。 所以在搭 vLLM 前,建议先明确四个目标。 第一,服务对象是谁。是给内部研发少量调用,还是给业务系统持续调用?如果只是研发使用,优先保证灵活性;如果是业务链路,优先保证限流、监控、灰度和回滚。 第二,模型规模是多少。7B、14B、32B、70B 对显存和并行方式的要求完全不同。模型越大,单卡部署越困难,吞吐和延迟的权衡也越明显。不要只看参数量,还要看量化格式、上下文长度、是否需要多 LoRA、是否要跑 embedding 或 rerank。 第三,请求形态是什么。短问短答、长文摘要、代码生成、Agent 工具调用的 token 分布差别很大。Prefill 阶段主要处理输入 token,Decode 阶段逐 token 生成输出;输入特别长会拉高首 token 延迟,输出特别长会占用更久的 KV Cache。压测时如果只用“你好”这种请求,结果没有参考价值。 第四,接受什么样的服务等级。比如 P95 首 token 延迟小于 3 秒,平均输出速度大于每秒 40 token,排队超过 30 秒直接返回忙碌,单 GPU 显存利用率维持在 85% 左右。这些指标越早写下来,后面调参越不会靠感觉。...

June 6, 2026 · 5 min · 👁️ 0 · Tech Snippets