使用RayOnSpark在大数据平台上运行新兴的人工智能应用

简介: RayOnSpark 能够让Ray的分布式应用直接无缝地集成到Apache Spark的数据处理流水线中,省去集群间数据传输的overhead,支持用户使用Spark处理的数据做新兴人工智能应用的开发。本次直播将由Intel大数据团队软件工程师黄凯为您介绍Ray和Intel的开源项目Analytics Zoo,开发RayOnSpark的动机和初衷,同时结合实际案例分享RayOnSpark的落地实践。

演讲嘉宾简介:黄凯,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平台。

image.png

Analytics Zoo

Analytics Zoo底层依赖于一系列现有的常用框架,包括主流的深度学习框架、分布式计算框架、Python数据处理库等,在这些框架之上搭建了一套非常完整的数据分析和人工智能的流水线,包括支持用户在Spark上跑分布式的 TensorFlow和PyTorch,只需要做很小的代码改动就可以在大数据平台运行主流的深度学习框架;对Spark DataFrame和ML Pipeline提供了原生的深度学习支持;也提供了轻量级的API对训练好的模型做线上推理。在流水线之上,Analytics Zoo提供了ML workflow,帮助用户自动化地去构建大规模的人工智能应用,比如对时间序列做可扩展的预测,以及分布式Cluster Serving。最上层对很多常见领域,如推荐、时间序列、计算机视觉、自然语言处理等等,提供了开箱即用的模型以及参考案例。

image.png

实际工作中,开发部署一条数据分析和AI的流水线通常需要经历三个步骤:开发者首先在笔记本上使用样本数据完成开发的原型,然后使用历史几个月的数据在集群上做实验,实验结果没有问题的话再到生产环境中进行大规模的部署。我们希望在执行三个步骤中,用户几乎不需要改动,就能将单机的代码无缝地部署在生成环境中,并且简化和自动化搭建整个pipeline的过程,这也是开发Analytics Zoo和RayOnSpark的初衷和目的。

image.png

二、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可以支持单机和集群上的并行运行。

image.png

除了直接使用Ray Core实现简单的并行之外,Ray还提供了一些high-level的library,加速人工智能workload的构建。其中Ray Tune能自动去调参,RLib提供统一的API去执行不同强化学习任务,Ray SGD在PyTorch和TensorFlow原生的分布式模块之上实现了一层wrapper来简化部署分布式训练的过程。

image.png

三、Motivations for Ray On Apache Spark

Ray可以让用户很容易的构建新兴的人工智能的应用,在实际工作过程中也越来越需要将这些新兴的人工智能技术应用在生产成数据上,来创造更多的价值。但其实用户在这个过程中会往往面临一些挑战:首先,生成环境中的数据通常是大规模存储在大数据集群上,而直接在大数据集群上部署Ray并不容易。其次,如何提前在集群的所有节点上准备好运行所需要的Python环境和依赖,同时不给整个集群带来副作用。第三,如果用两个不同的系统分别进行数据处理和AI任务,不可避免地会带来数据传输的overhead,还需要额外的资源去维护不同的系统和工作流。这些挑战促使了英特尔开发RayOnSpark,希望用户可以直接在大数据分析的流水线上嵌入用Ray开发的新兴人工智能应用。

image.png

四、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的数据做新兴人工智能应用的开发。

image.png

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/

image.png

五、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。

image.png

除了AutoML,我们还基于RayOnSpark实现了数据并行的神经网络训练的pipeline。用户可以使用PySpark或者Ray并行进行数据加载和处理,我们对不同深度学习框架使用RayOnSpark实现了wrapper,去自动化地搭建分布式训练的环境。对用户来说,不再需要关心很多复杂的分布式环境搭建问题,只需要在单机上实现模型原型,使用RayOnSpark,通过简单的代码修改就可以完成大数据集群上分布式模型的训练。

image.png

合作案例: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的解决方案已经被汉堡王部署到了他们的生产环境中,证明了这种方案更加高效、更容易维护并且有更好的扩展性。

image.png

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
12天前
招募!阿里云x魔搭社区发起Create@AI创客松邀你探索下一代多维智能体应用
招募!阿里云x魔搭社区发起Create@AI创客松邀你探索下一代多维智能体应用
264 0
|
12天前
|
人工智能 自然语言处理 开发者
AIGC创作活动 | 跟着UP主秋葉一起部署AI视频生成应用!
本次AI创作活动由 B 站知名 AI Up 主“秋葉aaaki”带您学习在阿里云 模型在线服务(PAI-EAS)中零代码、一键部署基于ComfyUI和Stable Video Diffusion模型的AI视频生成Web应用,快速实现文本生成视频的AI生成解决方案,帮助您完成社交平台短视频内容生成、动画制作等任务。制作上传专属GIF视频,即有机会赢取乐歌M2S台式升降桌、天猫精灵、定制保温杯等好礼!
|
14天前
|
存储 消息中间件 监控
【Flume】Flume在大数据分析领域的应用
【4月更文挑战第4天】【Flume】Flume在大数据分析领域的应用
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
阿里通义千问大语言模型在人工智能教育领域的应用探索
阿里通义千问,阿里集团的大型预训练语言模型,应用于AI教育,实现个性化教学、自适应学习系统和智能答疑。通过AIGC,它生成个性化内容,适应不同学生需求,优化教育资源配置,推动教育创新。在教育场景中,模型提供实时反馈,定制学习路径,促进教学质量提升。随着技术进步,AI在教育领域的应用将更加深入,但也需关注伦理与安全。
87 1
|
1天前
|
机器学习/深度学习 人工智能 算法
未来AI技术的发展与应用前景
随着人工智能(AI)技术的迅速发展,其在各个领域的应用前景备受关注。本文将探讨未来AI技术的发展趋势,以及其在医疗、交通、教育等领域的潜在应用,展望AI技术对未来社会的影响和改变。
9 1
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在当代社会中的应用与未来发展趋势 摘要:
人工智能(AI)作为一种新兴技术,在当代社会中扮演着越来越重要的角色。本文将探讨人工智能的基本概念、当前在各个领域的应用情况以及未来的发展趋势。首先,我们将介绍人工智能的定义和分类,然后详细讨论人工智能在医疗、金融、制造业、交通、教育等领域的应用案例。接着,我们将分析人工智能发展面临的挑战,包括数据隐私、伦理道德等问题,并探讨如何解决这些问题以推动人工智能的发展。最后,我们将展望人工智能的未来发展趋势,包括深度学习、自然语言处理、机器人技术等方面的进展,以及人工智能对社会和经济的影响。
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
构建未来:人工智能在创造性问题解决中的应用
【4月更文挑战第14天】 随着人工智能(AI)技术的不断进步,其在模仿和增强人类创造力方面的潜力正逐渐被挖掘。本文章探讨了AI如何通过机器学习、深度学习和自然语言处理等技术,在音乐创作、艺术设计和复杂问题求解等领域中展现出其独特的创新能力。我们分析了当前AI在创造性任务中所采用的方法,并讨论了这些技术如何推动新领域的发展,同时指出了目前存在的挑战和未来的发展方向。
|
7天前
|
人工智能 自然语言处理 搜索推荐
|
7天前
|
机器学习/深度学习 人工智能 算法
AI战略丨AI原生时代,应用创新蓄势待发
通过热点AI应用创新项目的观察,我们可以看到新技术的突破方向,也能发现基于生成式AI迸发出的全新商业前景落地的可能性。
AI战略丨AI原生时代,应用创新蓄势待发
|
7天前
|
机器学习/深度学习 数据采集 人工智能