订阅博客
收藏博客
微博分享
QQ空间分享

你是风儿我是沙,重磅!蚂蚁金服开源机器学习东西SQLFlow,技能架构独家解读,西游记好词好句

频道:人人中彩票手机版登录 标签:人体课谌字怎么读 时间:2019年05月12日 浏览:167次 评论:0条
鲁邦三世

SQLFlow 的方针是将 SQL 引擎和 AI 引擎衔接起来,让用户仅需几行 SQL 代码就能描绘整个运用或许产品背面的数据流和 AI 结构。其间所触及的 SQL 引擎包含 MySQL、Oracle、Hive、SparkSQL、Flink 等支撑用 SQL 或其某个变种言语描绘数据,以及描绘对数据的操作的体系。而这儿所指的 AI 引擎包含 TensorFlow、PyTorch 等深度学习体系,也包含 XGBoost、LibLinear、LibSVM 等传统机器学习体系。

SQLF天花low 开源项目链接:https://sqlflow.org/sqlflow

SQLFlow 的研制团队以为,在 SQLFlow 和 AI 引擎之间存在一个很大的空地——怎么把数据变成 AI 模型需求的输入。谷歌开源的 TensorFlow 项目开了一个好头,TFX Data Transfo公主调教rm 和 feature column API 都是目的添补这个空缺的项目。可是这个空缺很大,是各种 SQL 引擎和各种 AI 引擎的笛卡尔积,远不是 TensorFlow 的这两个子项目就足以添补的,需求一个开源社区才行。要添补好这个空缺,需求先让用户意识到其重要性,这也是蚂蚁金服开源 SQLFlow 的目的之一。

你是风儿我是沙,重磅!蚂蚁金服开源机器学习东西SQLFlow,技能架构独家解读,西游记好词好句
李靓蕾

SQLFlow 坐落 AI 软件体系生态的最奁顶端,最挨近用户,它也坐落数据和数据流软件生态之上。

其实,将 SQL 和 AI 衔接起来这个主意并非 SQLFlow 原创。谷歌于 2018 年年中发布的 BigQueryML 相同旨在“让数据科学家和剖析师只用 SQL 言语就可以完成盛行的机器学习功用并履行猜测剖析”。除了 Goog昭通天气预报le 的 BigQueryML,微软依据 SQL Server 的 AI 扩展,以及 Teradata 的 SQL for DL 相同旨在衔接 SQL 和 AI,让人工智能的运用变得像 SQL 相同简略。而 SQLFlow 与上述各个体系最底子的差异在于:SQLFlow 是开源的,以上体系都不是。

蚂蚁金服和许多互联网公司相同,不同产品背面有许多功用都依靠于 AI,比方用户信誉的评价便是一套猜测模型。到现在为止,每一个这样的功用的完成,都依靠一个工程师团队开发多个子体系——读取数据库或许在线日志流、这两类数据的 join、各种数据挑选、数据到模型输入(常说的 features)的映射你是风儿我是沙,重磅!蚂蚁金服开源机器学习东西SQLFlow,技能架构独家解读,西游记好词好句、练习模型、用练习好的模型来做猜测。整个进程下来耗时往往以月计,假如加班加点抛弃写 unit test 代码,或许缩短到以周记。

以上问题正是 SQLFlow 体系期望替工程师们处理的问题。蚂蚁金服具有数千数据剖析师,他们日常工效果的便是 SQL 言语。尽管数据剖析师在互联网职业往往不像用 Python、Java、C++ 的工程师那样夺目,可是在许多有面向商业伙伴的事务的公司里,比方 LinkedIn,他们的奉献和人数都能与工程师相匹敌。SQLFlow 最早的初衷,便是期望处理剖析师既要操作数据又要运用 AI、往往需求在两个乃至更多的体系之间切换、作业功率低的困境。你是风儿我是沙,重磅!蚂蚁金服开源机器学习东西SQLFlow,技能架构独家解读,西游记好词好句

