2. Serving 架构基础:同步推理与异步推理、在线 Serving 与离线 Batch Serving

模型部署后的 Serving 架构直接决定了推理延迟、吞吐量、资源利用率以及业务场景的适配性。本章从两个核心维度拆解 Serving 架构:推理交互模式(同步 vs 异步)与任务执行模式(在线 vs 离线 Batch)。理解这两组概念及其组合方式,是设计回测灰度系统的基础。

2.1 同步推理与异步推理

同步推理与异步推理的核心区别在于:客户端发出请求后是否需要阻塞等待完整响应。两种模式在延迟敏感度、资源调度、错误处理上存在显著差异。

对比维度 同步推理 (Sync Inference) 异步推理 (Async Inference)
请求-响应模型 请求发出后,连接保持,等待完整结果返回 请求发出后立即返回一个任务 ID 或回调凭证,结果后续获取
延迟特征 端到端延迟 = 网络 + 排队 + 推理 + 返回 客户端感知延迟极低(仅提交请求),实际推理延迟被异步化
适用场景 实时 API、在线推荐、低延迟交互 批量处理、长文本生成、视频分析、非实时决策
资源占用 推理期间独占连接/线程/GPU 上下文 请求可排队,资源可复用,支持背压
错误处理 超时或异常直接返回给客户端 通过回调、轮询或消息队列重试
架构决策要点: 同步推理适合 p99 延迟 < 200ms 的场景;异步推理适合 推理时长 > 1s 或 请求量波动剧烈 的场景。回测灰度中,灰度流量通常走同步推理以保持体验一致性,而回测任务走异步推理以解耦计算。
同步推理 vs 异步推理流程对比 同步推理 客户端请求 模型推理 返回结果 客户端接收 阻塞等待,连接保持 端到端延迟 = 请求 + 推理 + 返回 异步推理 提交请求 任务队列 模型推理 回调/轮询 立即返回 task_id,不阻塞 结果通过回调/轮询/消息队列获取

2.2 在线 Serving 与离线 Batch Serving

在线 Serving 与离线 Batch Serving 的区别在于数据到达方式和时效性要求。在线 Serving 处理实时到达的单个请求,离线 Batch Serving 处理预先准备好的批量数据。

对比维度 在线 Serving (Online Serving) 离线 Batch Serving (Offline Batch Serving)
数据输入 实时流式请求(HTTP/gRPC/WebSocket) 批量文件、消息队列、数据湖分区
延迟要求 毫秒级 ~ 秒级 分钟级 ~ 小时级
吞吐模式 按需弹性扩缩,关注 QPS 和 p99 延迟 批量吞吐最大化,关注总处理时间和资源利用率
资源调度 常驻服务,GPU/CPU 预热,低延迟冷启动 按需拉起任务,可抢占式实例,支持 checkpoint
典型框架 Triton Inference Server, TorchServe, BentoML Spark ML, Ray Serve Batch, Airflow + MLflow
回测灰度角色 承载灰度流量,实时对比新旧模型 承载大规模回测任务,离线评估模型效果
实践建议: 在回测灰度系统中,在线 Serving 负责灰度流量路由和实时指标采集;离线 Batch Serving 负责历史数据回放和离线评估。两者通过统一的模型仓库和特征存储共享模型版本与特征数据。

2.3 四种组合模式与架构选型

将同步/异步与在线/离线交叉组合,得到四种典型的 Serving 架构模式。不同模式适用于不同的回测灰度阶段。

组合模式 交互方式 任务方式 典型场景 回测灰度用途
同步 + 在线 请求-响应阻塞 实时单请求 在线推荐、实时风控 灰度流量实时推理,对比延迟和效果
异步 + 在线 请求-回调/轮询 实时单请求但非阻塞 语音识别、图像生成 灰度流量中长耗时模型的分流推理
同步 + 离线 批量请求-批量响应 批量同步处理 小批量数据验证 回测数据的小规模快速验证
异步 + 离线 提交-回调/轮询 大规模批量处理 全量回测、模型评估 大规模历史数据回放与离线评估
四种 Serving 组合模式架构 交互模式 任务模式 同步 异步 在线 离线 同步 + 在线 实时 API 推理 灰度流量实时对比 低延迟,p99 < 200ms 框架: Triton, TorchServe 异步 + 在线 非阻塞实时推理 长耗时模型分流 回调/轮询获取结果 框架: Ray Serve, Celery 同步 + 离线 小批量同步处理 回测数据快速验证 批量请求-批量响应 框架: Spark ML Batch 异步 + 离线 大规模批量处理 全量回测与离线评估 任务队列 + 分布式计算 框架: Airflow + MLflow

2.4 回测灰度中的架构组合策略

在实际的回测灰度系统中,通常不会只使用单一模式,而是根据流量阶段和评估目标组合使用多种架构:

  1. 灰度发布阶段:使用 同步 + 在线 模式,将小比例实时流量路由到新模型,与基线模型同步对比延迟和效果指标。
  2. 回测评估阶段:使用 异步 + 离线 模式,将历史数据批量提交到回测任务队列,异步完成大规模推理和评估。
  3. 长尾模型验证:对于推理耗时较长的模型(如大语言模型、视频模型),使用 异步 + 在线 模式,避免阻塞灰度流量。
  4. 快速回归验证:在模型迭代过程中,使用 同步 + 离线 模式对小批量测试集进行快速验证。
常见陷阱: 不要将所有回测任务都设计为同步在线模式。大规模回测(百万级样本)如果走同步在线推理,会导致服务连接耗尽、超时雪崩,甚至影响线上灰度流量。务必为回测任务设计独立的异步离线通道。

2.5 架构选型决策树

以下决策树可以帮助你在设计 Serving 架构时快速选择正确的组合模式:

输入:推理场景需求
│
├─ 是否需要实时返回结果?
│   ├─ 是 → 在线 Serving
│   │   ├─ 推理耗时 < 1s?
│   │   │   ├─ 是 → 同步 + 在线(实时 API)
│   │   │   └─ 否 → 异步 + 在线(回调/轮询)
│   │   └─ 是否需要灰度流量对比?
│   │       └─ 是 → 同步 + 在线 + 流量路由
│   │
│   └─ 否 → 离线 Batch Serving
│       ├─ 数据量 < 10K 条?
│       │   ├─ 是 → 同步 + 离线(快速验证)
│       │   └─ 否 → 异步 + 离线(大规模回测)
│       └─ 是否需要 checkpoint 和断点续跑?
│           └─ 是 → 异步 + 离线 + 分布式任务调度
│
输出:Serving 架构组合模式
核心原则: 回测灰度系统的 Serving 架构设计应遵循 隔离性(回测与灰度流量隔离)、可观测性(全链路指标采集)、弹性(按需扩缩容)三大原则。同步/异步、在线/离线的选择本质上是延迟、吞吐、资源成本三者之间的权衡。