你在 Netflix 的某个功能里触发一次 AI 请求,背后并不只是“把问题发给大模型”。系统还要判断请求走向、选择模型、准备数据、检查输出,并记录整个过程。Netflix 选择把这一整套工作放进已有生产环境,而不是只调用外部托管 API。这个案例值得看,因为它展示了企业选择自建时,真正要接手的远不止几台 GPU。
这里说的“大模型推理”(LLM inference),是模型训练完成后,根据输入逐个生成输出词元的过程。托管 API 把模型运行交给外部供应商,接入通常更快;自建则要自行管理模型、硬件、扩缩容和故障处理,换取更多控制。本文事实均来自 Netflix Technology Blog 的单篇官方文章,缺少外部交叉验证;原文又在关键段落后被截断,因此更适合把它当作一份架构样本,而不是自建方案优于托管 API 的证明。
不是另起炉灶,而是接进旧城
据 Netflix Technology Blog 介绍,公司在现有生产环境中运行从模型部署到推理的完整栈,没有为大模型另建一个孤立的机器学习系统。
入口是一套统一的 JVM serving system。JVM 是运行 Java 等程序的基础环境;serving system 则可以理解为承接线上请求的总调度台。它不只调用模型,还负责路由和 A/B 测试、候选内容生成、特征获取、推理、后处理,以及各阶段的日志记录。系统同时支持实时请求和带缓存的批处理:前者要尽快返回,后者可以把一批工作集中处理。
博客发布时,调用方有两条路。较成熟的业务通过统一 serving system,以 gRPC——一种服务间通信方式——请求推理;较新的大模型应用则可以通过 HTTP 直接访问。两条路径并存,说明 Netflix 没有强迫所有应用立刻改造成同一种接入方式。
小模型留在身边,大模型送往GPU
模型在哪里运行,取决于它需要多少计算资源。小型 CPU 模型直接放在业务进程内运行,从而避开远程调用的额外开销。大型模型需要 GPU,统一 serving system 会在本地完成输入前的准备和输出后的处理,再把真正的模型计算交给远程的 Model Scoring Service(MSS)。
可以把它理解成餐厅的前厅和中央厨房:前厅接单、整理要求并交付结果;重型烹饪集中在厨房完成。这样,业务系统不必各自维护一套 GPU 推理设施。
MSS 是 Netflix 的共享推理后端。它用统一接口承载 XGBoost、TensorFlow、PyTorch 和 LLM。前三者分别涉及常见的机器学习模型或开发框架;关键不在名称,而在于新旧模型共用同一套生产底座,大模型不是完全独立的特殊设施。
MSS 底层使用 NVIDIA Triton Inference Server。它是一套推理服务软件,负责模型加载、批处理和 GPU 调度。这里的“推理引擎与运行时”,就是一边安排模型怎样使用计算和显存,一边把模型接入部署、监控与请求调度体系。
Triton管计算,Netflix管生产
Netflix 没有把全部责任交给 Triton。它在上面又建设了一层 Java control plane——也就是统一管理部署状态的控制系统。这一层负责版本管理、健康检查、自动扩缩容和多区域发布。
分工也很明确。模型作者打包模型 artifacts——运行模型所需的文件——并填写部署配置;控制系统随后准备 GPU 实例、配置 Triton,并编排 zero-downtime upgrade,即以不中断服务为目标切换模型版本。
这揭示了“自建完整推理栈”的实际含义:选一个推理引擎只是开始。团队还要决定模型怎样打包、调用接口长什么样、版本怎样发布,以及输出规则在哪里执行。Netflix 表示,一些取舍直到承受生产负载后才显现。设计图能说明组件如何连接,却不能提前暴露所有运行问题。
为什么这个样本值得关注
Netflix 列出的关键选择包括推理引擎、模型打包、API 设计、部署策略和输出约束。最后一项尤其容易被低估。约束解码(constrained decoding)会在生成过程中限制下一步允许出现的内容,让结果遵守 JSON 等结构,而不是生成结束后再碰运气检查格式。下游程序要自动读取模型结果时,这类约束会直接影响系统能否可靠衔接。
不过,现有材料更清楚地回答了 Netflix“怎样自建”,还没有完整回答“为何最终选择自建”。可以确认的是,它把 LLM 纳入已有的路由、实验、日志和共享推理体系,并自行掌握部署与运行时。至于这些控制是否足以抵消额外的运维责任,材料没有提供数字支持。
局限与未知
- 原文未披露吞吐量、延迟、成本、GPU 利用率,也没有与托管 API 做量化对比,因此不能据此断言自建更快、更便宜或效果更好。
- “零停机升级”是架构能力描述,不等于已有量化可用性证明;两条调用路径也只是博客发布时的架构快照。
- 供稿在后文展开前被截断,生产负载暴露了哪些具体问题、完整决策动机是什么,以及输出约束如何实现,目前都无法从材料中确认。