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

本文涉及的产品
EMR Serverless Spark 免费试用,1000 CU*H 有效期3个月
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 
相关文章
|
1月前
|
人工智能 运维 物联网
云大使 X 函数计算 FC 专属活动上线!享返佣,一键打造 AI 应用
如今,AI 技术已经成为推动业务创新和增长的重要力量。但对于许多企业和开发者来说,如何高效、便捷地部署和管理 AI 应用仍然是一个挑战。阿里云函数计算 FC 以其免运维的特点,大大降低了 AI 应用部署的复杂性。用户无需担心底层资源的管理和运维问题,可以专注于应用的创新和开发,并且用户可以通过一键部署功能,迅速将 AI 大模型部署到云端,实现快速上线和迭代。函数计算目前推出了多种规格的云资源优惠套餐,用户可以根据实际需求灵活选择。
|
1月前
|
人工智能 算法 前端开发
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备
OmAgent 是 Om AI 与浙江大学联合开源的多模态语言代理框架,支持多设备连接、高效模型集成,助力开发者快速构建复杂的多模态代理应用。
229 72
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备
|
24天前
|
人工智能 自然语言处理 搜索推荐
【上篇】-分两篇步骤介绍-如何用topview生成和自定义数字人-关于AI的使用和应用-如何生成数字人-优雅草卓伊凡-如何生成AI数字人
【上篇】-分两篇步骤介绍-如何用topview生成和自定义数字人-关于AI的使用和应用-如何生成数字人-优雅草卓伊凡-如何生成AI数字人
116 24
【上篇】-分两篇步骤介绍-如何用topview生成和自定义数字人-关于AI的使用和应用-如何生成数字人-优雅草卓伊凡-如何生成AI数字人
|
18天前
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
1181 14
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
15天前
|
人工智能 开发框架 数据可视化
Eino:字节跳动开源基于Golang的AI应用开发框架,组件化设计助力构建AI应用
Eino 是字节跳动开源的大模型应用开发框架,帮助开发者高效构建基于大模型的 AI 应用。支持组件化设计、流式处理和可视化开发工具。
177 27
|
7天前
|
存储 人工智能 程序员
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
138 9
|
14天前
|
存储 人工智能 NoSQL
Airweave:快速集成应用数据打造AI知识库的开源平台,支持多源整合和自动同步数据
Airweave 是一个开源工具,能够将应用程序的数据同步到图数据库和向量数据库中,实现智能代理检索。它支持无代码集成、多租户支持和自动同步等功能。
82 14
|
6天前
|
人工智能 BI
【瓴羊数据荟】 AI x Data :大模型时代的数据治理与BI应用创新 | 瓴羊数据Meet Up第4期上海站
瓴羊「数据荟」Meet Up城市行系列活动第四期活动将于3月7日在上海举办,由中国信息通信研究院与阿里巴巴瓴羊专家联袂呈现,共同探讨AI时代的数据应用实践与企业智能DNA的革命性重构。
【瓴羊数据荟】  AI  x Data :大模型时代的数据治理与BI应用创新 | 瓴羊数据Meet Up第4期上海站
|
8天前
|
数据采集 人工智能 安全
阿里云携手DeepSeek,AI应用落地五折起!
近年来,人工智能技术飞速发展,越来越多的企业希望借助AI的力量实现数字化转型,提升效率和竞争力。然而,AI应用的开发和落地并非易事,企业往往面临着技术门槛高、成本投入大、落地效果难以保障等挑战。
58 1
|
17天前
|
人工智能 自然语言处理 数据可视化
Cursor 为低代码加速,AI 生成应用新体验!
通过连接 Cursor,打破了传统低代码开发的局限,我们无需编写一行代码,甚至连拖拉拽这种操作都可以抛诸脑后。只需通过与 Cursor 进行自然语言对话,用清晰的文字描述自己的应用需求,就能轻松创建出一个完整的低代码应用。
686 8