StreamingPro is mainly designed to run on Apache Spark but it also supports Apache Flink for the runtime. Thus, it can be considered as a cross,distributed platform which is the combination of BigData platform and AI platform where you can run both Big Data Processing and Machine Learning script.

MLSQL is a DSL akin to SQL but more powerfull based on StreamingPro platform. Since StreamingPro have already intergrated many ML frameworks including Spark MLLib, DL4J and Python ML framework eg. Sklearn, Tensorflow(supporting cluster mode) this means you can use MLSQL to operate all these popular Machine Learning frameworks.

注脚

展开查看详情

1. MLSQL 一种基于Spark平台上的SQL方言

2.自我 简介 祝海林,丁香园大数据资深架构师 技术博客: http://www.jianshu.com/u/59d5607f1400 开源项目: https://github.com/allwefantasy

3.演讲 目录 为什么开发MLSQL 01 MLSQL使用演示 02 Skone平台介绍 04 Please Keep Quiet 机器学习平台MLSQL实践 MLSQL原理剖析 03

4. 为什么开发MLSQL 01

5.算法落地最核心的是什么-协作 研发 - 数据获取/数据处理/预测服务部署 分析师 - 数据获取,算法产品效果评估 专业医学 - 知识库是推理的核心 算法 -问题分析,训练模型 研发 算法 分析师 专业医学 搜索 平台 推荐 NLP 推荐/搜索 图像 业务 高级 运维

6.协作成本 问题: 1 算法需要反复清洗数据,直到找到合适的特征集合。 2 工程要用Spark做一遍工程化,主要是为了做定期训练 3 工程要用Java/Scala之类的再写一遍针对单条的,主要是为了做预测 原因: 语系不同,难以复用。算法 Python, 研发 Java/Scala/Go/C++ 框架体系不同,算法SKLearn,C++库,Tensorflow, 研发Spark等 对代码要求不一样。算法希望快速找到合适的特征和模型, 工程注重效率和代码复用

7.反问自己 能填补这种沟壑么? 1 数据处理过程无法在训练和预测时复用 2 无法很好的衔接算法和工程的框架

8.“ 答案是:可以的 ”

9.MLSQL 1. SQL 是一个广泛被接受的语言 2. 可增强的语法 3. 一切都是计算 算法,分析师,研发,知识库, 产品都可会用,也易于复用 引入Train,Load,Register等新语法, 适配算法的需要 通过Spark引擎衔接大数据和机器学习框架

10.“ 吐槽下Spark MLlib ”

11.一句结论 Spark Mllib就是个玩具

12.Spark MLlib自身的问题(1) 面向批处理 接口设计不合理 分布式实现带来的精度损失 无法有效的嵌入应用服务/流服务中 编程使用困难 同样的数据,特征, 比如SKlearn准确度会低

13.Spark MLlib自身的问题(2) 工程思维做机器学习 很多算法基本无用 TFIDF Transformation没法用 缺乏一些基础设施, 比如没有整合分词库,NLP蛋疼

14.MLSQL使用演示 02

15.MLSQL-LSTRP五步曲 Load 各种数据源 MySQL/ES/HBase/Parquet/Hive Select 通过多条简单SQL完成复杂数据关联,处理,聚合 Train 选择算法,对处理好的数据进行训练得到模型 Register 将模型注册为为UDF函数 使用SQL/UDF函数对数据进行预测,统计,效果评估

16.一个较为复杂的例子 https://gist.github.com/allwefantasy/5aca641901e4af6822a99783d6ade65a

17.MLSQL-额外 UDF大礼包: 向量操作 数组操作

18.MLSQL-额外2 模型大礼包: 向量操作 数组操作 除了标准模型外, 用户可任意扩展自己的模型包, 扩充MLSQL功能

19.MLSQL-底层算法框架支持 支持大部分Spark MLlib算法 支持CNN/FC 等对NLP的处理 支持部分算法 可以提交 自己的实现

20.MSQL 算法使用

21.MSQL TensorFlow 现有算法

22.MSQL TensorFlow 自定义算法

23.MSQL SKLearn 1 GradientBoostingClassifier 2 RandomForestClassifier 3 SVC 4 MultinomialNB

24.MLSQL原理剖析 03

25.MLSQL原理示意图 Rest API DSL Driver Executor JVM PythonWorker Executor train Kafka Predict Socket MLSQL

26.对Spark的增强 除了thrifserver,还集成了Rest API 支持异步脚本执行,支持回调 支持脚本任务的超时设置和取消,有较为完整的任务管理 DSL增强的语法特性,可以通过set 语法设置变量 提供Driver 和 Executor的RPC通讯机制,可以读Spark进行通讯编程。

27.训练为什么需要Kafka 数据要从多个节点汇总到一个节点,Spark不支持这种行为。 数据要反复消费 Kafka稳定吞吐高

28.预测为什么不需要Kafka 预测是通过UDF函数,要求低延时 JVM/Python socket通讯高效 复用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的交互(二) 训练逻辑: 获取fitParams参数 将参数转化为RDD 执行Spark Task Task将训练数据写入Kafka 每个Task启动一个Python进程,消费Kafka,训练 保存模型到本地 上传到HDFS 额外: SKlearn训练后的会将模型直接保存成Parquet文件 Tensorflow 模型自身可以跨语言

33.如何实现Python和Spark的交互(三) 预测: 在Driver端启动Python进程,并且将predict脚本执行后序列化(序列化函数) 把函数广播到各个节点 启动python worker,启动socket 使用java pickle 和 python pickle 对vector进行交互。输出输入都是vector

34.Skone平台介绍 04

35.Skone 是一款可视化的,集成大数据抓取, 处理(流式或者批处理),机器学习,BI报表于一体的 数据平台

36.Skone 主界面 MLSQL脚本目录 MSQL编辑框 分布式调度/定时 正在运行任务管理 超时、杀死

37.Skone 定时调度

38.Skone运行任务管理

39.Skone架构 Skone Web/API StreamingPro SQL Server StreamingPro SQL Server …. 商业部门MySQL 用户自定义中间表(Parquet) 分析师抽象业务表(Parquet/CarbonData) 分析师,算法,研发,商业部门 注册 StreamingPro Batch/Hive Batch 权限 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; 调度/定时 任务管理 more…

40.Skone特点 单一实例,多实例都能实现资源控制 完善的权限控制,用户各自拥有主目录 完备的编辑,调度,运行管理功能

41.额外Bonus 怎么用MLSQL写爬虫 怎么用MLSQL添加一个流式处理流程 MLSQL对于AutoML的规划

42.欢迎提问 Thanks! Please make some noise