Analytics-Zoo:统一的大数据分析+AI平台|阿里云峰会 开源大数据专场

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 2019阿里云峰会·上海开发者大会于7月24日盛大开幕,本次峰会与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货,共同探讨前沿科技趋势。本文整理自开源大数据专场中英特尔资深架构师利智超先生的精彩演讲。

开源大数据专场PPT下载

2019阿里云峰会·上海开发者大会于7月24日盛大开幕,本次峰会与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货,共同探讨前沿科技趋势。本文整理自开源大数据专场中英特尔资深架构师利智超先生的精彩演讲。

一、Why Analytics-Zoo

1. 项目背景

英特尔先后发布了两个开源的项目,BigDL项目和Analytics -Zoo项目。在2015到2016年左右,如果想找到一个深度学习的项目直接搬迁到Apache Spark里面是比较困难的,因为当时PyTorch,TensorFlow都还没有兴起。英特尔发现了使用Lua实现的Torch框架,所以顺势借鉴了Torch的很多设计理念,并重新开发了Java版的Torch,叫BigDL。英特尔使用MKL和MKL-DNN加速单机版的训练速度,再结合Spark的分布式计算能力,便可以把一个单机版的Java Torch在Spark上分布式执行。
image.png

随着PyTorch, TensorFlow的流行,英特尔发现很多的合作客户的反馈是希望自己用TensorFlow完成一个模型的开发之后,不需要改代码,让TensorFlow、PyTorch或Caffe的模型直接无缝对接到Spark上,直接进行分布式部署。因此,英特尔希望通过Analytics-Zoo直接对接TensorFlow、BigDL以及Caffe,再借助Spark分布式的处理能力,做分布式的部署和训练。

2. 开发背景

数据分析pipelines:

下图展示了实现一个分布式的端到端的数据分析的流程。数据分析的过程非常复杂,不仅黑色部分模型定义或者模型训练本身复杂,完成一个端到端的流程需要大量的组件配合使用。比如,完成一个分布式项目,需要考虑集群如何管理,资源怎样调度。回到数据本身,数据有多种格式,数据存储有非常多的数据源。无论是存在阿里云OS或在亚马逊,异或自己管理的HDFS和HBase,都需要对接不同的数据源。访问数据源之后还需要考虑如何做数据清洗、特征提取以及特征转换等方面的工作。
image.png

大数据数据分析平台版图:

英特尔希望在完成整个端到端的大数据 + AI平台时,并不是重新开发各个组件,而是拥抱整个开源的社区,拥抱整个大数据的生态。从下面的版图可以看到,在整个大数据生态里面有非常多方便使用的组件。比如,基于YARN完成整个集群的管理,通过对接Kafka,Spark Streaming完成流式的处理。此外,Spark本身也提供了非常多Data Storage的支持,帮助操作者很方便的读取HDFS、Parquet、Avro和HBase等格式。解决了以上问题之后,Spark还提供了大量有用的API。如基于Spark Core,使用Spark SQL和Spark DataFrame完成数据的ETL,特征提取,数据清洗等工作。同时,还可以利用Spark MLlib做一些传统的机器学习工作。
image.png

深度学习框架无缝对接大数据分析平台:

上面的版图中唯一缺失的是深度学习的框架。如何将现有的流行的深度学习框架(TensorFlow、PyTorch以及Caffe),无缝对接到Spark或Hadoop的整个生态中?直接将TensorFlow等深度学习框架定义的模型嵌入Spark并不是自然的。因为深度学习框架在研发时更多是托身于深度学习领域,主要为了更好的使用深度学习算法训练模型和调试模型,但并没有过多考虑到现有的大数据的生态和开源的组件。可以发现深度学习框架与大数据分析平台中间存在断层,而Analytics-Zoo正是想弥补这个断层,帮助大数据工程师们拥抱AI的框架,在自己所管理的数据集上提供AI能力。
image.png

以图搜图:

实现以图搜图的功能最关键的环节是图片特征的提取。做POC时候有两个步骤,首先使用SSD模型完成特征检测。如下图所示,把小鸟背景的噪音去掉,提取出小鸟主体,再借助DeepBit Model完成特征提取。尽管通过Caffe1完成POC非常方便,但在真正生产线上部署时需要面对十亿级以上图片,并不是很容易。客户方没有那么足够的GPU集群,但有大量的CPU集群可供使用。那么Spark + Analytics-Zoo便是最好的组合,Spark可以对接HBase和HDFS,完成数据的分布式的预处理。同时Analytics-Zoo可以直接加载Caffe模型。无需改任何代码,就可以方便地把将整个HBase到HDFS的端到端的流程打通。
image.png

3. Analytics-Zoo设计理念和目标

无论用户开发的环境是Laptop或是单机Server,Analytics-Zoo希望实现将开发完成的原型,在基本不改代码的前提下,在Spark集群中做分布式的训练以及分布式的部署。目前的分布式训练包含Data parallel和Model parallel。Analytics-Zoo实现的是Data parallel模式,同时也在积极的考虑引入Model parallel的支持。
image.png

二、What is Analytics-Zoo

