zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

2023-02-26 10:19:45 时间

第三届 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 社区的一些集成

(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>

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

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

一、Cluster Serving 概况

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

二、AI 产品化面临的挑战

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

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

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

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

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

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

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

简单介绍一下 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 应用。

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

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

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

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

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

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

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

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

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

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

架构的优势:

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

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

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

  • 同步 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 命令,去直接拿到结果。

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

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

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

四、使用案例

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

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

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

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

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

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

五、Flink 社区的一些集成

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

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

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

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


热点推荐

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

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


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

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

活动推荐

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

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

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


本站部分内容转载自网络,版权属于原作者所有,如有异议请联系QQ153890879修改或删除,谢谢!
转载请注明原文链接:第三届 Apache Flink 极客挑战赛暨 AAIG CUP:Cluster Serving 概况

你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:

1、点击这里立即申请成为腾讯云VIP客户

2、点击这里立即注册成为天翼云VIP客户

3、点击这里立即申请成为华为云VIP客户

4、点击这里立享阿里云产品终身VIP优惠价

喜欢 (0)
[[email protected]]
分享 (0)