流式模型工作流简介
介绍流式模型工作流。
流式计算平台
如今,许多组织使用流式计算平台来构建实时数据管道,用于处理连续的数据流,并在云环境中不同组件之间传输数据。这些平台通常是分布式的,能够为流式数据提供容错能力。除了连接不同的系统外,这些工具还支持数据记录的存储以及事件队列的创建。
Apache Kafka
目前最受欢迎的流式计算平台之一是 Apache Kafka,它是一种开源解决方案,可在公有云和私有云中实现消息流的传输。Kafka 是一种自托管型服务,需要部署并管理一组机器组成的集群,以便实现扩展。

云平台解决方案
GCP 提供了一种完全托管的流式平台 PubSub,而 AWS 则提供了托管服务 Kinesis。具体选择哪种方案,取决于所使用的云平台、吞吐量与延迟需求,以及运维(DevOps)方面的考虑。

使用场景
通过流式计算平台,可以在云环境中的不同组件之间,以及外部系统之间传递数据。例如,许多游戏公司目前正利用这类平台从手机游戏中收集玩家行为事件:游戏客户端将事件发送至游戏服务器,再由服务器将其作为数据流传递给数据分析平台。在此场景中,游戏服务器是消息生产者,而负责转换和存储事件的数据平台则是消息消费者。
流式计算平台类似于消息中间件,虽然在复杂的消息路由方面功能稍弱,但更擅长通过横向扩展来高效处理海量消息,例如 ActiveMQ。
面向数据科学的流式平台
在生产环境中,流式平台与数据科学的关键联系在于:可以将机器学习模型作为流式数据管道中的一个转换步骤来应用。例如,可以设置一个 Python 进程,从某个主题读取消息,应用 sklearn 训练好的模型进行预测,并将结果输出到新的主题中。
该流程可作为更大工作流的一部分,为用户提供实时的机器学习预测服务,例如在手机游戏中实现个性化物品推荐。为了使模型推理步骤能够应对大规模消息流量,我们需要采用 Spark 或 Cloud Dataflow 等分布式系统,而非单一的 Python 进程。
优势
尽管在流式机器学习管道中调用模型的过程类似于部署 Lambda 函数或云函数(Cloud Function),后者也能提供近实时预测能力,但关键区别在于流式平台更容易与云环境中其他组件集成。例如,在使用 Cloud Dataflow 时,既可以将事件路由到 BigQuery 进行持久化存储,也可以同时执行模型推理,并将结果推送给新的消息消费者。另一个优势是,它支持使用 PySpark 等分布式工具来处理模型请求,而不是像基于 API 端点的方式那样孤立地处理每个请求。
在云平台中使用消息系统的一大优势是,它允许不同工具和编程语言通过标准化接口进行通信。本课程将重点介绍 Python 和 PySpark,但这些平台同样支持 Java、Go 及多种其他语言。
本章学习目标
在本章中,我们将:
- 使用 Apache Kafka 在不同的 Python 进程之间传递消息;
- 使用 PySpark Streaming 实现消息的消费、转换与生成;
- 在 GCP 上使用 PubSub 结合 Cloud Dataflow 的流式模式,实现近实时的模型预测。