1.Analytics-Zoo具体功能

Backend:Analytics-Zoo可以直接支持TensorFlow、Keras、Caffe1和BigDL等,同时英特尔正在积极开发对PyTorch的支持。
High level Piplines:这层支持一些具体的API。比如,表示用户在使用Spark对数据进行加载和转换时,拿到一个Dataframe,nnframes直接将Dataframe放到TensorFlow模型中进行训练和部署。
Feature Engineering:在单机训练时,很多有用的特征工程的Python库是可以直接使用的。但Analytics-Zoo更需要一个分布式库的特征工程的应用,所以英特尔基于Spark Core的一些能力,为用户提供了分布式特征工程的应用。
Model and UseCase:再往上是一些传统的工作。这一层需要预置大量模型,参数以及预处理的pipeline,Analytics-Zoo中这些都是直接提供好的。若用户没有特殊需求,理论上可以打开即用或者基于这一层做一些扩展就可以运用在生产线上。
image.png

2. Analytics-Zoo具体实现:

Spark Job执行流程:

从Analytics-Zoo的具体功能中可以发现它是一个标准的Spark Job。下图展示了一个Spark Job的执行流程。首先,用户只需要把环境在Driver中准备好。之后,Analytics-Zoo将用户需要的所有依赖打包,自动把模型序列化,上传到远端的集群。而大部分Python用户使用YARN跑的时候常常遇到一个痛点,在本地装好Python的dependency,但真正部署的时候没有特别好的方式。Analytics-Zoo借助Spark Core的能力,把Python的dependency自动打包好帮助用户自动上传。同时,用户大量依赖的英特尔MKL和MKL-DNN,在其集群上部署时也不需要安装,Analytics-Zoo已经把所有的依赖打包好。在实现一个分布式的模型训练时,不需要到每一台机器启动额外的进程进行训练。依赖于Spark功能,Analytics-Zoo会把整个工作流程透明化,处理好,为用户提供干净,直接的体验。
image.png

通讯方法改进:

其实Spark本身以及Spark ML都是依赖下图的AllToOne模式。首先,Spark会把数据切成很多份,每一份数据都会对应一个Worker,训练出一个完整的模型。模型本身有梯度和参数,这些梯度和参数会全部发送到Driver做聚合。显而易见,这种AllToOne通讯模式存在很多缺点,在Driver节点会形成单点瓶颈。如果要大规模的训练深度学习的模型,光靠AllToOne模式肯定是不行的。
image.png

业界广为使用的模式,无外乎是加入All Reduce或使用其它服务器帮助加速整个参数的聚合过程。在Analytics-Zoo中,较为特殊的一点是整个过程中没有引入任何外部的PS和外部进程,只是依赖Spark本身的API做本地实现。Analytics-Zoo会把模型梯度切成很多份,每一份都交由不同Block Manager机器聚合,相当于把压力从一台Driver交给多台机器。没有引入外部PS的好处是用户在做模型训练或模型部署的时候,他们看到的就是一个标准的Spark task,用户可以使用现有的Spark的Web工具做debug,monitering等操作。
image.png

3.编程举例

TF & Keras:第一部分是数据。用Spark去读RDD,只要Spark能够识别的数据源都能支持。拿到Spark RDD之后,无论是使用Spark原生的Transformer,还是Analytics-Zoo的Transformer异或用户自己实现的Transformer,都可以把原始RDD转换成模型所需要的rdd。
第二部分,模型定义。下图中间代码就是原生的TF的模型代码,用户在单机用TF转POC之后,模型直接就可以用。
第三部分,TFOptimizer。TFOptimizer是一个分布式的Optimizer,只要提供一些优化方法,如LOSS function,它就可以自动将TF的Graph序列化,然后广播到Spark的各个节点完成分布式训练。参数同步也都是完全透明化,用户只需要在操作端节点提交一个Spark Job就可以。
image.png

Dataframe + Keras:第一步,用Spark读Parque,转成Dateframe,拿到Dateframe之后再做转换,最后拿到模型所需要的Dateframe的输入。
第二步使用完整的Keras API,定义Sequential的模型。下图的例子中加入了卷积层,pooling层和Flatten层面。
第三步利用NNEstimater将模型序列化,做broadcast以及模型同步。用户唯一需要做的就是告诉NNEstimater,LearningRate和Batchsize的值,训练多少Epoch,指定FeaturesCol。可以发现,NNEstimater的语法与Spark ML Pipeline基本一样,已经熟悉或者大量使用过Spark ML pipeline的用户是非常好上手的。
image.png

3. Distributed Model Serving

Model Serving方面Analytics-Zoo并没有做特别多的工作,但是给用户提供的是一个Java的API, 帮助用户无缝对接现有的Java Backend server。如果是Flink,可以使用Flink + Model Serving Java API,完成oneline的inference工作。Inference和training的执行过程不一样,如果只是做inference,则可以改变graph模型,大大提升整个inference速度。Analytics-Zooy依靠OpenVINO框架,帮助加速整个inference过程。
image.png

三、Analytics-Zoo Use Cases

1.美的实践案例

