第三届 Apache Flink 极客挑战赛暨 AAIG CUP:Cluster Serving 概况

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介: Cluster Serving 概况以及 Flink 社区的一些集成,帮你更好地应对极客挑战赛。

第三届 Apache Flink 极客挑战赛正在火热进行中,Cluster Serving 是 Analytics Zoo/BigDL 的分布式推理解决方案,可以部署在 Apache Flink 集群上进行分布式运算。本文整理自英特尔机器学习工程师宋佳明在 Flink Forward Asia 2020 分享的议题《Cluster Serving:Distributed and Automated Model Inference on Big Data Streaming Frameworks》。内容包括:

  1. Cluster Serving 概况
  2. AI 产品化面临的挑战
  3. 可扩展的在线推理服务
  4. 使用案例
  5. Flink 社区的一些集成

GitHub 地址
https://github.com/apache/flink
欢迎大家给 Flink 点赞送 star~

点击观看第三届极客挑战赛视频解读

一、Cluster Serving 概况

Cluster Serving 是一个集成的深度学习分布式大数据框架的在线推理器,它的全称是 Analytics Zoo Cluster Serving,是 Intel 开发的一个开源项目,Cluster Serving 是其中的一个模块。

二、AI 产品化面临的挑战

下图中展示了关于机器学习和深度学习的性能表现和数据量,可以看到随着神经网络规模的扩大,它的模型表现性能越来越好。但是模型性能的上限和数据量是紧密相关的,也就是说需要很大的数据去支撑深度学习。

img

下图引用了 Google 一篇论文里的内容,在一个完整的深度学习的应用里,除了深度学习相关的代码,还包括一些其他相关部分,主要包含配置信息、数据的清理、数据预处理,还有监控等相关协调的部分。这些组件全部加起来才可以构成一个完整的深度学习的应用。也就是说,在完成深度学习的代码的同时,去完成一个完整的深度学习应用仍然面临比较大的挑战。

img

给出的解决方案是 Integrated Big Data Analytics and AI,通过一个集成的框架把深度学习应用的相关内容都组合起来。框架能够满足这四个特性:

  • 易于开发 AI 原型:端到端的 pipelines 部署 AI 原型;
  • 部署零代码修改:开发通常会是在开发机或者笔记本进行,当把代码部署到分布式环境下,不需要有任何代码的改动;
  • 无缝部署:可以直接无缝部署到集群上面的生产环境;
  • 自动化过程:这些部件都能够自动化。

img

简单介绍一下 Analytic Zoo 架构:

  • 底层是一些环境,不管是安装在集群还是笔记本都可以。环境里面预置安装了一些底层的库:包括深度学习框架,像 TensorFlow、pytorch/OpenVINO 等;还包括分布式的分析平台,像 Spark/Flink/Ray 等框架。这里主要介绍 Flink 大数据的框架。还有一些底层 Python library;
  • 再往上会有 API 层面的一些工具,比如 Distributed TensorFlow、PyTorch on Spark,这些工具通过 API 集成了一个深度学习框架和大数据框架,通过简单的封装,能够把深度学习的代码在大数据上面运行起来;
  • 再之上,会有 ML workflow 级别的应用,比如 AutoML 和 Cluster Serving;
  • 最上层是一些开箱即用的应用级别的模型和算法,比如像推荐或者时间序列模型,CV 或者 NLP 应用。

img

三、可扩展的在线推理服务

这里通过一张 TensorFlow 的图来说明在线推理的大致流程。tf-serving 是 TensorFlow 在线推理的 Serving,大致流程就是数据输入,经过数据预处理,然后到已经训练好的模型,去做一个推理,之后再把结果返回回来。这是一条完整的 workflow,这里称之为 Serving。

img

下图是一个简单的 web 推理服务的案例图,右下角是模型文件。系统会把模型文件储存起来,把相关信息保存到元数据里面,通过一个模型的管理组件管理元数据,然后用模型 service Loader 来加载模型。左边是一个 API,API 可以通过 http 或者 grpc 远程调用。它可以访问到 Model service Manager,得到正确的模型的对应版本,然后去完成 service 的过程。

img

