SQLFlow|让AI造福金融,支付宝端到端AI系统SQLFlow实践( 三 )
文章图片
在模型训练完成之后 , 我们可以使用下面的 SQL语句进行预测:
SELECT * FROM iris.pred
TO PREDICT iris.pred_result.class
USING my_dnn_model;我们使用的预测表 iris.pred 的 class 列是空的 , 是希望输出的结果 。 SQL 语句中 TO PREDICT iris.pred_result.class 指定预测结果输出到表 iris.pred_result 的 class 列 。 USING my_dnn_model 指定使用之前训练的 my_dnn_model 这个模型来预测新的数据 , 这样 SQLFlow 将预测的结果输出到表:iris.pred_result 的 class 列 。
有时 , 我们希望进一步地了解模型 , 模型究竟是怎么通过输入得到输出 , 就需要「解释」训练好的模型 , 看到底哪些输入会如何影响模型的输出 。 SQLFlow深度集成了SHAP和Tensorflow的模型解释功能 , 只需要编写如下的SQL语句:
SELECT * FROM iris.test TO EXPLAIN my_dnn_model;在使用 Jupyter Notebook 的情况下可以输出下面的模型解释结果的图 。 从图中可以看到 , 输入数据中的特征 petal_length 对模型判断鸢尾花的类别起到至关重要的帮助 。
文章图片
SQLFlow目前提供了充足的常用模型库 , 使得我们可以快速使用 SQL 语句实验、验证最终构建 AI Pipeline 。 目前已经支持的模型包括深度学习常用的网络包括 DNN, RNN, LSTM 的分类、回归 , 基于XGBoost的树模型的分类回归以及 Deep Embedding Clustring , kmeans聚类模型 , 还有常见的金融行业模型包括评分卡模型 , ARIMA, STL时间序列模型等 。
使用SQL程序构建端到端AI工作流 SQLFlow 不仅可以使用SQL语句完成 AI 应用中的模型训练 , 评估 , 预测 , 解释等单个任务 , 还可以将一整个SQL 程序(包含许多SQL语句的一个SQL程序)编译成为一个完整的工作流任务执行 。 在之前列出的「构建AI应用的常见流程」中 , SQLFlow已经支持和计划支持的步骤标注在了图中 。
文章图片
其中绿色标注的是目前 SQLFlow 已经支持的 。 SQLFlow 可以支持多种 SQL 引擎的方言 , 包括MySQL, Hive, MaxCompute , 并在逐步扩展 。 不论 SQLFlow 对接的是哪种数据库引擎 , 只要是当前对接的数据库支持的 SQL 语句 , 都可以被SQLFlow识别并发送至对应引擎执行 , 以此来支持使用SQL语言完成的数据抽取、预处理的工作 。 SQLFlow还计划使用 TO RUN 关键字来拓展自定义数据预处理、特征工程的能力 。 SQLFlow在训练时可以支持可选的 COLUMN 从句 , 将支持多种常见的数据转换的操作 , 比如归一化、随机化、Embedding、分桶等 。 另外 , SQLFlow 也计划支持可以直接将训练好的模型部署到在线 Serving 的系统 。
这样 , 我们可以编写一大段 SQL 语句 , 完全交给SQLFlow 编译和执行 。 包括使用JOIN操作的SQL语句 , 从各个表抽取需要的数据 , 使用标准SQL完成预处理或者使用自定义函数完成预处理 , 最后开始训练和预测的 SQL 语句 。
文章图片
对于这样的一个包含许多语句的 SQL 程序 , SQLFlow 会将其解析 , 编译成一个可以在Kubernetes + Argo集群上运行的 workflow 。 workflow 中每一个步骤(step)可以是执行标准的 SQL , 也可以是执行分布式模型训练或预测任务 。 这个Workflow 会被提交到 Kubernetes 集群上 , 交由Argo Workflow Engine调度执行 。 这个workflow的执行结果会从Kubernetes集群返回到用户 。
通常情况 , 使用SQL语句编写的一个SQL程序 , 会被编译成一个顺序的 workflow , step by step 地执行 。 但有些 SQL 语句的 step 不是相互依赖的 , 可以并发地执行 。 如果我们使用如Hive 这样的引擎 , 同时提交两个 SQL 语句 , 其实是可以生成2个 Map-Reduce 任务并发的在集群上执行的 。 SQLFlow 会自动的分析 SQL 程序中的 SQL 语句之间的依赖关系 , 并尽量的增大SQL程序的并发度 , 生成一个具有依赖关系 workflow 执行 , 最大限度的利用集群资源 , 降低整段 SQL程序的执行时间 。 这个功能 , 省去了很多传统平台上 , 用户需要手动的构建任务和任务之间依赖关系的工作 , 因为所有的任务都可以用 SQL 语言描述 , 计算的依赖图自然可以自动生成 。
文章图片
使用 SQLFlow Model Zoo 沉淀模型 在构建AI应用时 , 另一个关键的任务就是需要编写模型定义的代码 。 SQLFlow 社区提供了 Model Zoo 框架 , 方便模型开发的同学不断的沉淀应用场景为通用的模型 , 并贡献到私有或公有的模型库 , 减少业务和开发之间的沟通成本 。
推荐阅读
- 717|这个717你任性了吗?盘点苏宁金融带给你的精彩一夏
- 金融机构|青岛市金融机构贷款利率持续创新低上半年为企业让利27.6亿元
- 数据|金融科技时代:品高全栈云的国产化演进
- 链博科技|链博科技:博链信融XFin助力中小企业供应链金融
- 27.6|青岛市金融机构贷款利率持续创新低 上半年为企业让利27.6亿元
- 山西金融系统4名干部接受纪律审查和监察调查
- 时政|山西省地方金融监督管理局原局长竟晖被查
- 云南|云南信托以蚂蚁区块链加持供应链金融服务
- 福建泉州丰泽:联合银行打击假币 护航金融秩序安全
- |小米金融上线深圳通互联互通卡 助力鹏城市民便捷出行