本文来源于数据从业者全栈知识库,更多体系化内容请访问知识库。
什么是实时机器学习?
核心定义实时机器学习是指能够在毫秒到秒级响应时间内完成预测,并能持续从新数据中学习更新的机器学习系统。
批量 vs 实时:根本性差异
| 维度 | 批量处理 | 实时处理 |
|---|---|---|
| 延迟要求 | 小时/天级 | 毫秒/秒级 |
| 数据规模 | 大批量历史数据 | 单条/小批量流数据 |
| 更新频率 | 定期重训练 | 持续学习 |
| 典型场景 | 月度报表、离线分析 | 风控、推荐、竞价 |
生活类比批量ML = 考试前临时抱佛脚,集中复习一次
实时ML = 每天学一点新知识,随时能应对突发情况
为什么需要实时ML?
graph LR
A[业务场景] --> B{延迟要求}
B -->|可接受延迟| C[批量ML足够]
B -->|秒级响应| D[需要实时ML]
D --> D1[金融风控<br/>交易瞬间判断]
D --> D2[实时推荐<br/>用户行为即时响应]
D --> D3[广告竞价<br/>100ms内出价]
D --> D4[欺诈检测<br/>支付前拦截]
实时ML系统架构
整体架构图
graph TB
subgraph 数据采集层
A1[用户行为日志] --> B[消息队列<br/>Kafka]
A2[业务事件] --> B
A3[传感器数据] --> B
end
subgraph 特征计算层
B --> C[实时特征计算<br/>Flink/Spark Streaming]
C --> D[Feature Store<br/>特征服务]
end
subgraph 推理服务层
D --> E[模型服务<br/>TensorFlow Serving/Triton]
E --> F[预测结果]
end
subgraph 反馈学习层
F --> G[结果收集]
G --> H[标签生成]
H --> I[在线学习/定期重训]
I --> E
end
核心组件详解
1. 数据采集层
| 组件 | 功能 | 关键指标 |
|---|---|---|
| 埋点SDK | 客户端数据收集 | 数据完整性、延迟 |
| 日志收集 | 服务端行为日志 | 吞吐量、可靠性 |
| 消息队列 | 数据缓冲与分发 | 延迟P99、可用性 |
Kafka在实时ML中的角色
- 解耦数据生产和消费
- 支持多消费者订阅
- 保证数据不丢失
- 支持回溯重放
2. 特征计算层
| 特征类型 | 计算方式 | 示例 | 延迟 |
|---|---|---|---|
| 实时特征 | 事件触发计算 | 最近一次点击时间 | 毫秒级 |
| 近实时特征 | 窗口聚合 | 过去5分钟点击次数 | 秒级 |
| 批量特征 | 定期预计算 | 用户历史偏好 | 小时级 |
3. 模型服务层
| 服务框架 | 特点 | 适用场景 |
|---|---|---|
| TensorFlow Serving | TF生态、成熟稳定 | TensorFlow模型 |
| Triton | 多框架、高性能 | 多模型混合部署 |
| TorchServe | PyTorch原生 | PyTorch模型 |
| ONNX Runtime | 跨框架、优化好 | 追求最优性能 |
| BentoML | 简单易用 | 快速上线 |