申请试用
HOT
登录
注册
 
Arch Meetup#8 杭州站 - 使用 Ray 作为 Spark SQL UDF 的执行引擎
0 点赞
0 收藏
2下载
Milvus.io
/
发布于
/
30
人观看
使用 Ray 作为 Spark SQL UDF 的执行引擎

这次分享我们会重点介绍如何基于 Ray 使用 Python 实现 Spark SQL UDF 函数,进一步的,我们使用该技术实现有状态的 UDF 函数,从而能够将常见的 Python 算法模型转换成 SQL UDF 函数使用,解决算法模型包装成 SQL 函数面临的两大难题:1. 函数需要一个初始化过程,2. 函数有一定的 Python 环境要求。

展开查看详情

1.使用Ray 作为Spark SQL UDF的执行引擎 祝威廉 Kyligence

2. u MLSQL 是怎么支持Python的 Agenda u 为什么要整合Ray u 整合Ray的两种模式 u 如何使用Ray作为UDF执行引擎

3.MLSQL 是如何支持Python的 1. MLSQL 语法扩展插件,能够 执行Python代码 2. Python在MLSQL中作为文本 片段存在 3. Python是沙箱,输入输出都 必须是表,我们提供了API供交 互 © Kyligence Inc. 2021, Confidential.

4.MLSQL对应到后端代码层面-PyJava原理 Python Daemon Python Worker Java Executor Python Daemon Python Worker 1. Python Deamon主要由Python版本+ 环境变量决定 2. Python Worker 由Python Daemon管理 3. 双方主要通过输入输出流进行数据交换 4. 数据传输格式为Arrow © Kyligence Inc. 2021, Confidential.

5.现有模式的局限 Node 1 Python 1. Python / Java 混合部署,互相干扰,难以隔离, Daemon Python Worker 运维困难(Python环境需要多份) Java Executor 2. 无法实现GPU等多种资源的调度 Python Daemon Python 3. 不同Python Worker无法实现交互互通 Worker 4. 基于这套架构使用Python实现一个简单的PS结构 都难以做到,不具备分布式编程能力,仅能进行分 Node 2 布式数据处理。 Python Daemon Python Worker Java Executor Python Daemon Python Worker © Kyligence Inc. 2021, Confidential.

6.怎么办? 引入Ray! © Kyligence Inc. 2021, Confidential.

7.新模式 Ray 角色转换,只负责提交代码,真实任务在Ray集群执行 Client 一个Python Deamon对应一 无需安装如Tensorflow,Pytorch等机器学习库 套不同Python环境 Node N Python Daemon Python Worker 1. Ray 支持真正的Python分布式编程,能力 Java 强大 Executor 2. 多Ray集群,用户可以选择连接不同Python Python 环境 Daemon Python Ray Cluster Worker 3. 充分利用Ray的硬件识别和调度能力,如基 于GPU ,CPU,内存进行调度。 © Kyligence Inc. 2021, Confidential.

8.存在两种交互模式 mode=model Ray client 返回数据(机器学习场景) mode=Data Ray client 返回数据地址(ETL场景) © Kyligence Inc. 2021, Confidential.

9.mode=model Arrow Format Spark Cluster Partition Servers Address RDD Partition 0 Read Once server RDD Partition 1 Read Once server step1 python worker Ray client RDD Partition 2 Read Once server Submit Job step2 Ray Cluster step3 New RDD Partition 0 © Kyligence Inc. 2021, Confidential.

10.mode=model 对应MLSQL代码 Ray client端会返回数据, 比如模型二进制目录或者路径 © Kyligence Inc. 2021, Confidential.

11.mode=data Arrow Format Spark Cluster Partition Servers Address RDD Partition 0 Read Once server RDD Partition 1 Read Once server python worker Ray client RDD Partition 2 Read Once server Submit Job Actor Servers Address Ray Cluster New RDD Partition 0 Read Once server Actor 0 New RDD Partition 1 Read Once server Actor 1 New RDD Partition 2 Read Once server Actor 2 © Kyligence Inc. 2021, Confidential.