上图和 tf-serving 都是一个单机版的推理服务。在大数据的情况下,能否把数据并行处理,把它部署到多节点的集群上,是目前 intel 实现的一个可扩展性分布式推荐服务架构图。

img

下图左边使用的是 Redis,把它作为一个输入和输出的数据管道数据库,右边为主要部分,是基于 Flink 实现的一个分布式的推理。Flink 的 source 会通过 Redis 拿到输入数据,然后通过 Analytics Zoo 里面的一个底层组件去进行推理。当推理结束后,会通过 data sink 写回到 Redis。

img

架构的优势:

  • 简单的部署:Cluster Serving 已经有官方的 docker 镜像,可以通过镜像一键部署;
  • 广泛的模型支持:支持 TensorFlow、PyTorch、openvino 和 Caffe 等深度学习框架,可以直接导入模型并且在架构上面运行;
  • 低延迟:这是 Flink 的特性,是一个流处理的处理框架;
  • 高吞吐和可扩展性:也是利用 Flink 分布式的特性去进行一个横向扩展。

下图展示了从用户的角度来看整个系统是怎么样运行的:

img

  • 同步 API:上面是一个 http 的用户,他把数据封装成一个请求发给 http 的 server,负责去和 Cluster Serving 部署好的机器进行数据通信,server 会把需要的结果返回给用户。也就是说,当发送了请求之后,用户实际上是在等待返回。
  • 异步 API:下面的两条队列实际上是异步的 API,通过一个 python 脚本的方式去调用 Cluster Serving。可以在任何时候把数据放入队列,然后在整个服务运行结束之后把数据存储到数据库里。这样就可以在任何时候再调用另一个 API,去取得结果。

Cluster Serving 启动的方法:

  1. 环境安装好之后,一般 docker 是最简单的方式,安装好之后就可以直接启动,启动之后就相当于服务端已经准备好。
  2. 调用之前所提到的 http 或者 python 的 API,往服务发送一个数据请求,完成一个客户端的操作。

按照下面的步骤运行快速入门示例。有关详细说明,请参阅 Analytics Zoo Cluster Serving 编程指南。

  1. 启动 Analytics Zoo docker。

    docker run -itd --name cluster -serving --net=host intelanalytics/zoo-cluster-serving:0.7.0bash

  2. 登录 container 并转到准备好的工作目录。

    docker exec -it cluster-serving bash

    cd cluster-serving

  3. 在 container 内启动 Cluster Serving。

    cluster-serving-start

两种类型的 API:

1.http 的 API 是一个请求,数据格式以 json 的 string 的形式包装在请求里面,这是一个同步的 API。

2.pop-sub python 是一个异步的 API。数据一般是以 ndarry 或者编码后的字符串。

下图是一个 API 样例,这是一个 http 的 API,包含各种各样的数据类型,目前可以支持普通常数、tensor、sparse tensor、image encoding 等类型。应该是包含了目前在实际使用中遇到的所有数据类型。这些数据类型都包括在一个 json 的 string 里面。可以通过发送一个 curl 命令,去直接拿到结果。

img

下图是 python 的 pub-sub 的 API。可以看到大体上支持的数据类型和使用方法,与 http 的 API 是差不多的,只是数据的表示有一些区别,也有两个 API。通过随便生成的 2 个 ndarry,然后调用了一个 API,就可以把数据放进 Cluster Serving,并调用一个 API 去把数据取回来。

img

四、使用案例

医学影像的推理是一个比较常见的能体现 Cluster Serving 价值的使用案例。含有数量巨大的 x 光胸片,且医学影像中图片的像素点也很多,对实时推理要求很高。在普通的单机情况下,需要做预处理、推理等所有的操作,耗时一般都是要小时级的,但是为了达到对实时性的要求,会通过分布式的框架把耗时缩短到分钟级。

img

接下来介绍跟天池平台合作的一个垃圾分类的比赛,左边是训练过程,通常使用的是 TensorFlow 和 Keras,或者是经过 Analytics Zoo 封装后的 TensorFlow,把一个预训练的模型,进行一个微调 (finetune)。微调之后,拿到测试数据,使用 Flink 在分布式的集群上去调用推理接口,集群的每个节点都部署好了 Analytics Zoo 的模型。实时图片的推理是用分布式的 Cluster Serving 来实现的,通过横向扩展的方式来提高效率。

