白天没事儿刷微博,偶然看到了这个消息
会SQL就能搞AI?这么溜吗
前几年一窝蜂的到处都是大数据,然后大家都去搞大数据;
这几年一窝蜂的到处都是数据分析,然后大家都去搞数据分析,人人都是数据分析师;
今天一窝蜂的到处都是人工智能,然后大家都来搞AI。
目前搞AI的同学其实并没有太深的技术,无非就是了解一下算法是干啥的,在什么场景下使用,然后用Python、R之类的各种东西调几个包(这是说有这种情况哦),主要还是应用,真正可以去写算法的还是少数。毕竟偏工程类,让很多人去使用还是有一定难度的,所以为了让更多的人可以使用AI,就会出现很多面向用户的技术产品,比如这个SQLFlow。
还得是大厂啊,可以搞这些真正有价值有应用场景的产品。
先上一下,原文地址:会 SQL 就能搞定 AI!蚂蚁金服重磅开源机器学习工具 SQLFlow
目前来说,SQL的确是很通用的语言,学起来简单,掌握的人群也广,你看,在大数据下面有Hive,类SQL的语法,会SQL,上手很容易,现在人工智能,也有这种SQL的标配产品出现了。
当一项技术去面向应用场景的使用,需要上手简单,降低学习成本那样去了解的人才会多。
总结下来一句话,就是以后什么预测,什么聚类,什么各种东东,使用SQL去调用就行了,好玩儿吧,下面我们就简单来看看这个产品吧,已经开源了,我们试试。
项目GitHub地址:https://github.com/sql-machine-learning/sqlflow
项目官网:https://sql-machine-learning.github.io/
我们先看看咋安装吧,官网上有安装手册,来学习下。
这第一步就然我很是捉急,“on your MacBook”,我低头看了眼自己的Windows,陷入了沉思。
Docker这东西,以前有了解过,就是容器,像轻量级的虚拟机,现在应用很广,不知道现在咋样了,多年以前研究的时候,了解了很多的。没有Mac,Windows上也可以安装docker,按道理说应该是一样的,试试吧。
- Windows版docker下载地址:docker-17.06.0-ce.zip
下载完成后是这个东东
解压后是俩EXE文件
本来以为是直接运行的, 但是不行,
那就开个cmd来执行吧,......不对,大意了,这两个是封装好的docker命令,
这个可以加入到Path,然后直接使用,这里先省略了吧,先去第二步看看。
- 构建mysql镜像
这一步说是使用docker构建一个mysql server,我犹豫了好一会儿,这里没说怎么去构建呀,docker咋用的早就忘了,我认真思考了一下,仿佛有点儿理解了。
我先clone了这个sqlflow项目下来
然后在 example/datasets 路径下有个这个文件
这个Dockerfile文件,是构建镜像的配置文件,......
坑了,
这个问题,我在网上找了,Windows10家庭版不行,得用专业版或者企业版,难道搞一个虚拟机?
。。。。。。
额,好像成功了,docker可以了。
docker的话,不能使用上面的那个,得重新搞一个docker toolbox
https://docs.docker.com/toolbox/overview/
由于windows系统的限制,所以这个东东就是搞了个虚拟机,反正是集成安装的,就下载个toolbox吧,
200多M,下载一路安装就行,然后,在桌面上找快捷图标进入。
这时候,它会先进行初始化,会安装些东西,得等等。
等它自己出现这个鲸鱼的图形,就差不多了,可以试试 docker --version看看docker命令能用不,然后试试hello-world,看看是否能用
好了,我们可以回去,继续SQLflow了。
这一步,是要构建mysql镜像的,按照文档里的介绍,执行
cd example/datasets
docker build -t sqlflow:data .
它要下载好些东西,等下它
虽然有个warning,但是应该没影响
docker run --rm -d --name sqlflowdata \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_ROOT_HOST=% \
sqlflow:data
这是用docker启动了刚刚搞好的mysql镜像,并且设置了一些参数
这里返回的好像是docker实例的一个id,忘记了,继续就行
docker exec -it sqlflowdata bash
这个是连接到了刚刚的docker实例,使用bash,后面和linux下差不多
开始初始化数据
cat /popularize_churn.sql | mysql -uroot -proot
cat /popularize_iris.sql | mysql -uroot -proot
echo "CREATE DATABASE IF NOT EXISTS sqlflow_models;" | mysql -uroot -proot
echo "select count(*) from churn.test;" | mysql -uroot -proot
如果上面都没有报错,到了这一步,就算是初始化成功了,哈哈哈。
完整步骤参考:example/datasets/README.md
- pull SQLflow
好了,到了激动人心的最后一步,我们需要再pull一个镜像下来。
docker pull sqlflow/sqlflow:latest
这里重试了好几次,最终成功了。
好了,我们可以试用下了。
先把下载好的SQLflow镜像启动
docker run --rm -it -p 8888:8888 sqlflow/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"
。这一步,纠结了好久,它就是启动了SQLflow,然后连接了上面的数据库,然后启动了jupyter。
但是吧,在Windows下面,这东西不好用啊,一个是网络问题,我根本连不到docker生成的实例里,没法实践,还有一个,它连不上数据库。
...
算了,我还是先搞个虚拟机吧,我找个ubuntu。
我记得前几年玩儿Ubuntu的时候,还是版本10左右,常用的12LTS,没想到现在都18了,好快呀。
坑死了,虽说是闲着没事儿,但是这一天,累死我了,各种坑,各种连不上,最后,总算是功夫不负苦心人啊,总算是能用了。
中间的心酸故事就不说,简单记录下几个问题:
mysql-server镜像起不来
这个之前在Windows下没有问题,但是在Linux里面,mysql启动失败,看日志说mysqld启动失败,但是我找不到详细日志,就没有用镜像,直接在本机安装了一个mysqlSQLflow启动连接不上数据库
这个主要是数据库配置或者数据库的ip地址问题,这里我直接使用了本机的docker虚拟ip地址
好了,执行了一下示例中的SQL,貌似有点儿卡,看上去很厉害,有些拓展的语法,回头研究下吧。
好了,本次实践到此结束,心好累。