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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 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 
相关文章
|
18天前
|
存储 人工智能 大数据
AI开发新范式,PAI模型构建平台升级发布
本次分享由阿里云智能集团产品专家高慧玲主讲,聚焦AI开发新范式及PAI模型构建平台的升级。分享分为四个部分,围绕“人人可用”和“面向生产”两大核心理念展开。通过降低AI工程化门槛、提供一站式全链路服务,PAI平台致力于帮助企业和开发者更高效地实现AI应用。案例展示中,介绍了多模态模型微调在文旅场景的应用,展示了如何快速复现并利用AI解决实际问题。最终目标是让AI技术更普及,赋能各行业,推动社会进步。
|
17天前
|
人工智能 开发框架 安全
Smolagents:三行代码就能开发 AI 智能体,Hugging Face 开源轻量级 Agent 构建库
Smolagents 是 Hugging Face 推出的轻量级开源库,旨在简化智能代理的构建过程,支持多种大语言模型集成和代码执行代理功能。
246 69
Smolagents:三行代码就能开发 AI 智能体,Hugging Face 开源轻量级 Agent 构建库
|
14天前
|
机器学习/深度学习 人工智能 测试技术
PsycoLLM:开源的中文心理大模型,免费 AI 心理医生,支持心理健康评估与多轮对话
PsycoLLM 是合肥工业大学推出的中文心理大语言模型,基于高质量心理数据集训练,支持心理健康评估、多轮对话和情绪识别,为心理健康领域提供技术支持。
166 51
PsycoLLM:开源的中文心理大模型,免费 AI 心理医生,支持心理健康评估与多轮对话
|
6天前
|
人工智能 供应链 PyTorch
TimesFM 2.0:用 AI 预测流量、销量和金融市场等走势!谷歌开源超越统计方法的预测模型
TimesFM 2.0 是谷歌研究团队开源的时间序列预测模型,支持长达2048个时间点的单变量预测,具备零样本学习能力,适用于零售、金融、交通等多个领域。
84 23
TimesFM 2.0:用 AI 预测流量、销量和金融市场等走势!谷歌开源超越统计方法的预测模型
|
2天前
|
Web App开发 机器学习/深度学习 人工智能
Weebo:支持多语言和实时语音交流的开源 AI 聊天机器人,回复具备语调、情感的语音
Weebo 是一款基于 Whisper Small、Llama 3.2 和 Kokoro-82M 技术的 AI 语音聊天机器人,支持实时语音交互和多语言对话,适用于个人助理、娱乐互动和教育辅导等多种场景。
58 17
Weebo:支持多语言和实时语音交流的开源 AI 聊天机器人,回复具备语调、情感的语音
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
Agent Laboratory:AI自动撰写论文,AMD开源自动完成科研全流程的多智能体框架
Agent Laboratory 是由 AMD 和约翰·霍普金斯大学联合推出的自主科研框架,基于大型语言模型,能够加速科学发现、降低成本并提高研究质量。
109 23
Agent Laboratory:AI自动撰写论文,AMD开源自动完成科研全流程的多智能体框架
|
8天前
|
人工智能 资源调度 JavaScript
PPTAgent:中科院开源AI工具,自动将文档转化为高质量PPT
PPTAgent 是中科院推出的自动生成演示文稿框架,基于两阶段编辑方法,支持智能分析、大纲生成、幻灯片生成与评估,适用于教育、企业培训等多种场景。
179 18
PPTAgent:中科院开源AI工具,自动将文档转化为高质量PPT
|
12天前
|
人工智能 自然语言处理 调度
Casevo:开源的社会传播模拟系统,基于 AI 模拟人类认知、决策和社会交互,预测社会传播现象
Casevo 是中国传媒大学推出的开源社会传播模拟系统,结合大语言模型和多智能体技术,支持复杂社会网络建模与动态交互,适用于新闻传播、社会计算等领域。
75 22
Casevo:开源的社会传播模拟系统,基于 AI 模拟人类认知、决策和社会交互,预测社会传播现象
|
12天前
|
数据采集 人工智能 算法
Seer:上海 AI Lab 与北大联合开源端到端操作模型,结合视觉预测与动作执行信息,使机器人任务提升成功率43%
Seer是由上海AI实验室与北大等机构联合推出的端到端操作模型,结合视觉预测与动作执行,显著提升机器人任务成功率。
50 20
Seer:上海 AI Lab 与北大联合开源端到端操作模型,结合视觉预测与动作执行信息,使机器人任务提升成功率43%
|
14天前
|
人工智能 搜索推荐 前端开发
MiniPerplx:基于 Grok 2.0 的开源 AI 搜索引擎,支持网页、学术、视频搜索
MiniPerplx 是一款基于 Grok 2.0 模型的开源 AI 搜索引擎,支持网页、学术论文、YouTube 视频等多种内容搜索,提供代码解释、天气预报等功能。
86 17
MiniPerplx:基于 Grok 2.0 的开源 AI 搜索引擎,支持网页、学术、视频搜索