5

Flink 在 AI 流程中的应用

 3 years ago
source link: https://www.infoq.cn/article/1W76J13NxsDtQ1hVqMT3
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

导读:在如今的大数据在线和离线场景中,Flink + AI已经出现了越来越多的解决方案,作为大数据+AI场景下的顶层工作流抽象,AI Flow提供了端到端的机器学习全流程管理。本文会重点介绍Flink在AI流程中的应用:

Flink 构建 AI 生态的背景

1. Lambda 架构

Y3YbI32.jpg!mobile

首先为大家介绍下大数据处理领域经典的 Lambda 架构。Lambda 架构通过结合代表批模式的 Batch layer 和代表流模式的 Speed layer,使业务在计算成本和计算实时性等方面达到一个平衡。实现 Lambda 架构需要为批模式和流模式各自维护一套相同处理逻辑的代码,开发和维护成本都比较高,这也是 Flink 作为大数据处理框架能够脱颖而出的一个原因,通过 Flink 流批一体的机制,用户可以很方便的通过同一套代码逻辑来实现 Lambda 架构。

2. AI 任务的处理流程

在 AI 领域,AI 任务的处理流程一般分为三个部分,即数据预处理阶段、训练阶段和推理预测阶段,应用场景中的各个阶段都有实时性方面的需求。

  • 数据预处理阶段:该阶段主要工作是特征工程和样本拼接,是后续模型训练和预测的前置阶段,这个阶段更多的是大数据处理的过程。我们考虑一个离线训练和在线预测的AI场景,对于一个模型来说,批训练和流预测都有一个前置的数据预处理阶段,他们的预处理逻辑一般来说是一致的,为了避免维护两套不同计算引擎和代码,一个批流统一的计算引擎是非常必要的。

  • 训练阶段:说到训练阶段,一般是通过训练离线样本来产生一个静态模型的过程,然而,使用静态模型也会遇到一些问题,第一个问题就是样本的分布性的问题,也就是说应用到训练的样本和预测的样本在分布性上可能会产生偏移,从而是模型的预测效果变差,这就要求每隔一定时间要对模型重新训练,并实时监控这个模型的效果;另一个问题是,在一个高频搜索场景中,训练样本和预测样本没有相关性,如微博热搜和阿里双十一等场景下,仅仅通过定时来训练模型已经不能满足实时性的要求,这就需要对模型进行在线训练来对模型进行在线更新。

  • 推理预测阶段:无论是离线推理、在线推理或者近线推理中,对时延都有较高的要求。

以上可知,AI 的三个典型阶段都对实时性有着一定的需求,我们思考一个在线训练 + 在线预测的机器学习场景,该场景下通常会将需要预处理的实时消息写入到消息队列中进行在线训练,期间会不断的动态产生模型,然后推送给在线推理模块进行在线推理,与离线训练 + 在线预测架构不同的是,样本的实时产生不仅用于在线预测,还用于在线训练。

3. 为什么选择 Flink?

iAVb6rV.jpg!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK