4 MLSQL,一种基于Spark平台上的SQL方言

1. MLSQL ⼀一种基于Spark平台上的SQL⽅方⾔言
2. ⾃自我简介 祝海海林林,丁⾹香园⼤大数据资深架构师 技术博客: http://www.jianshu.com/u/59d5607f1400 开源项⽬目: https://github.com/allwefantasy
3. 演讲⽬目录 01 为什什么开发MLSQL 02 MLSQL使⽤用演示 03 MLSQL原理理剖析 04 Skone平台介绍 机器器学习平台MLSQL实践 Please Keep Quiet
4. 01 为什什么开发MLSQL
5. 算法落地最核⼼心的是什什么-协作 平台 推荐 运维 研发 - 数据获取/数据处理理/预测服务部署 分析师 - 数据获取,算法产品效果评估 专业医学 - 知识库是推理理的核⼼心 算法 -问题分析,训练模型 搜索 研发 业务 NLP 推荐/搜 索 算法 分析师 ⾼高级 图像 专业医学
6. 协作成本 问题: 1 算法需要反复清洗数据,直到找到合适的特征集合。 2 ⼯工程要⽤用Spark做⼀一遍⼯工程化,主要是为了了做定期训练 3 ⼯工程要⽤用Java/Scala之类的再写⼀一遍针对单条的,主要是为了了做预测 原因: 1. 语系不不同,难以复⽤用。算法 Python, 研发 Java/Scala/Go/C++ 2. 框架体系不不同,算法SKLearn,C++库,Tensorflow, 研发Spark等 3. 对代码要求不不⼀一样。算法希望快速找到合适的特征和模型, ⼯工程注重效率和代码复⽤用
7. 反问⾃自⼰己 1 数据处理理过程⽆无法在训练和预测时复⽤用 2 ⽆无法很好的衔接算法和⼯工程的框架 能填补这种沟壑么?
8. “ 答案是:可以的 ”
9. MLSQL 1. SQL 是⼀一个⼴广泛被接受的语⾔言 2. 可增强的语法 3. ⼀一切都是计算 算法,分析师,研发,知识库, 产品都可会⽤用,也易易于复⽤用 引⼊入Train,Load,Register等新语法, 适配算法的需要 通过Spark引擎衔接⼤大数据和机器器学习框架
10. “ 吐槽下Spark MLlib ”
11. ⼀一句句结论 Spark Mllib就是个玩具
12. Spark MLlib⾃自身的问题(1) ⽆无法有效的嵌⼊入应⽤用服务/流服务中 1. ⾯面向批处理理 2. 接⼝口设计不不合理理 3. 分布式实现带来的精度损失 编程使⽤用困难 同样的数据,特征, ⽐比如SKlearn准确度会低
13. Spark MLlib⾃自身的问题(2) 很多算法基本⽆无⽤用 TFIDF Transformation没法⽤用 ⼯工程思维做机器器学习 缺乏⼀一些基础设施, ⽐比如没有整合分词库,NLP蛋疼
14. 02 MLSQL使⽤用演示
15. MLSQL-LSTRP五步曲 1. 2. 3. 4. 5. Load 各种数据源 MySQL/ES/HBase/Parquet/Hive Select 通过多条简单SQL完成复杂数据关联,处理理,聚合 Train 选择算法,对处理理好的数据进⾏行行训练得到模型 Register 将模型注册为为UDF函数 使⽤用SQL/UDF函数对数据进⾏行行预测,统计,效果评估
16. ⼀一个较为复杂的例例⼦子 https://gist.github.com/allwefantasy/5aca641901e4af6822a99783d6ade65a
17. MLSQL-额外 UDF⼤大礼包: 1. 向量量操作 2. 数组操作
18. MLSQL-额外2 模型⼤大礼包: 1. 向量量操作 2. 数组操作 除了了标准模型外, ⽤用户可任意扩展⾃自⼰己的模型包, 扩充MLSQL功能
19. MLSQL-底层算法框架⽀支持 ⽀支持⼤大部分Spark MLlib算法 ⽀支持CNN/FC 等对NLP的处理理 可以提交 ⾃自⼰己的实现 ⽀支持部分算法
20. MSQL 算法使⽤用
21. MSQL TensorFlow 现有算法
22. MSQL TensorFlow ⾃自定义算法
23. MSQL SKLearn 1 2 3 4 GradientBoostingClassifier RandomForestClassifier SVC MultinomialNB
24. 03 MLSQL原理理剖析
25. MLSQL原理理示意图 MLSQL Rest API DSL Driver Executor Executor JVM train Kafka Predict Socket PythonWorker
26. 对Spark的增强 1. 除了了thrifserver,还集成了了Rest API 2. ⽀支持异步脚本执⾏行行,⽀支持回调 3. ⽀支持脚本任务的超时设置和取消,有较为完整的任务管理理 4. DSL增强的语法特性,可以通过set 语法设置变量量 5. 提供Driver 和 Executor的RPC通讯机制,可以读Spark进⾏行行通讯编程。
27. 训练为什什么需要Kafka 1. 数据要从多个节点汇总到⼀一个节点,Spark不不⽀支持这种⾏行行为。 2. 数据要反复消费 3. Kafka稳定吞吐⾼高
28. 预测为什什么不不需要Kafka 1. 预测是通过UDF函数,要求低延时 2. JVM/Python socket通讯⾼高效 3. 复⽤用Spark 的Python worker机制
29. 如何贡献Tensorflow/SKLearn类算法 MLSQL提供了了mlsql库: 1. 获取参数 2. 获取数据 3. 模型保存
30. 如何贡献Spark MLlib/DL4J算法 MLSQL提供了了SQLAlg接⼝口: 1. train 2. load 3. predict
31. 如何实现Python和Spark的交互 Question:为什什么不不能直接使⽤用PySpark
32. 如何实现Python和Spark的交互(⼆二) 额外: 训练逻辑: 1. SKlearn训练后的会将模型直接保存成Parquet⽂文件 1. 获取fitParams参数 2. Tensorflow 模型⾃自身可以跨语⾔言 2. 将参数转化为RDD 3. 执⾏行行Spark Task 4. Task将训练数据写⼊入Kafka 5. 每个Task启动⼀一个Python进程,消费Kafka,训练 6. 保存模型到本地 7. 上传到HDFS
33. 如何实现Python和Spark的交互(三) 预测: 1. 2. 3. 4. 在Driver端启动Python进程,并且将predict脚本执⾏行行后序列列化(序列列化函数) 把函数⼴广播到各个节点 启动python worker,启动socket 使⽤用java pickle 和 python pickle 对vector进⾏行行交互。输出输⼊入都是vector
34. 04 Skone平台介绍
35. Skone 是⼀一款可视化的,集成⼤大数据抓取, 处理理(流式或者批处理理),机器器学习,BI报表于⼀一 数据平台
36. Skone 主界⾯面 分布式调度/定时 正在运⾏行行任务管理理 超时、杀死 MSQL编辑框 MLSQL脚本⽬目录
37. Skone 定时调度
38. Skone运⾏行行任务管理理
39. Skone架构 分析师,算法,研 发,商业部⻔门 权限 调度/定时 Skone Web/API 任务管理理 StreamingPro SQL Server …. more… StreamingPro SQL Server 注册 商业部⻔门MySQL connect jdbc where driver="com.mysql.jdbc.Driver" and url="jdbc:mysql://127.0.0.1/db?characterEncoding=utf8" and user="root" and password="****" as db1; ⽤用户⾃自定义中间表 (Parquet) 分析师抽象业务表 (Parquet/CarbonData) StreamingPro Batch/Hive Batch
40. Skone特点 1. 单⼀一实例例,多实例例都能实现资源控制 2. 完善的权限控制,⽤用户各⾃自拥有主⽬目录 3. 完备的编辑,调度,运⾏行行管理理功能
41. 额外Bonus 1. 怎么⽤用MLSQL写爬⾍虫 2. 怎么⽤用MLSQL添加⼀一个流式处理理流程 3. MLSQL对于AutoML的规划
42. Thanks! 欢迎提问 Please make some noise