SQLFlow 旨在大幅进步功率,让上述功用完成所花费的时刻进一步缩短到能以日计,乃至以小时计的程度。

要到达这样的功率,必须有一种功率极高的描绘作业目的的方法。SQL 是一种典型的描绘目的,而不描绘进程的编程言语。用户可以说我要 join 两个表,可是不需求写循环和结构 hash map 来描绘怎么 join 两个表。这个特性使得 SQL 能极大地进步开发功率,这正是 SQLFlow 挑选扩展 SQL 语法支撑 AI 这条思路的原因。

不过,高功率的背面是更大的工程技能应战。SQLFlow 需求做到能依据用户的目的,主动生成到达目的的 Py你是风儿我是沙,重磅!蚂蚁金服开源机器学习东西SQLFlow,技能架构独家解读,西游记好词好句thon、C++、Go 言语的程序。

规划方针

在衔接 SQL 和 AI 运用这一方向上,业界已有相关作业。开发者可以运用像 DOT_PRODUCT 这样的运算符在 SQL 中编灵珠奇缘写简略的机器学习猜测(或评分)算法。可是,从练习程序到 SQL 句子需求进行许多的模型参数复制粘贴的作业。现在在一些商业软件中,现已有部分专有 SQL 引擎供给了支撑机器学习功用的扩展。

但上述已有的处理方案都无法处理蚂蚁金服团队的痛点,他们的方针是打造一个彻底可扩展的处理方案。

应对上述应战的关键在于打造一套 SQL 扩展语法。研制团队首要从仅支撑 MySQL 和 TensorFlow 的原型开发开端,后续方案支撑更多 SQL 引擎和机器学习工具包。

从 SQL 到机器学习

SQLFlow 可以看作一个翻译器,它把扩展语法的 SQL 程序翻译成一个被称为 submitter 的程序,然后履行。 SQLFlow 供给一个笼统层,把各种 SQL 引擎笼统成相同的。SQLFlow 还供给一个可扩展的机制,使得我们可以刺进各种翻译机制,得到依据不同 AI 引擎的 submitter 程序。

SQLFlow 对 SQL 语法的扩展目的很简略:在 SELECT 句子后边,加上一个扩展语法的 TRAIN 从句,即可完成 AI 模型的练习。或许加上一个 PREDICT 从句即可完成用现有模型做猜测。这样的规划大大简化了数据剖析师的学习途径。

此外,SQLFlow 也供给一些基本功用,可以供各种 submitter 翻译插件运用,用来依据数据的特色,推导怎么主动地把数据转化成 features。这样用户就不需求在 TRAIN 从句里描绘这个转化。

以上这些规划目的在 SQLFlow 的开源代码中都有表现。当然,SQLFlow 开发时刻还比较短,依然存在许多做的不行详尽的当地。蚂蚁金服将其开源的另一个目的,便是期望可以和各个 SQL 引擎团队和各个 AI 团队一同打造这座横跨数据和 AI 的桥梁。

依据 Go 言语开发

据介绍,SQLFlow 依据 Go 言语开发,Go 语你是风儿我是沙,重磅!蚂蚁金服开源机器学习东西SQLFlow,技能架构独家解读,西游记好词好句言的许多长处使其成为了 SQLFlow 研制团队的首选。除了 Go 社区评论较多的优势以外,以下两点被要点提及:

首要 Go 简略学习却具有极高的开发功率。它的 k特二式内火艇eyword 数量比 C 言语还要少,可是描绘才干(均匀每一行代码能表明的目的)挨近 Python。

另一个原因是 Go 的代码库易于长期保护。一项工效果 Python 或许 C++ 来写,会有许多种写法,都能跑。用 Go 来写,往往只要一种写法。你是风儿我是沙,重磅!蚂蚁金服开源机器学习东西SQLFlow,技能架构独家解读,西游记好词好句这就使得 Go 程序员社区里不会有许多风格共存,也就不需求 Google C++ style 这样的代码规范来约束不许用 C++ 的哪些特性,也不会像 Python 代码开发时那样,各种代码风格之间构成轻视链,在 code review 进程里带来不必要的争论。

