从 2024 年到现在,我前后帮团队和个人落地了不下十几个大模型部署项目,从小玩具式地跑通一个 7B 对话模型,到给上百人内部使用的知识库问答系统,再到面向外部用户的 API 服务。这中间踩过的坑、交过的学费,让我越来越觉得,部署大模型这件事,最难的其实不是模型本身,而是整套工程链路怎么选、怎么搭、怎么稳定跑住。这篇内容我打算按 2026 年的技术现状,把大模型服务器部署这件事从头捋一遍,重点放在框架选型、云服务对比,以及一条可以直接抄作业的生产级部署流程上。适合两类人看:一类是刚准备在公司内部落地大模型服务、正在纠结买什么卡怎么搭框架的人;另一类是自己有 GPU 机器、想把本地部署大模型做得更规范一些的个人开发者。看完这篇,你至少能搞清楚自己应该选 vLLM 还是 SGLang,云服务器该按量买还是包月买,以及一个能扛住真实流量的服务该是什么样。
1. 部署前先算清楚账:模型需求测算与硬件选型
1.1 显存不是越大越好,得先算准模型到底吃多少
很多人上来就问“我要部署 70B 模型得买几张 A100”,这个问题本身就有问题。正确的问法是:你的模型精度是什么、上下文多长、预计多少并发,这三个条件拿到手,显存需求基本就能直接算出来。
模型权重占用的显存有个很朴素的计算方式:参数量乘以每参数字节数。以 FP16 精度为例,一个 7B 模型就是 7 × 10⁹ × 2 字节,约等于 14GB。如果换成 INT8 量化,每参数只需要 1 字节,显存降到 7GB 左右;INT4 量化(通常实际约 0.5 字节每参数)则只需要 3.5GB 上下。很多人拿这个数字直接买卡,结果发现还是 OOM,原因是漏掉了 KV Cache。
KV Cache 是推理过程中缓存历史 token 的中间状态,它的大小取决于层数、隐藏层维度、批大小、序列长度和精度。简化公式可以写成:KV Cache ≈ 2 × 层数 × 隐藏层维度 × 批大小 × 序列长度 × 每元素字节数。拿 Qwen2.5-7B 举例,28 层、隐藏维度 3584,如果跑 8 个并发请求、每请求 4096 token、FP16 存储,KV Cache 就要吃掉大约 12GB 显存。也就是说,光权重 14GB 加上 KV Cache 12GB,一张 24GB 的 4090 刚好卡在临界点,稍微多两个请求就爆。
所以我的习惯是先按峰值场景算,再留 20% 到 30% 余量。公式本身不复杂,真正容易犯错的是批大小和序列长度这两个变量经常被忽略。生产环境里你会很快发现,同样的模型,并发从 8 提到 32 之后,显存曲线几乎是直线上升。
1.2 硬件选型的三个典型路线
硬件选型没有万能答案,但基本逃不出三个路线。
第一条路线是消费级显卡,代表是 RTX 4090、RTX 5090 这类 32GB 左右的卡。它们的优势是便宜、容易买到、生态完善,跑 7B 到 14B 量级的模型非常舒服,个人开发者和小团队首选。缺点是显存上限卡死了,如果想跑 32B 以上模型就得靠多卡拼接,而且消费级卡没有数据中心级卡的 NVLink 高速互联,多卡通信延迟会比较难受。
第二条路线是数据中心级 GPU,比如 A100、H100、H20、L40S 这些。80GB 显存意味着单个模型选择空间大了很多,70B 模型用 FP16 或 AWQ 量化也能塞进单卡。而且数据中心卡的显存带宽更大(A100 大概 2TB/s,4090 大概 1TB/s),这对解码速度有直接影响。缺点是贵,一张 H20 按 2026 年初的市场行情也不便宜,不是每个团队都能接受这个预算。
第三条路线是纯 CPU 推理加内存扩展。对延迟不敏感的场景(离线批量分析、夜间定时任务)这是性价比之王。几个大内存的 CPU 机器用 llama.cpp 跑量化模型,吞吐量不一定差,而且内存比显存便宜一个数量级。之前给一个团队做过日志分析的离线任务,用 512GB 内存的 ECS 跑 Qwen2.5-14B 的 INT4 量化版本,一晚上处理几十万条日志毫无压力,成本只有 GPU 方案的零头。
选硬件还有一个很容易被忽略的点:如果你用的是 Windows 开发机,而显卡是 Tesla 系列(比如 T4、A10),系统默认走 WDDM 驱动模型,会有约 20% 的计算性能损失。在 NVIDIA 控制面板里切换到 TCC 模式能恢复满性能。当然 Linux 服务器没有这个问题,所以我个人强烈建议生产环境一律 Linux。
1.3 本地部署与云服务器的取舍逻辑
本地部署还是上云,这是战略问题,不是技术问题。我的判断标准只有三个:数据合规要求、算力使用密度、运维人力储备。
如果公司业务涉及用户隐私数据,或者有明确的“数据不出域”要求,那不用犹豫,本地部署,物理隔离最稳妥。别指望公有云厂商的各种合规承诺能完全替代物理边界,出了问题没人替你背锅。
如果业务量波动大,比如白天上班时间调用多、晚上几乎没人用,那买云服务器按量付费可能更划算。一台按量计费的 GPU 实例,忙时开、闲时关,一年下来实际费用可能只有包月的三分之一。但这个方案要求你的业务架构支持会话排队和弹性伸缩,不然半夜突然来一个请求,实例还在启动中的尴尬够你喝一壶的。
运维人力也是硬门槛。本地部署意味着机房、电费、硬件坏件、驱动升级全得自己管。云服务至少把这些都打包了。团队里如果没有一个能扛住硬件故障的运维,我倾向于建议先上云,把精力集中在模型和服务本身,而不是天天保服务器。
2. 2026 主流推理框架选型:vLLM、SGLang、TensorRT-LLM、llama.cpp 怎么选
2.1 vLLM:生产环境最稳的默认选择
vLLM 到今天依然是部署大模型绕不开的名字。它最核心的两个技术是 PagedAttention 和 Continuous Batching。PagedAttention 把 KV Cache 分页管理,类似操作系统内存分页,把显存利用率大幅提升;Continuous Batching 则是在一个 batch 里动态塞入新请求、踢走完成请求,而不是等整批全部跑完再处理下一批。
这两个特性带来的直接收益就是吞吐量高、显存开销可控。在 A100 或 H20 这类卡上,vLLM 服务的并发吞吐能力明显优于朴素实现。如果你要一次处理大量短请求(比如企业知识库问答、客服机器人),vLLM 几乎是无脑首选。
不过 vLLM 也有一些需要注意的地方。它对新模型结构的适配速度虽然已经很快(社区活跃度高),但遇到非常规自定义模型时,可能还是要等一两个版本才支持。另外如果你想用投机解码这类高级特性来压更低延迟,参数调节需要经验,直接套默认配置不一定效果最好。
部署 vLLM 很简单,一条命令就能起一个 OpenAI 兼容的 API 服务,这点后面第四部分详细展开。
2.2 SGLang:高并发和结构化输出的新锐力量
如果你对 vLLM 的吞吐还不满意,或者你的请求里有大量共享前缀场景(比如多轮对话、Agents 的多步推理),SGLang 值得认真评估。它提出了 RadixAttention,本质上是把不同请求中的公共前缀 KV Cache 复用起来,多轮对话场景里效果提升相当明显。我之前测试过一个多智能体协作任务,同样一批请求,SGLang 的吞吐比 vLLM 高了约 20% 到 30%。
SGLang 另一个强项是结构化输出。它可以对输出格式做约束,比如强制返回合法 JSON,这对工程化落地太重要了。接入下游系统时不需要再写正则或者多次重试来修复非法格式,省掉了一大堆胶水代码。很多最新的前端框架比如结合大模型做报表、表单自动填充,用 SGLang 会顺滑很多。
但 SGLang 的社区体量目前还小于 vLLM,遇到冷门模型或少见的算子时,排查资料的难度会大一些。我的建议是:团队里有算法工程师愿意跟进新框架的,可以把它作为 vLLM 之外的第二方案做 A/B 对比;纯运维团队还是先用 vLLM 稳一稳。
2.3 TensorRT-LLM:极致延迟优化的封闭生态
TensorRT-LLM 是 NVIDIA 官方出品的推理库,优势在于深度绑定 NVIDIA 硬件,通过层融合、内核自动调优等手段把延迟和吞吐压到极致。如果你的场景对首 token 延迟有硬指标(比如 500ms 内必须出结果),TensorRT-LLM 大概率是几个框架里最能逼近极限的。
它的代价是使用门槛高。模型需要先编译成 TensorRT Engine,每次换模型、换 batch 配置、换精度,都要重新编译,编译时间可能从几分钟到几十分钟不等。我试过一次在生产环境更新小版本模型,光编译就等了半小时,调度窗口完全被打乱。而且它没有开放式的生态,遇到高级定制需求时自由度不如 vLLM 和 SGLang。
还有个隐藏问题:TensorRT-LLM 的 License 是 NVIDIA 专项,商用有额外考量。虽然个人和一般企业使用问题不大,但法务敏感的公司在引入前最好过一遍协议。
2.4 llama.cpp:CPU 与边缘设备覆盖之王
llama.cpp 可能是被严重低估的框架,因为很多人觉得它只是个 CPU 推理玩具。实际上它的 GGUF 量化格式已经成了本地部署大模型的通用语言,配合 llama.cpp 可以在几乎任何设备上跑模型,从树莓派到 MacBook 再到无 GPU 的云主机。
它的另一个价值是内存映射加载模型,可以只加载权重的一部分到内存,所以超大模型在内存有限的机器上也能跑,只是速度慢。此外 llama.cpp 对 CPU 指令集(AVX2、AVX512)优化得很好,表现会比用 PyTorch 硬跑 CPU 好很多。
如果你只是给自己做个本地部署的个人助手,或者团队预算有限、想在普通云主机上先跑通一个 demo,llama.cpp 是很务实的选择。生产级高并发服务我不建议,但它的衍生项目比如 Ollama,确实大幅降低了本地部署门槛,适合小团队内部试用。
2.5 框架选型速查对照表
我把几个框架的核心差异整理了一下,方便你直接对照选型。
| 框架 | 定位 | 显存效率 | 吞吐 | 延迟优化 | 上手难度 | 典型场景 |
|---|---|---|---|---|---|---|
| vLLM | 生产级通用推理 | 高(PagedAttention) | 很高 | 良好 | 低 | 知识库问答、API 服务 |
| SGLang | 高并发、结构化输出 | 很高(RadixAttention) | 更高(共享前缀场景) | 良好 | 中 | 多轮对话、Agents 系统 |
| TensorRT-LLM | NVIDIA 极致性能 | 高 | 高 | 极致 | 高 | 对延迟有硬指标的在线服务 |
| llama.cpp | 轻量、跨平台 | 一般 | 低 | 一般 | 低 | 本地个人助手、离线分析 |
补充一个 2026 年很值得关注的方向:多模态大模型部署。现在的推理框架对视觉语言模型的支持越来越成熟,vLLM 和 SGLang 都原生支持了类似 Qwen2-VL、Llama-3.2-Vision 这类模型。框架选型的思路不变,但需要注意图片输入对显存的影响非常大,一张高分辨率图片经过视觉编码后产生的 token 可能是文本的数百倍,显存预算要额外留出一块。
3. 云服务怎么选:GPU 实例、容器服务与内网暴露方案
3.1 公有云 GPU 实例:按量、包月与抢占式的成本博弈
我用过的云平台比较多,包括阿里云、腾讯云、华为云、AWS、Azure,很多场景下它们提供的 GPU 实例规格大同小异,真正的差异在计价模型和服务生态。按量计费适合开发调试和突发任务,用完即关,不产生沉没成本;包月适合持续运行的生产服务,单位时长价格能便宜一半以上;抢占式实例(AWS 叫 Spot Instance)则是最极端的省钱方案,高峰期价格可能只有按量的一折,但随时可能被回收,只能跑可中断任务。
以 2026 年初某个主流云平台的 A10 24GB 实例为例,按量大概每小时几块钱,包月会降到每周占比折算的六到七折。而 H800 或 H20 这类 80GB 级别实例,按量价格就明显高一个量级了。如果你只是要部署一个 7B 模型跑轻量业务,A10 或 L4 级别的卡完全够用,没必要上 A100 或 H20。
选择云平台还要关注一个隐形指标:卡间互联和带宽。如果你要跑 70B 模型必须多卡并行,那么卡间的 NVLink 或高速互联能力就非常关键。某些云平台的 GPU 实例虽然便宜,但卡间走的是普通网络,多卡并行性能会打折扣。便宜的背后是架构不合理,这种情况我遇到过好几次,最后不得不加钱换实例规格。
3.2 容器服务与裸金属的选择
把模型服务跑在容器里已经是 2026 年的默认做法了,具体方式分两种:自建 Docker 加 Docker Compose 管理,或者用云厂商的托管 Kubernetes 服务。
自建 Docker 的好处是简单直接,机器上装好 NVIDIA Container Toolkit 之后,一行 docker run 就能把模型服务拉起来。缺点是没有自动扩缩容、故障转移这些能力,适合单机部署和服务数量少的场景。如果你预期流量会涨,或者想用蓝绿发布、滚动更新这些发布策略,直接上托管 K8s(比如阿里云 ACK、腾讯云 TKE、AWS EKS)会省心很多。V100 时代的一些操作习惯——比如手动改代码重启进程——在 K8s 里都会被 Pod 重新拉起的机制取代。
裸金属方案也有自己的生存空间。云上的 GPU 虚拟机存在虚拟化层开销,虽然现在 GPU 直通技术已经非常成熟,但某些极端延迟敏感的场景还是能感觉到细微差距。裸金属服务器按整机租用,性能和本地服务器几乎一致,代价是规格不能灵活变,扩容周期长。
我对大多数团队的推荐是:初期用裸金属或高配虚拟机跑 Docker Compose,等业务量起来再迁到 K8s。不要一开始就上全套 K8s,否则你会花大量时间处理运维细节,而不是调模型和服务。
3.3 私有化服务的远程访问与 API 暴露
私有化部署的产品交付后可访问性是大问题。就算在客户内网部署好了服务,你自己想远程登录服务器看看运行日志、更新模型,如果客户网络条件受限感觉寸步难行。更常见的场景是开发阶段,本地电脑需要访问公司测试环境里那台 GPU 服务器,而那台服务器没有公网 IP。
这个场景下最实用的方案之一就是 frp。比如一台阿里云 ECS 有公网 IP,把它当作中转服务端,公司内网的 GPU 服务器运行 frp 客户端主动连上来,之后你就可以通过 ECS 的某个端口访问内网服务器的 SSH 或其他服务。一条命令就能建立隧道,隧道对端可以随意指定端口。之前我在一个客户现场部署私有化模型时,就是靠这台 ECS 加 frp 远程跟进了一个多星期,完全没影响客户正常使用。
需要注意 frp 只是流量隧道,本身不做加密和认证,生产环境务必配置 token 鉴权,并且不要把 frp 的暴露端口直接开到公网,最好通过云安全组限制只允许你自己的 IP 访问。访问方式上如果再叠加一层 SSH 密钥,安全等级就基本够了。这类“免费内网穿透”的手法用来做开发调试效率极高,但千万别当成正式生产链路。
3.4 完整成本对比模型
做成本对比不能只看 GPU 实例小时单价,要把配套成本都算进去。我常用的对比口径是:单次推理成本或每月总拥有成本。
自购硬件方向上,一台 8 卡 A100 级别整机的采购成本、机房托管电费、制冷、运维人力,平摊到三年,每卡每月成本大约在几千块。用满负载场景去算,单次推理成本会很低;但如果利用率不到 30%,这个优势就被浪费了。
云上按量付费的优势是算力碎片化。你只用 2 个小时训练一个微调实验,成本就是 2 个小时的实例费,跑完释放实例,一分不多花。包月适合那种 7×24 提供服务、且流量稳定的场景,单价能低不少。这里我特别想说,很多团队买包月实例跑测试流量,白天全空转,这比按量计费浪费得多。正确的做法是给非生产环境套一层自动开关机策略,省下的钱够团队多吃好几顿火锅。
4. 生产级部署流程实操:从零到可用的完整链路
4.1 环境初始化:驱动、CUDA 与容器运行时
很多人部署大模型上来就装 Python、pip install,完全忘了底层环境。生产环境的顺序应该是:操作系统、GPU 驱动、容器运行时、模型服务。这一步顺序错了很容易出现“装完依赖后莫名跑不了”的问题。
操作系统我推荐 Ubuntu 22.04 LTS 以上,内核和网络栈都比较稳定。GPU 驱动安装建议直接从 NVIDIA 官方选对应版本,不建议用 Ubuntu 源里的老驱动。装好驱动后用 nvidia-smi 验证,看到显卡型号和驱动版本就说明第一步完成。
CUDA 其实不需要手动装到主机上,因为容器镜像里自带 CUDA 和 cuDNN。你需要装的是 NVIDIA Container Toolkit,它让 Docker 容器可以访问宿主机 GPU。这里有个常见的坑:Docker 默认并不暴露 GPU,必须在 docker run 时加 --gpus all 参数,而且宿主机得装好 nvidia-container-toolkit,否则报错 “could not select device driver”。类比一下就是你买好了显卡、也装了驱动,但没有显卡容器运行时这个翻译层,容器里还是看不见卡。
4.2 模型获取与 Hugging Face、ModelScope 的选择
模型文件下载是另一个容易被忽略的环节,特别是国内网络下直接访问 Hugging Face 的下载体验一言难尽。我的建议是优先 ModelScope,它上面的模型和 Hugging Face 基本同步,下载速度在多数情况下更友好。如果你依赖某些 HF 独有数据集,可以用 hf-mirror 这类代理工具,但下载大文件前一定要验证文件完整性,Safetensors 格式自带校验,可以放心一些。
关于模型格式:现在主流都推荐 safetensors,它比原生 PyTorch 的 .bin 文件加载更快、更安全,不会执行数组反序列化时的任意代码。下载目录结构要保持完整,至少包含 config.json、tokenizer.json、tokenizer_config.json 和权重文件。不少刚接触的人只下载了 safetensors 文件、漏掉 tokenizer,服务起不来报错也一脸茫然。
模型选定后建议做一次完整性验证,写个小脚本对每个 .safetensors 文件加载并检查维度,不用跑完整推理就能提前暴露损坏文件,远比部署到一半才发现数据读不了要省时。
4.3 用 vLLM 部署一个 OpenAI 兼容服务
环境准备好之后,vLLM 的部署过程其实很轻量。建议用 Python 3.11+ 的虚拟环境,安装 vllm 包,然后一条命令启动服务。在 2 卡 A10 或 H20 的机器上,命令大概是这样的:
vllm serve Qwen/Qwen2.5-7B-Instruct \ --tensor-parallel-size 2 \ --gpu-memory-utilization 0.9 \ --max-model-len 8192 \ --host 0.0.0.0 \ --port 8000 \ --served-model-name qwen2.5-7b参数含义要搞清楚:tensor-parallel-size 2 表示把模型切到 2 张卡上并行;gpu-memory-utilization 0.9 表示允许 vLLM 使用单卡 90% 显存,剩下的留给 CUDA context 等开销;max-model-len 8192 限制最大上下文长度,这是显存保护的关键参数。
启动完成后,可以用 curl 做一个最简单的连通性测试,请求 OpenAI 格式的 chat/completions:
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen2.5-7b", "messages": [{"role": "user", "content": "你好"}], "temperature": 0.7 }'如果返回包含 reply 字段的正常 JSON,说明服务链路已经通了。第一次测试建议把温度设为 0 且关闭流式,这样结果确定性更好,方便核对服务是否真的在跑模型。
4.4 生产级强度配置:并发、流式输出与监控
能够跑通只是起点,生产级服务需要考虑并发上限、响应时间要求和监控三件事。
首先并发。vLLM 里通过 --max-num-seqs 控制最大的并发序列数,这个值如果设得过大,显存瞬间被打满然后请求排队;设得小,吞吐又上不去。经验做法是根据首 token 延迟和期望并发来算:目标首 token 延迟 800ms,单请求平均预填充时间 300ms,那么并发可以放在 8 到 16 之间,然后再通过压测工具(比如 Locust)逐步调整。生产环境不要拍脑袋,一定要跑压测。
然后是流式输出。几乎所有前端体验好一点的对话应用都需要流式输出,OpenAI 兼容 API 里 SSE(text/event-stream)就可以直接支持。如果你是自研前端,最好在网关层就把非流式请求转换为流式,避免让客户端拿到迟到的全量响应。
监控层面最简单有效的组合是 Prometheus + Grafana。vLLM 原生暴露 /metrics 端点,里面有 token 吞吐、平均延迟、排队数量等指标。不需要一上来就做全套告警,先盯 GPU 利用率和显存使用率两个指标,显存超过 90% 就说明你的并发参数或者 max-model-len 设置过大了。
4.5 微调模型后怎么接回部署链路
部署大模型和服务微调是密不可分的两件事。很多团队在本地用 LLaMA-Factory、ms-swift 这类主流微调工具框架做微调,图的是这些工具把训练流程封装得足够简单,一键启动训练和评估。微调完成后,关键一步是导出模型。LoRA 训练出来的 adapter 不能直接部署到 vLLM,需要先把权重合并回基础模型,再导出为完整的 safetensors 格式。合并时注意精度选择和合并设备显存,14B 模型的 FP16 合并至少需要 32GB 显存或使用 CPU offload。
合并导出后,把它放到一个新目录,启动 vLLM 时直接把 serve 后面的路径指向这个目录即可。要提醒的是,微调容易过拟合训练集,部署前的评测要做足,不要因为训练 loss 降到很低就急着上线,用一个留出验证集测一下泛化效果更稳妥。
5. 部署阶段高频问题与避坑实录
5.1 OOM 显存不足:不是买更大显存就万事大吉
显存爆了是部署中最常见的报错,新手和老手都会遇到。排查路径要按顺序走:先看模型权重本身占了多少,再看 KV Cache 占了多少,最后看是否有其他进程抢占显存。
权重占比可以通过模型的 config 参数估算,KV Cache 用前面那个公式算,其他进程用 nvidia-smi 查看。如果确认是 KV Cache 过多,降低 --max-model-len 或 --max-num-seqs 最有效;如果确认是权重问题,那就需要换量化版本或减少 tensor-parallel-size。还有一种不起眼但很坑的情况:CUDA context 本身会占用几百 MB 到 1GB 显存,gpu-memory-utilization 设到 0.98 有时候反而触发上下文分配失败,留出 5% 到 10% 余量是稳妥的。
5.2 首 token 延迟过高:预填充阶段才是瓶颈
很多人测大模型服务只关注吐字速度,忽略了首 token 延迟。实际上用户在输入框里敲完问题,从点击发送到看到第一个字符的时间完全是“预填充”阶段在主导,和模型的解码速度关系不大。
预填充阶段要处理整个输入 prompt,它的耗时主要花在 GPU 矩阵运算和显存带宽上。优化首 token 延迟的手段包括:缩短输入长度、开启 prefix caching(vLLM 支持前缀缓存,相似问题会直接命中缓存跳过计算)、使用更小的量化精度,以及把模型换到显存带宽更高的显卡上。我实测过同样负载的 L20 和 A10,首 token 延迟差出近一倍,核心差距就是显存带宽。
另外一个极易被忽视的点是并发飙升。如果同一时刻有大量长文本请求进来,预填充压力会骤增,首 token 延迟会变成平时的好几倍。这需要在压测阶段就模拟真实流量分布,而不是只用短文本测试。
5.3 多卡并行不稳定:不要忽略 NCCL 通信
多卡部署时,刚启动可能报 NCCL 相关错误,常见原因是容器没有正确暴露 GPU 通信所需的环境变量。最常见的排查是检查宿主机的共享内存大小,Docker 默认 /dev/shm 只有 64MB,多卡通信经常需要更大的共享内存,docker run 时加 --shm-size 1g 或更大基本能解决一大半问题。
另一个不稳定的来源是驱动和 CUDA 版本混乱。如果机器上装了好几个版本的驱动,容器可能加载到不匹配的 CUDA runtime,通讯初始化的时候就直接崩掉。建议用官方 PyTorch 镜像或 vLLM 官方镜像,它们自带匹配好的 CUDA 版本,不要自己拼装环境。多卡调度这一块,GitHub 上有个很有用的经验是:设置 NCCL_P2P_DISABLE=1 来绕过某些不支持 P2P 的虚拟化环境,但这是万不得已的土办法,性能会有损失。
5.4 服务稳定性:优雅退出、请求超时与日志留存
大模型推理服务在真实场景下被各种异常请求冲刷是很正常的,服务本身要能扛住。首先给 API 网关层加请求超时,大模型被极端长输入拖住的时候,超时能快速释放资源,至少不会让整个进程堆积卡死。vLLM 支持通过环境变量或参数配置请求排队超时,建议生产环境设置 60 秒的上限。
其次进程要有监管,docker compose 里加 restart: always,进程崩溃后自动拉起。如果跑在 Kubernetes 里,配置 livenessProbe 和 readinessProbe,让 K8s 自动摘除不健康的 Pod。日志要统一采集到独立的日志系统,别只写在容器 stdout 里,轮转和清理也要有策略。大模型 API 的日志比其他服务更关键——它能帮你复盘每次回答质量下降、超时、注入攻击等问题,这是模型迭代的第一手资料。
最后一个经验是安全加固。API 暴露到公网时,至少要做三层防护:API Key 认证、来源 IP 白名单、限流。模型推理本身没有鉴权机制,不加防护的 API 可能被刷成资源黑洞。之前见过一个团队把测试环境的服务直接暴露公网,一个月跑了上千美元费用,事后才想起来加认证。
落到具体项目里,我在一次次部署中体会最深的一点是:框架选型和云服务选择其实都有可替代性,真正拉开差距的是部署流程的规范程度。一个团队如果能做到环境可复现、参数可调整、日志可追踪、故障可恢复,哪怕用的不是最新框架,服务稳定性也不会差。反过来,再强的算力在混乱的工程面前也撑不住真实流量。2026 年这个节点上,大模型部署已经从“能不能跑”进化到“稳不稳、贵不贵、好不好运维”的阶段,把前面这套流程里的每一条走扎实了,再复杂的大模型项目也能稳稳落地。