img

下图是跟天池合作的另一个比赛,这是一个基于流行病学的向量搜索。在比赛里面的模型是一个 autoencode。原始数据经过数据预处理成为了一个词嵌入,然后经过训练得到 vector,在推理阶段使用 Cluster Serving 进行推理。autoencode 模型相比之前的图片模型 resnet50 或者 inception,算是小很多的模型。也就是说,吞吐量本来就已经很高了,在本案例里面,横向扩展的意义并不是明显,但是这次比赛是 Cluster Serving 在第一次在发布后,能够完整的作为一个服务在天池比赛中被应用起来。

img

五、Flink 社区的一些集成

下图中的案例提供了一个把 Cluster Serving 的主要功能,即分布式推理和多模型的支持,包装成为了一个在 Flink 的 Table 上面的 UDF。这是一个简单的例子,可以看到创建了一个 Envirement,然后数据在 csv 里面,通过一个简单 SQL 语法的语句,去做了一个端到端的训练,然后把结果直接打印出来。SQL 运行之后,实际上就是可以直接去把那个 csv 里面的原数据去进行一个分布式的推理,最后输出出来。

img

最后,Flink 2.0 有一个新的特性是 StateFun 函数。这张架构图和之前 Cluster Serving 的主要架构图没有很大的区别。唯一的区别在于数据源 (data source),现在只用了一个单节点的数据源。而之前版本是一个模型只能去启动一个 Flink job,一一对应。现在有了 StateFun 函数的新特性,可以通过一个数据源在拿到数据的时候,进行一个路由 (routing),在路由之后,就可以用一个 Flink job 管理多个模型的分布式推理。

img


热点推荐

Flink Forward Asia 2021 正式启动!议题火热征集中!

30 万奖金等你来!第三届 Apache Flink 极客挑战赛暨 AAIG CUP 报名开始


更多 Flink 相关技术问题,可扫码加入社区钉钉交流群
第一时间获取最新技术文章和社区动态,请关注公众号~

image.png

活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算Flink版现开启活动:
99 元试用 实时计算Flink版(包年包月、10CU)即有机会获得 Flink 独家定制T恤;另包 3 个月及以上还有 85 折优惠!
了解活动详情:https://www.aliyun.com/product/bigdata/sc

image.png

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
1月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
287 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
261 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
2月前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
1031 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
3月前
|
消息中间件 存储 Kafka
Apache Flink错误处理实战手册:2年生产环境调试经验总结
本文由 Ververica 客户成功经理 Naci Simsek 撰写,基于其在多个行业 Flink 项目中的实战经验,总结了 Apache Flink 生产环境中常见的三大典型问题及其解决方案。内容涵盖 Kafka 连接器迁移导致的状态管理问题、任务槽负载不均问题以及 Kryo 序列化引发的性能陷阱,旨在帮助企业开发者避免常见误区,提升实时流处理系统的稳定性与性能。
327 0
Apache Flink错误处理实战手册:2年生产环境调试经验总结
|
SQL 消息中间件 分布式计算
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
414 0
|
数据采集 分布式计算 Kubernetes
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
425 0
|
存储 SQL 传感器
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
835 0
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
|
SQL 消息中间件 分布式计算
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析1
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析1
505 0
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析1
|
SQL 消息中间件 分布式计算
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析3
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析3
268 0
|
3月前
|
存储 分布式计算 数据处理
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
阿里云实时计算Flink团队,全球领先的流计算引擎缔造者,支撑双11万亿级数据处理,推动Apache Flink技术发展。现招募Flink执行引擎、存储引擎、数据通道、平台管控及产品经理人才,地点覆盖北京、杭州、上海。技术深度参与开源核心,打造企业级实时计算解决方案,助力全球企业实现毫秒洞察。
458 0
「48小时极速反馈」阿里云实时计算Flink广招天下英雄

相关产品

  • 实时计算 Flink版
  • 推荐镜像

    更多