与阿里 PAI 的联系

SQLFlow 研制团队以为,AI 和机器学习的生态可以分游友链为许多层。其间 TensorFlow、PyTorch、XGBoost、LibLinear 这些体系坐落最底层,间隔终端用户最远,只要很硬核的用户才干熟练掌握和运用,而这部分用户在互联网从业者里占的份额较小。

SQLFlow 和阿里推出的机器学习渠道 PAI 均坐落生态的最顶层,需求调用基层的技能栈,二者均直接面临最终用户,而这些用户中或许有许多并不具有 AI 布景常识。

PAI 体系经过先进的图形用户界面来处理 AI 难了解、难运用的应战——比方托拽根底 AI 组件来结构杂乱的模型和数据流。

SQLFlow 则经过写 SQL 程序的方法来完成这一方针。有能写下来的程序,就简略存档,简略 Code Review,简略共享常识,简略群策群力,简略高功率迭代。此外,敲键盘写程序比动鼠标拖拽快。

SQLFlow 项目负责人表明,SQLFlow 和 PAI 都是有意思且有含义的测验,二者的开展都值得继续调查。

SQLFlow 现在依靠无双鬼才呼唤体系 TensorFlow 等底层引擎来完成练习和猜测。为了进步 SQLFlow 在机器学习模型的练习和猜测功用,蚂蚁金服有一个团队专门做硬件加速 AI 核算的作业,最近现已有了一些令人惊喜的成果,期望在不久的将来可以和我们共享细节。别的还有一个兄弟项目专门保护蚂蚁金服对 TensorFlow 的功用扩展,也和功用相关。

SQLFlow 项目负责人表明,练习和猜测仅仅整个 AI 产品功用长长的链条中的两个环节。SQLFlow 这个项目是为处理整个链条构建而打造的,其间有许多环节的耗时比 AI 的练习和猜测多得多,因而还有极大的功用进步的空间。比方许多 SQL 引擎并不支撑让一个分布式 AI 程序并发读取其间的数据,假如 SQLFlow 可以处理相似的吞吐量约束,AI 的整体功率能进步数倍乃至数十倍。

在对机器学习算法的支撑方面,SQLFlow 规划的初衷便是要复用各个 AI 引擎各自的模型库。现在 SQLFlow 支撑 TensorFlow Estimator 规范的模型。比方 SQLFlow 扩展语法中 SELECT ... TRAIN DNNClassifier ... 这个写法你是风儿我是沙,重磅!蚂蚁金服开源机器学习东西SQLFlow,技能架构独家解读,西游记好词好句,DNNClassifier 便是一个 Python class 的名,在这个比方中是一个派生自 tf.Estimator 的 class。SQLFlow 研制团队也正在做支撑 Keras 模型的相关作业,团队也在考虑规范 XGBoost 模型的程although序写作,使其可以被 SQLFlow 用户方便地调用。

这些作业背面的思路是期望互联网职业常见的三类技能人物:剖析师、研究员、工程师的分工更明晰,从而能更专心发挥各自专长:剖析师因为了解数据所以写 SQL,调用 DNNClassifier 这样由研究员用 Python 写的模型;研究员不必操心分布式核算和模型到底是怎么被分布式练习(或猜测)的,这部分作业留给工程师。与此同时,SQLFlow 作为一种粘合剂,把这三类人物的产出有机结合,以便愈加高效地结构产品。

SQLFlow 当时现已可以带来研制功率的进步,但尚不完美,现在 SQLFlow 还存在以下问题有待处理:

