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

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 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

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
77 10
|
5天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营
12月14日,由中国软件行业校园招聘与实习公共服务平台携手魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·湖南大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
转载:【AI系统】AI的领域、场景与行业应用
本文概述了AI的历史、现状及发展趋势,探讨了AI在计算机视觉、自然语言处理、语音识别等领域的应用,以及在金融、医疗、教育、互联网等行业中的实践案例。随着技术进步,AI模型正从单一走向多样化,从小规模到大规模分布式训练,企业级AI系统设计面临更多挑战,同时也带来了新的研究与工程实践机遇。文中强调了AI基础设施的重要性,并鼓励读者深入了解AI系统的设计原则与研究方法,共同推动AI技术的发展。
转载:【AI系统】AI的领域、场景与行业应用
|
12天前
|
机器学习/深度学习 人工智能 算法
探索AI在医疗诊断中的应用与挑战
【10月更文挑战第21天】 本文深入探讨了人工智能(AI)技术在医疗诊断领域的应用现状与面临的挑战,旨在为读者提供一个全面的视角,了解AI如何改变传统医疗模式,以及这一变革过程中所伴随的技术、伦理和法律问题。通过分析AI技术的优势和局限性,本文旨在促进对AI在医疗领域应用的更深层次理解和讨论。
|
17天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
17天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营
12月05日,由中国软件行业校园招聘与实习公共服务平台携手阿里魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·电子科技大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
AI在自然语言处理中的突破:从理论到应用
AI在自然语言处理中的突破:从理论到应用
61 17
|
2天前
|
弹性计算 人工智能 自然语言处理
云工开物:阿里云弹性计算走进高校第2期,与北京大学研一学生共探AI时代下的应用创新
阿里云高校合作、弹性计算团队​于北京大学,开展了第2届​【弹性计算进校园】​交流活动。
|
8天前
|
人工智能 Serverless API
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
50 12
|
5天前
|
人工智能 容灾 关系型数据库
【AI应用启航workshop】构建高可用数据库、拥抱AI智能问数
12月25日(周三)14:00-16:30参与线上闭门会,阿里云诚邀您一同开启AI应用实践之旅!