使用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

相关文章
|
4月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
1046 51
|
5月前
|
人工智能 安全 中间件
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
9 月 26 日,2025 云栖大会 AI 中间件:AI 时代的中间件技术演进与创新实践论坛上,阿里云智能集团资深技术专家林清山发表主题演讲《未来已来:下一代 AI 中间件重磅发布,解锁 AI 应用架构新范式》,重磅发布阿里云 AI 中间件,提供面向分布式多 Agent 架构的基座,包括:AgentScope-Java(兼容 Spring AI Alibaba 生态),AI MQ(基于Apache RocketMQ 的 AI 能力升级),AI 网关 Higress,AI 注册与配置中心 Nacos,以及覆盖模型与算力的 AI 可观测体系。
1175 55
|
4月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
591 30
|
4月前
|
设计模式 人工智能 自然语言处理
3个月圈粉百万,这个AI应用在海外火了
不知道大家还记不记得,我之前推荐过一个叫 Agnes 的 AI 应用,也是当时在 WAIC 了解到的。
573 1
|
4月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
4月前
|
人工智能 算法 Java
Java与AI驱动区块链:构建智能合约与去中心化AI应用
区块链技术和人工智能的融合正在开创去中心化智能应用的新纪元。本文深入探讨如何使用Java构建AI驱动的区块链应用,涵盖智能合约开发、去中心化AI模型训练与推理、数据隐私保护以及通证经济激励等核心主题。我们将完整展示从区块链基础集成、智能合约编写、AI模型上链到去中心化应用(DApp)开发的全流程,为构建下一代可信、透明的智能去中心化系统提供完整技术方案。
363 3
|
4月前
|
消息中间件 人工智能 安全
构建企业级 AI 应用:为什么我们需要 AI 中间件?
阿里云发布AI中间件,涵盖AgentScope-Java、AI MQ、Higress、Nacos及可观测体系,全面开源核心技术,助力企业构建分布式多Agent架构,推动AI原生应用规模化落地。
490 0
构建企业级 AI 应用:为什么我们需要 AI 中间件?
|
5月前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
591 12
|
4月前
|
人工智能 安全 Serverless
再看 AI 网关:助力 AI 应用创新的关键基础设施
AI 网关作为云产品推出已有半年的时间,这半年的时间里,AI 网关从内核到外在都进行了大量的进化,本文将从 AI 网关的诞生、AI 网关的产品能力、AI 网关的开放生态,以及新推出的 Serverless 版,对其进行一个全面的介绍,期望对正在进行 AI 应用落地的朋友,在 AI 基础设施选型方面提供一些参考。
830 72
|
4月前
|
人工智能 缓存 运维
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
本文介绍联调造数场景下的AI应用演进:从单Agent模式到多Agent协同的架构升级。针对复杂指令执行不准、响应慢等问题,通过意图识别、工具引擎、推理执行等多Agent分工协作,结合工程化手段提升准确性与效率,并分享了关键设计思路与实践心得。
773 20
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