1. 模型 Serving 概述

模型 Serving(模型服务)是机器学习模型从训练环境走向生产环境的最后一道桥梁。它负责将训练好的模型加载到内存中,对外暴露标准化的推理接口(如 HTTP/gRPC),接收请求数据并返回预测结果。在 AI 生产系统中,Serving 层直接决定了模型能否被业务系统稳定、低延迟地调用。

1.1 模型 Serving 在 AI 生产中的位置

在完整的 AI 生产链路中,模型 Serving 处于“模型训练”与“业务应用”之间的核心枢纽位置。下图展示了典型 AI 生产系统的分层架构:

AI 生产系统分层架构 业务应用层 Web / App / 微服务 / 实时风控系统 模型 Serving 层 推理引擎 / 模型加载 / 请求路由 / 批处理 / 版本管理 模型存储与训练层 模型仓库 / 训练集群 / 特征工程 / 实验管理 数据基础设施层 数据湖 / 实时流处理 / 特征存储 / 标签系统 Serving 层是模型能力与业务价值之间的“最后一公里”
关键认知:模型 Serving 不是简单的“模型加载 + API 封装”。在生产环境中,它需要处理流量波动、模型热更新、多版本路由、特征对齐、延迟约束、资源隔离等复杂工程问题。

1.2 Serving 与训练的核心区别

模型训练和模型 Serving 在目标、环境、性能要求、资源特征等方面存在本质差异。下表从多个维度进行对比:

对比维度 模型训练 (Training) 模型 Serving (Inference)
核心目标 最小化损失函数,提升模型精度 最小化响应延迟,最大化吞吐量
计算模式 批量迭代,前向 + 反向传播 单次前向推理,无反向传播
硬件偏好 GPU 集群,高显存,大算力 CPU/GPU/TPU 混合,低功耗,高并发
数据形态 大规模离线数据集,全量特征 单条或小批量实时请求,在线特征
延迟要求 无严格延迟约束,小时级可接受 毫秒级(通常 < 100ms)
版本管理 实验版本,Checkpoint 快照 生产版本,灰度发布,回滚机制
资源弹性 固定资源池,任务调度 弹性伸缩,按流量动态扩缩
监控重点 Loss 曲线、梯度范数、收敛速度 P99 延迟、QPS、错误率、内存泄漏
实践建议:在从训练转向 Serving 时,需要将模型导出为标准化格式(如 ONNX、TorchScript、SavedModel),并做量化、剪枝、算子融合等推理优化。训练时的高精度浮点(FP32)在 Serving 阶段常被替换为 FP16 或 INT8,以换取更低的延迟。

1.3 典型 Serving 架构概览

一个生产级的模型 Serving 系统通常包含多个协作组件。下图展示了一种常见的微服务化 Serving 架构:

典型模型 Serving 微服务架构 客户端 负载均衡 API 网关 Serving 实例 1 Serving 实例 2 模型仓库 监控 & 日志

上述架构中各组件职责如下:

  • 客户端:发起推理请求的业务系统,如风控决策引擎、推荐系统、实时搜索等。
  • 负载均衡:将请求分发到多个 Serving 实例,实现流量均摊与故障转移。
  • API 网关:统一入口,负责鉴权、限流、请求格式转换、协议适配(HTTP/gRPC)。
  • Serving 实例:实际运行推理引擎的进程,每个实例加载一个或多个模型版本,执行前向计算。
  • 模型仓库:存储模型文件(如 .onnx、.pt、.pb),支持版本管理和热加载。
  • 监控 & 日志:采集延迟、QPS、错误率、资源利用率等指标,用于告警和容量规划。
常见陷阱:许多团队在初期将模型 Serving 简化为“在 Flask 里加载模型并暴露 API”。这种做法在低并发场景下可行,但面对每秒数千次请求时,会暴露出线程安全、内存泄漏、模型热更新困难、缺乏健康检查等问题。生产环境应优先使用成熟的 Serving 框架(如 Triton Inference Server、TorchServe、TensorFlow Serving、BentoML)。

1.4 低延迟因子评分场景的特殊性

本课程聚焦的“低延迟因子评分”场景(如信用评分、风控评分、广告点击率预估)对 Serving 层有额外的苛刻要求:

  1. 严格延迟预算:通常要求 P99 延迟 < 20ms,部分场景甚至 < 5ms。
  2. 高并发峰值:双十一、秒杀等场景下 QPS 可能瞬间飙升 10 倍以上。
  3. 特征实时计算:评分依赖的因子需要从实时流中计算,不能依赖离线预计算。
  4. 模型快速迭代:风控规则和评分模型需要小时级更新,不能中断服务。
  5. 可解释性要求:评分结果需要输出每个因子的贡献度,便于业务人员审核。