美的在云上已经申请了一个YARN的集群,同时也在TensorFlow Zoo上发现了非常好的模型SSDLite,稍作修改后就能够非常好的实现产品缺陷检测的功能。美的希望打通从端到端的数据源,在云上YARN集群做模型的训练和部署。实现过程是美的会安排一个机器人实时检测流水线上微波炉的生产情况,如拍照检查微波炉的标签是否贴好,螺丝是否拧紧等。检查数据会实时反馈到后面的YARN集群,再结合Analytics-Zoo数据,直接加载TensorFlow的模型,训练模型。最后结合Model Serving Java API,将训练好的模型直接在美的的Web Service上进行部署,完成端到端的产品缺陷检测。
image.png

4. MasterCard案例

MasterCard已经有了大量的CPU集群,Spark集群和Spark MLlib ALS的模型,基于Spark完成了整个端到端的推荐工作。随着深度学习的算法的兴起,MasterCard希望引入NCF以及较流行的WAD的深度学习的模型的算法。Analytics-Zoo可以用TensorFlow定义NCF和WAD的模型,之后便可以直接对接原来写好的Spark整个数据流的pipeline,打通端到端的数据预处理,模型训练和模型部署,加载深度学习的推荐能力。
image.png

除对外输出技术影响力,英特尔也十分重视在开源社区的投入,近期也与 Apache Flink 社区深度合作举办了首届 Apache Flink 极客挑战赛,致力于造福更多开发者。大赛聚焦机器学习与计算性能两大时下热门领域,参与比赛,让自己成为技术多面手,还有机会赢得 10W 奖金。

image.png
大赛详情请点击: https://tianchi.aliyun.com/markets/tianchi/flink2019

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
21天前
|
分布式计算 大数据 BI
MaxCompute产品使用合集之MaxCompute项目的数据是否可以被接入到阿里云的Quick BI中
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
21天前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之使用pyodps读取OSS(阿里云对象存储)中的文件的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
9天前
|
人工智能 安全 算法
AI与大数据:智慧城市安全的护航者与变革引擎
AI与大数据:智慧城市安全的护航者与变革引擎
|
10天前
|
存储 分布式计算 DataWorks
【阿里云云原生专栏】云原生下的数据湖建设:阿里云MaxCompute与DataWorks解决方案
【5月更文挑战第26天】在数字化时代,数据成为企业创新的关键。阿里云MaxCompute和DataWorks提供了一种构建高效、可扩展数据湖的解决方案。数据湖允许存储和分析大量多格式数据,具备高灵活性和扩展性。MaxCompute是PB级数据仓库服务,擅长结构化数据处理;DataWorks则是一站式大数据协同平台,支持数据集成、ETL和治理。通过DataWorks收集数据,MaxCompute存储和处理,企业可以实现高效的数据分析和挖掘,从而提升业务洞察和竞争力。
112 0
|
11天前
|
关系型数据库 分布式数据库 数据处理
【PolarDB 开源】PolarDB 在大数据分析中的应用:海量数据处理方案
【5月更文挑战第25天】PolarDB是解决大数据挑战的关键技术,以其高性能和可扩展性处理大规模数据。通过与数据采集和分析工具集成,构建高效数据生态系统。示例代码显示了PolarDB如何用于查询海量数据。优化策略包括数据分区、索引、压缩和分布式部署,广泛应用于电商、金融等领域,助力企业进行精准分析和决策。随着大数据技术进步,PolarDB将继续发挥关键作用,创造更多价值。
45 0
|
13天前
|
存储 弹性计算 大数据
【阿里云弹性计算】阿里云ECS在大数据处理中的应用:高效存储与计算实践
【5月更文挑战第23天】阿里云ECS在大数据处理中发挥关键作用,提供多样化实例规格适应不同需求,尤其大数据型实例适合离线计算。通过集成分布式文件系统如OSS,实现大规模存储,而本地存储优化提升I/O性能。弹性扩容和计算优化实例确保高效运行,案例显示使用ECS能提升处理速度并降低成本。结合阿里云服务,ECS构建起强大的数据处理生态,推动企业创新和数字化转型。
36 0
|
16天前
|
SQL 分布式计算 数据挖掘
阿里云MaxCompute携手华大基因打造精准医疗应用云平台,十万基因组计算成本降低至1000美金以内
华大基因是中国最领先的基因科技公司,华大基因为消除人类病痛、经济危机、国家灾难、濒危动物保护、缩小贫富差距等方面提供分子遗传层面的技术支持。让我们结合maxcompute的技术特点,看看如何助力华大基因。
838 9
|
21天前
|
人工智能 分布式计算 Cloud Native
大数据&AI产品月刊【2024年4月】
大数据&AI产品技术月刊【2024年4月】,涵盖本月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据&AI方面最新动态。
|
21天前
|
机器学习/深度学习 人工智能 大数据
AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀
AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀
169 6
|
21天前
|
分布式计算 DataWorks Java
DataWorks产品使用合集之阿里云DataWorks专有云环境下,上传MaxCompute的UDF(用户自定义函数)的JAR包的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
30 0

热门文章

最新文章