使用RayOnSpark在大数据平台上运行新兴的人工智能应用
RayOnSpark 能够让Ray的分布式应用直接无缝地集成到Apache Spark的数据处理流水线中,省去集群间数据传输的overhead,支持用户使用Spark处理的数据做新兴人工智能应用的开发。本次直播将由Intel大数据团队软件工程师黄凯为您介绍Ray和Intel的开源项目Analytics Zoo,开发RayOnSpark的动机和初衷,同时结合实际案例分享RayOnSpark的落地实践。
原视频链接:https://developer.aliyun.com/live/43188
活动链接:SPARK中文峰会7月4日(二)|Ray On Spark
演讲嘉宾简介:黄凯,Intel大数据团队软件工程师,大数据和人工智能开源项目Analytics Zoo和BigDL的核心贡献者之一。
以下内容根据演讲视频以及PPT整理而成。
点击链接观看精彩回放:
https://developer.aliyun.com/live/43188
本次分享主要围绕以下五个方面:
一、Overview of Analytics Zoo
二、Introduction to Ray
三、Motivations for Ray On Apache Spark
四、Implementation details and API design
五、Real-world use cases
一、Overview of Analytics Zoo
AI on Big Data
英特尔大数据团队近几年在助力人工智能落地方面做了很多工作,先后开源了两个项目。在2016年底开源了BigDL,是基于Apache Spark开发的分布式高性能的深度学习框架,首次将深度学习引入到大数据平台中,让用户在大数据平台上更容易使用深度学习的算法。用BigDL写的深度学习应用是一个标准的Spark程序,可以运行在标准的Spark或Hadoop集群上,对集群不需要做任何特殊的修改。BigDL在深度学习方面对标了现在流行的其他深度学习框架,和它们一样提供了丰富的深度学习功能。在性能方面BigDL利用并行计算,以及依赖于英特尔底层的库,如MKL等,使得BigDL基于CPU能有良好的性能。在可扩展性方面,BigDL能通过Spark扩展到成百上千个节点上做对深度学习模型做分布式的训练和预测。
开源了BigDL之后,英特尔又开源了统一的数据分析和AI平台Analytics Zoo,用户可以根据不同的需求,在大数据的平台上直接运行由使用TensorFlow、PyTorch、Keras、Ray、等框架构建的应用。Analytics Zoo可以将用户的大数据平台作为数据存储、数据处理挖掘、特征工程、深度学习等一体化的pipeline平台。
Analytics Zoo
Analytics Zoo底层依赖于一系列现有的常用框架,包括主流的深度学习框架、分布式计算框架、Python数据处理库等,在这些框架之上搭建了一套非常完整的数据分析和人工智能的流水线,包括支持用户在Spark上跑分布式的 TensorFlow和PyTorch,只需要做很小的代码改动就可以在大数据平台运行主流的深度学习框架;对Spark DataFrame和ML Pipeline提供了原生的深度学习支持;也提供了轻量级的API对训练好的模型做线上推理。在流水线之上,Analytics Zoo提供了ML workflow,帮助用户自动化地去构建大规模的人工智能应用,比如对时间序列做可扩展的预测,以及分布式Cluster Serving。最上层对很多常见领域,如推荐、时间序列、计算机视觉、自然语言处理等等,提供了开箱即用的模型以及参考案例。
实际工作中,开发部署一条数据分析和AI的流水线通常需要经历三个步骤:开发者首先在笔记本上使用样本数据完成开发的原型,然后使用历史几个月的数据在集群上做实验,实验结果没有问题的话再到生产环境中进行大规模的部署。我们希望在执行三个步骤中,用户几乎不需要改动,就能将单机的代码无缝地部署在生成环境中,并且简化和自动化搭建整个pipeline的过程,这也是开发Analytics Zoo和RayOnSpark的初衷和目的。
二、Introduction to Ray
Ray是由UC Berkeley开源的一个能够非常快速和简单地去构建分布式应用的框架,Ray Core提供了非常友好的API,帮助用户更容易地并行处理任务。Python用户只需要增加几行代码就可以直接并行地执行Python函数和对象。简单来说,用户首先需要import ray,调用ray.init()启动Ray服务。正常情况下,在一个循环中调用多次Python函数是顺序执行的,但是如果加上@ray.remote(num_cpus, ...)的Python修饰器,就可以去并行执行这些Python函数,最后通过ray.get得到返回值。同样对Python class也能加上@ray.remote,变成Ray actor能够被Ray去远程地启动。在@ray.remote中还可以指定运行所需资源,比如需要多少CPU等,在运行过程中Ray会预留这些资源。Ray可以支持单机和集群上的并行运行。
除了直接使用Ray Core实现简单的并行之外,Ray还提供了一些high-level的library,加速人工智能workload的构建。其中Ray Tune能自动去调参,RLib提供统一的API去执行不同强化学习任务,Ray SGD在PyTorch和TensorFlow原生的分布式模块之上实现了一层wrapper来简化部署分布式训练的过程。
三、Motivations for Ray On Apache Spark
Ray可以让用户很容易的构建新兴的人工智能的应用,在实际工作过程中也越来越需要将这些新兴的人工智能技术应用在生产成数据上,来创造更多的价值。但其实用户在这个过程中会往往面临一些挑战:首先,生成环境中的数据通常是大规模存储在大数据集群上,而直接在大数据集群上部署Ray并不容易。其次,如何提前在集群的所有节点上准备好运行所需要的Python环境和依赖,同时不给整个集群带来副作用。第三,如果用两个不同的系统分别进行数据处理和AI任务,不可避免地会带来数据传输的overhead,还需要额外的资源去维护不同的系统和工作流。这些挑战促使了英特尔开发RayOnSpark,希望用户可以直接在大数据分析的流水线上嵌入用Ray开发的新兴人工智能应用。
四、Implementation details and API design
RayOnSpark架构
开发RayOnSpark是为了Ray的分布式应用能直接无缝地集成到Spark数据处理的流水线中。顾名思义,RayOnSpark把Ray跑在了Spark大数据集群之上,后面的介绍以YARN集群为例,同样的思路也可用于Kubernetes或者Apache Mesos等集群。在环境准备方面,我们使用conda-pack打包Python环境,在运行时分发到各个节点上,这样一来用户不需要在每个节点上提前装好Python依赖,程序结束之后集群环境也不会受到影响。下图右侧是RayOnSpark整体架构,Spark会在Driver节点上起一个SparkContext的实例,SparkContext会在整个集群起多个Spark Executer执行Spark的任务。除了SparkContext之外,RayOnSpark设计中还会在Spark Driver中创建一个RayContext的实例,利用现有的SparkContext将Ray在集群里启动起来,Ray的进程会伴随着在Spark Executer,包括一个Ray Master进程和其它的Raylet进程。RayContext 也会在Spark Executer中创建RayManager来管理这些Ray的进程,任务结束后自动将Ray的进程关掉,同时释放Ray所占用的资源。在同一个YARN集群上同时有Spark和Ray,这样我们就能够将in-memory的Spark RDD或DataFrame直接运行在Ray的应用中,使用Spark的数据做新兴人工智能应用的开发。
RayOnSpark使用方法
RayOnSpark的使用非常简单,只需要三步。首先要import Analytics Zoo中的包,通过init_spark_on_yarn方法创建SparkContext object,会自动将指定conda环境的Python依赖打包好分发给所有的Spark Executer。第二步,创建RayContext object,这是连接Ray和Spark的桥梁,在创建的时候可以定义Ray的参数,如给多大的object_store_memory等。下图右侧红色框是需要加的RayOnSpark代码,黑色框是用Ray直接写的代码。在Ray项目执行完成后,调用ray_ctx.stop()就可以关掉Ray的集群。更多的介绍可以参见:https://analytics-zoo.github.io/master/#ProgrammingGuide/rayonspark/
五、Real-world use cases
RayOnSpark的第一个应用是我们在Analytics Zoo里基于Ray Tune和RayOnSpark开发的AutoML模块。在大数据平台上构建时序应用非常复杂,需要很多流程,如特征提取、选择模型、调整超参等等。利用AutoML可以将这些过程自动化,简化搭建时间序列模型过程。感兴趣的同学可以参见:
https://github.com/intel-analytics/analytics-zoo/tree/master/pyzoo/zoo/automl ,了解更多的使用方法和 use cases。
除了AutoML,我们还基于RayOnSpark实现了数据并行的神经网络训练的pipeline。用户可以使用PySpark或者Ray并行进行数据加载和处理,我们对不同深度学习框架使用RayOnSpark实现了wrapper,去自动化地搭建分布式训练的环境。对用户来说,不再需要关心很多复杂的分布式环境搭建问题,只需要在单机上实现模型原型,使用RayOnSpark,通过简单的代码修改就可以完成大数据集群上分布式模型的训练。
合作案例:Drive-thru Recommendation System at Burger King
英特尔和汉堡王合作,针对drive-thru场景(即用户开车到快餐门店,不需要下车,直接通过门口的麦克风对话),基于RayOnSpark构建了一个完整的推荐系统流水线。汉堡王作为全球最大的快餐品牌之一,每天都会收集很多的数据,这些数据会在Spark集群上面做数据清洗和预处理,再做分布式训练。汉堡王选择使用MXNet作为深度学习框架。在与英特尔合作之前,他们单独使用了一个GPU集群做MXNet分布式训练。从Spark集群拷贝数据到GPU集群上,无疑使得他们耗费了很多时间。英特尔提供的解决方案是使用RayOnSpark,直接在Spark的集群上做分布式的训练,这样一来数据不需要再额外进行拷贝,且非常容易扩展。类似于RaySGD,在MXNet上实现了一层轻量级的wrapper layer,使得分布式MXNet训练能很容易地在YARN集群上部署。MXNet Worker和Server都在Ray进程中运行,通过Ray Manager管理。整个pipeline只需要一个集群就可以处理分布式训练任务,目前基于RayOnSpark的解决方案已经被汉堡王部署到了他们的生产环境中,证明了这种方案更加高效、更容易维护并且有更好的扩展性。
关键词:
机器学习/深度学习 人工智能 分布式计算 大数据 API Apache 算法框架/工具 Spark Python 数据处理
获取更多 Spark+AI SUMMIT 精彩演讲视频回放和ppt,请向本公众号后台发送"0704中文峰会"
阿里巴巴开源大数据技术团队成立Apache Spark中国技术社区,定期推送精彩案例,技术专家直播,问答区近万人Spark技术同学在线提问答疑,只为营造纯粹的Spark氛围,欢迎钉钉扫码加入!
对开源大数据和感兴趣的同学可以加小编微信(下图二维码,备注“进群”)进入技术交流微信群。
Apache Spark技术交流社区公众号,微信扫一扫关注
使用RayOnSpark在大数据平台上运行新兴的人工智能应用相关推荐
- 数据中台建设方案-基于大数据平台(上)
数据中台建设方案 -基于大数据平台(上) 1 数据中台建设方案 1.1 总体建设方案 通过对客户大数据应用平台服务需求的理解,根据建设目标.设计原则的多方面考虑,建议采用星环科技Transwarp D ...
- 聊聊大数据平台上云这点事
点击上方 "大数据肌肉猿"关注, 星标一起成长 点击下方链接,进入高质量学习交流群 今日更新| 950个转型案例分享-大数据交流群 作者 | 褚杏娟 如今,企业都面临着日益增长的数 ...
- 飞天大数据平台助力轻松筹数字化运营
简介:本文讲述了轻松筹是如何利用阿里云大数据平台搭建低成本的数据中台,实现数据化运营.数据中台支撑了轻松筹丰富的运营活动,通过智能化的手段,为用户和企业创造了价值. 轻松筹数据平台部高级总监 孟奇奎 ...
- 亚信大数据平台产品经理 杨晋:大数据是怎么应用于技术方面的
2014中关村大数据日于2014年12月11日在中关村举办,大会以大会以"聚合数据资产,推动产业创新"为主题,探讨数据资产管理和变现.大数据深度技术以及行业大数据应用创新和生态系统 ...
- 什么是智慧农业大数据,什么是智慧农业大数据平台?
智慧农业大数据是大数据理念,技术和方法在农业中的实践.智慧农业大数据平台可以将它们进行连接,从耕地.播种.施肥.杀虫.收割等环节通通数据化处理,再结合农业本身特点及农业全产业链切分方式,实现农业环境与 ...
- 大数据平台架构浅析——以讯飞大数据平台Odeon为例
文章目录 大数据平台架构解析--以讯飞大数据平台Odeon为例 定义 功能 数据采集 数据开发 数据分析 数据编程 补充 大数据平台架构解析--以讯飞大数据平台Odeon为例 定义 Odeon大数据平 ...
- 网易大数据平台架构实践分享!
随着网易云音乐.新闻.考拉.严选等互联网业务的快速发展,网易开始加速大数据平台建设,以提高数据获取速度,提升数据分析效率,更快发挥数据价值. 本次演讲主要分享网易如何围绕和改造开源技术,以产品化思维打 ...
- 余利华:网易大数据平台架构实践分享!
[IT168 专稿]本文根据余利华老师在2018年5月10日[第九届中国数据库技术大会]现场演讲内容整理而成. 讲师简介: 余利华,网易大数据总经理,负责网易数据科学基础设施建设, 包括大数据管理和应 ...
- 智慧农业大数据平台:农业中的“大智慧”
智慧农业是现代化农业发展的重要途径,是利用物联网等现代信息技术提升农业生产管理水平,实现传统农业转型升级的重要措施.近年来,我国食品安全问题频发,究其根本原因,既有商家过度逐利的过错,也有农产品在生产 ...
最新文章
- 设A和B是两个按元素值递增有序的单链表,写一算法将A和B归并为按按元素值递减有序的单链表C,试分析算法的时间复杂度。(利用上篇带有头结点的线性链表操作)...
- python nodemcu_NodeMCU简介与快速入门
- Objective-C学习笔记2013[NSString]字符串[可变字符串中,加用app减用delete]
- C/Cpp / 设计模式 / 简单工厂模式
- java限制数字_是否存在将我的通用方法限制为数字类型的约束?
- 双向链表示意图_图文详解双向链表原理
- 【自然框架】元数据的数据库结构的详细说明和示例(三):项目与数据库字段的关联...
- snprintf与sprintf的区别
- Python+Wind:用 Pyautogui 轻松下载 Wind 数据
- 【问题记录与解决】jupyter notebook 无法重命名,无法运行测试代码 || jupyter notebook 中常用的两个快捷键。
- 英语中定语和状语的区别
- 我想,这才是情侣之间的幸福,好羡慕他们。
- VGA\HDMI转换芯片——MS9288C
- 微软服务器无法删除不了,[图]Edge无法卸载 引发诸多用户强烈不满
- android开发板出错,Kernel panic - not syncing: Attempted to kill the idle task!出错,求助!!!...
- 一篇文章带你了解短信推送机制
- windows git fetch 时报错error: cannot lock ref ‘refs/remotes/origin/feature-1‘: there is a non-empty di
- 外资企业申请互联网信息服务经营许可证ICP注意事项有哪些?
- 我用Python发现了 十二星座 中的秘密(附视频)
- 微服务从入门到精通【入门篇一】