第一个问题是 parsing。SQLFlow 现在现已对接 MySQL,正在对接 Hive 和 阿里云上的 MaxCompute,将来还期望能对接更多公司正在运用的 SQL 引擎。这些引擎的 SQL 语法大都契合 SQL 规范,可是总有一些自己一起的扩展,而用户往往不知不觉地用到了这些特色。SQLFlow 期望用户能在已有的 SELECT 句子之后,经过简略地增加一个 TRAIN 或许 PREDICT 从句,即可完成数据和 AI 的互联,这就要求 SQLFlow 支撑各个 SQL 引擎独特的语法特色。

第二个问题是数据到 feature 的映射的主动化。现在 SQLFlow 是依据 SQL 字段的类型(INT、FLOAT、TEXT、BLOB)来主动化映射到 feature column API,比方 numeric_column 或许 categorical_column_with_vocabulary 或许 bucketized_column。其实许多 TEXT 字段里存储的信息很杂乱,或许是一个 yaml 或许 json,所以需求扫描(至少一部分)数据,才干精准地判别这个映射。相似的,一个 BLOB 字段里或许是 protobuf message 的 encoding,encode 的是一个 TensorFlow 的 tensor。

第三个问题是 AI 引擎。 TensorFlow、PyTorch、XGBoost、LibLinear 柏子养心丸这些 AI 引擎的分布式核算才干都有一些问题。Tensor天庭废物收回大王Flow 原生支撑分布式练习,但不支撑容错,一个进程挂了,整个作业就挂了。尽管这还可以经过 checkpointing 处理,可是不容错就不能弹性调度,不能弹性调度就意味着集群利用率或许极差。比方一个有 N 个 GPU 的集群上在运转一个作业,运用了一个 GPU;此刻一个新提交的作业要求运用 N 个 GPU,因为闲暇 GPU 个数是 N-1,所以这个新的作业不能开端履行,而是得一向等数小时乃至数天,直到前一个作业完毕、开释那个被占用的 GPU。这么长时刻里,集群利用率< 1/N。关于这个问题的处理方案,百度 PaddleEDL(https://kubernetes.io/blog/2017/12/paddle-paddle-fluid-elastic-learning/)和阿里集团的 XD邵逸夫L冰灯玉露(https://gith一醉经年ub.com/alibaba/x-deeplearning/)做了一些很有利的探究。期望业界把过火集中于 AI 运转时刻优化的眼光,分一部分到削减等待时刻上。

接下来蚂蚁金服将致力于推进 SQLFlow 甲米在蚂蚁金服事务和蚂蚁金服以外的公司的运用,让 SQLFlow 项目成为整个社区的一起作业,从中收成更多的反应,引导项目的开展方向,也协助清晰各项作业的优先级。

令 SQLFlow 团队感到欢喜的是,尽管 SQLFlow 刚开源,但现在现已有来自美国和我国几大互联网公司的奉献者参加到社区作业中来。因为每个公司运用的 SQL 引擎不同,假如 SQLFlow 中心团队能供给比较好的数据层笼统,那么来自不同公司的奉献者就能比较简略地把 SQLFlow 适配到自己公司的引擎上。相似的,支撑多种 AI 引擎的方法也是如此。

此外,SQLFlow 团队期望各个公司的研究员们可以参加到开源项目中来,共享各自的模型,未来 SQLFlow 会支撑各种形式的模型,以便剖析师运用。

曩昔这几年,蚂蚁金服一向积极参加开源社区共建,自 2011 年宣告第一波开源项目以来,开源项目数量每年皆有增加。现在蚂蚁金服已有 30 多个开源项目,其间,Ant Design项目已获三万多 Star,有 600 多人参加项目吉加页建造,EggJS 和 SOFA 系列也成为了社区抢手。

在 SQLFlow 的 GitHub 项目中,蚂蚁金服供给了 SQLFlow 的装置指引以及快速入门的示例,对此项目感兴趣的开发者不妨一试。也欢迎留言反应你对 SQLFlow 项目的建议和运用感触。

再次附上 SQLFlow 开源项目链接:https://sqlflow.org/sqlflo

声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间服务。