一、简介
最近,蚂蚁正式了开源其机器学习工具SQLFlow。SQLFlow=SQL引擎+AI引擎。其抽象出端到端从数据到模型的研发过程,配合底层的引擎及自动优化,让具备基础SQL知识的技术人员,也能轻松完成大部分的人工智能工作,如机器学习、模型训练和预测等。用户仅需几行SQL代码就能描述整个应用或者产品背后的数据流和 AI 构造.SQLFlow通过对基本的SQL语法进行扩展来实现AI功能。如在SELECT语句后面,加上一个扩展语法的 TRAIN 从句,即可实现 AI 模型的训练。或者加上一个 PREDICT 从句即可实现用现有模型做预测。此外,SQLFlow也提供一些基本功能,可以供各种 submitter 翻译插件使用,用来根据数据的特点,推导如何自动地把数据转换成features,这样用户就不需要在 TRAIN 从句里描述这个转换。
问题:目前,SQLFlow还很初级,还存在很多的问题,如语法解析问题,SQLFlow 目前已经对接 MySQL,正在对接 Hive 和阿里云上的MaxCompute,将来还希望能对接更多公司正在使用的 SQL 引擎。SQLFlow目前依赖TensorFlow 等底层引擎来实现训练和预测,但TensorFlow 原生支持分布式训练,但不支持容错,一个进程挂了,整个作业就挂了。而PyTorch、XGBoost、LibLinear 这些 AI 引擎的分布式计算能力也都有一些问题,因此,未来的路还很遥远。
二、整体架构
三、安装教程
步骤:
1.把repo clone到本地
git clonehttps://github.com/sql-machine-learning/sqlflow
2.使用docker启动mysql并导入数据
cd example/datasets
docker build -t sqlflow:data .
build mysql镜像并启动
docker run --rm -d --name sqlflowdata {color}-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_ROOT_HOST=% \sqlflow:data
进去镜像内并按照文档说明导入数据
这样,SQLFlow依赖的mysql环境和数据已经准备完成。
3.启动主程序
docker pull sqlflow/sqlflow:latest
拉取镜像并启动
docker run -rm -it -p8888:8888sqlflow/sqlflow:latest \bash -c"sqlflowserver --datasource='mysql://root:root@tcp(host.docker.internal:3306)/?maxAllowedPacket=0' &SQLFLOW_SERVER=localhost:50051 jupyter notebook ip=0.0.0.0 port=8888-allow-root"
四、使用说明
登陆网址
http://192.168.210.19:8888/tree
token为74a72bf64a32b0b03aaa11aefba7bdbed36c709aadc00808
输入74a72bf64a32b0b03aaa11aefba7bdbed36c709aadc00808
然后输入:
%%sqlflow
select * from iris.train limit 5;