模型服务与推理
概述
模型训练完只是开始,真正创造价值的是部署与推理。核心问题:在线还是批量、怎么压缩加速、用什么推理引擎、如何灰度验证。本文讲透模型服务化的全链路。
一、推理方式对比
1.1 在线推理 vs 批量推理
| 维度 | 在线推理 | 批量推理 |
|---|---|---|
| 触发 | 请求时 | 定时/批量 |
| 延迟 | 毫秒级 | 秒级+ |
| 数据 | 单条 | 大批量 |
| 场景 | 推荐/风控 | 圈选/报表 |
在线示例:
用户请求 → 实时特征 → 模型 → 推荐结果
(低延迟、高并发)
批量示例:
夜间离线打分全量用户 → 写入结果表
(吞吐优先、无延迟要求)1.2 流式推理
流式推理:
事件流 → 模型实时打分
(Kafka + Flink + 模型)
场景:
实时风控
实时营销
实时监控二、在线推理架构
2.1 服务链路
请求链路:
业务 → 特征服务(取特征)
→ 模型服务(推理)→ 结果 → 业务
关键:
特征实时获取
模型低延迟推理
服务高可用2.2 部署形态
| 形态 | 说明 |
|---|---|
| 单体服务 | 简单、传统 |
| 模型服务框架 | Triton/Seldon |
| Serverless | 按需扩缩 |
| 端侧 | 移动端/边缘 |
模型服务化框架:
Triton(NVIDIA):多框架、高性能
ONNX Runtime:跨框架部署
TensorFlow Serving:TF 原生
TorchServe:PyTorch 原生2.3 性能优化
优化点:
特征缓存(减少取特征耗时)
批量请求(batching)
模型优化(量化/裁剪)
GPU 或 CPU 选型
缓存结果(相同请求)
目标:
P99 延迟达标
吞吐满足峰值三、模型压缩与量化
3.1 为什么要压缩
动机:
减小模型体积(存储/加载)
降低推理耗时
降低资源成本
支持端侧部署
风险:
精度损失(需评估)3.2 压缩技术
| 技术 | 说明 |
|---|---|
| 量化 | 权重精度降低(FP32→INT8) |
| 剪枝 | 去掉不重要参数 |
| 蒸馏 | 大模型教小模型 |
| 低秩分解 | 矩阵分解压缩 |
量化原理:
FP32 → INT8(4 倍压缩)
精度损失可控
GPU/CPU 对 INT8 有加速
注意:
量化后需校准与验证
精度不达标 → 部分量化/回退3.3 压缩流程
流程:
训练完成 → 压缩/量化 → 评估
→ 精度达标 → 部署
不达标 → 调整压缩策略
评估重点:
与原模型指标对比
线上效果验证(AB)四、推理引擎
4.1 TensorRT
TensorRT(NVIDIA):
针对 GPU 深度优化
层融合、精度校准
显著提速(2-10 倍)
适用:
GPU 环境
高性能在线推理4.2 ONNX
ONNX Runtime:
跨框架开放格式
模型转 ONNX 后统一部署
CPU/GPU 均支持
适用:
多框架统一
灵活部署4.3 引擎选型
| 场景 | 引擎 |
|---|---|
| NVIDIA GPU 高性能 | TensorRT |
| 跨框架统一 | ONNX Runtime |
| TF 生态 | TensorFlow Serving |
| PyTorch | TorchServe |
| 多模型多框架 | Triton |
实践建议:
大模型在线 → TensorRT/Triton
通用部署 → ONNX Runtime
简单场景 → 原生框架服务五、AB 实验平台
5.1 为什么需要 AB
原因:
离线指标 ≠ 线上效果
需要真实业务验证
模型迭代要小步验证
原理:
流量分桶
对照组 vs 实验组
统计显著性判断5.2 实验平台能力
| 能力 | 说明 |
|---|---|
| 分桶 | 用户/请求维度分桶 |
| 灰度 | 小流量逐步放量 |
| 指标 | 业务指标统计 |
| 显著性 | 检验与报告 |
| 决策 | 全量/回滚 |
分桶设计:
一致性(同用户同组)
隔离(实验互不干扰)
均匀(流量随机分配)5.3 AB 流程
流程:
提出假设 → 设计实验
→ 小流量上线 → 数据收集
→ 显著性分析 → 全量/回滚
注意事项:
样本量
实验周期
多重比较校正
干扰控制六、模型监控
6.1 监控指标
| 类别 | 指标 |
|---|---|
| 服务 | 延迟/吞吐/错误率 |
| 稳定性 | 可用性/超时 |
| 数据漂移 | 特征分布变化 |
| 效果 | 线上业务指标 |
6.2 漂移与衰减
问题:
线上数据分布变化 → 效果衰减
特征缺失/变化 → 预测异常
处理:
漂移检测(PSI 等)
效果监控(指标下滑告警)
触发重训
新旧模型对比6.3 监控闭环
闭环:
监控 → 告警 → 定位
→ 决策(回滚/重训)→ 验证七、部署实践
7.1 部署流程
流程:
模型注册(Registry 取 Production)
→ 格式转换(ONNX/TensorRT)
→ 镜像打包
→ 灰度发布(小流量)
→ 观察 → 全量/回滚7.2 灰度发布
灰度策略:
5% → 20% → 50% → 100%
每步观察指标
异常立即回滚
对比:
与旧模型 AB 对比
关注核心业务指标7.3 常见问题
| 问题 | 处理 |
|---|---|
| 延迟超标 | 优化特征/量化/扩容 |
| 结果异常 | 检查特征一致性 |
| 效果下滑 | 漂移检测/重训 |
| 服务抖动 | 限流/熔断/降级 |
八、小结
模型服务化的核心链路:选推理方式(在线/批量/流式)→ 压缩加速(量化/TensorRT/ONNX)→ 灰度验证(AB 实验)→ 持续监控。服务要低延迟、模型要小而快、上线要灰度可控、效果要持续盯。把服务化这最后一公里做扎实,模型才能真正产生业务价值。