12.mode=data 对应MLSQL代码 Ray client端会返回数据地址而非数据 © Kyligence Inc. 2021, Confidential.

13.如何使用Ray作为UDF执行引擎 © Kyligence Inc. 2021, Confidential.

14.如何使用Ray作为UDF执行引擎 © Kyligence Inc. 2021, Confidential.

15.Python UDF 的几个点 在Java中 执行Python代码 传统做法:先序列化python函数,然后丢到python worker中执行 MLSQL(PyJava)做法:Python代码直接丢到 python worker中 无状态UDF函数 加载模型 有状态UDF函数 怎么实现? 使用模型进行 预测 © Kyligence Inc. 2021, Confidential.

16.有状态UDF函数实现初步设想 HTTP UDF Worker UDF Worker UDF Worker UDF Worker 本质是启动一个ML Serving集群,提供 PRC, HTTP支持 UDF Worker UDF Worker RPC © Kyligence Inc. 2021, Confidential.

17.此前难以落地 难以维护,譬 难以自动化 如需要网关, 部署 资源等等 UDF 侧需要 针对http/rpc 开发成本高 编程 © Kyligence Inc. 2021, Confidential.

18.天降大Ray © Kyligence Inc. 2021, Confidential.

19.实现基本原理 • 创建一个detached actor(UDFMaster),名称为udf名 • UDFMaster根据配置(初始化,预测逻辑),启动N个UDFWorker(也是actor) 注册 • 创建Spark UDF函数,该函数会通过pyjava 执行python 代码 仅用96行Ray代码 • 被pyjava执行的python函数会通过udf名获取UDFMaster • 通过UDFMaster 获取可用的UDFWorker 预测 • 调用UDFWorker的apply方法执行实际预测逻辑 Incredible 3连 • 用户可以在Ray dashboard可视化管理 UDF集群 • 用户可以通过MLSQL插件管理UDF 集群 管理 © Kyligence Inc. 2021, Confidential.

20.用户可自定义注册和预测部分实现 提供模型加载以及预测代码 此时会根据这些信息启动UDF Cluster 使用Python预测代码创建 Spark UDF © Kyligence Inc. 2021, Confidential.

21.UDF 注册逻辑图 Spark Cluster PyJava(Driver) Ray Cluster UDF Cluster UDF Worker 创建一个 UDF Master-Slave Cluser UDF Worker UDF Master UDF Worker © Kyligence Inc. 2021, Confidential.

22.UDF执行 - 引擎侧逻辑 Scala UDF (PyJava) Ray Cluster Python Deamon Python Worker Java Executor Python Deamon Python Worker © Kyligence Inc. 2021, Confidential.

23.UDF 执行- 全局逻辑 Spark Cluster Step2 UDF Worker DF Partition 0 Scala UDF (PyJava) 执行实际逻辑 DF Partition 1 Scala UDF (PyJava) DF Partition 2 Scala UDF (PyJava) Step1: 获取 可用worker Ray Cluster UDF Worker Python Deamon Python Worker UDF Worker Java Executor UDF Master Python UDF Worker Deamon Python Worker © Kyligence Inc. 2021, Confidential.

24.价值 Python/内置算法-三板斧完美闭环 模型训练 Train 模型变函数, Registe Predict 批量预测,吞吐优先 r 批流,HTTP/RPC皆可用 © Kyligence Inc. 2021, Confidential.

25.欢迎加入 mlsql.ai 社区 © Kyligence Inc. 2021, Confidential.

26.Contact Us Kyligence Inc Apache Kylin u http://kyligence.io u http://kylin.apache.org u info@kyligence.io u dev@kylin.apache.org u Twitter: @Kyligence u Twitter: @ApacheKylin © Kyligence Inc. 2021, Confidential.

27. 扫码填写问卷, 欢迎关注我们的社交媒体账号 获取折叠风扇 & Milvus v2.0 限定 版T恤! 微信公众号 微信视频号 (Milvus相关最新文章) (Milvus最新视频、直播)

0 点赞
0 收藏
2下载