5月6日,蚂蚁金服副CTO胡玺正式对外宣布开源机器学习工具SQLFlow:“未来三年,AI能力将成为技术人员的基础能力。我们希望通过开源的SQLFlow,降低人工智能应用的技术门槛,让技术人员可以像调用SQL一样轻松调用AI。”目前,SQLFlow在GitHub上获得了1636个Star和236个Fork。(GitHub地址:https://github.com/sql-machine-learning/sqlflow)SQLFlow的目标是连接SQL引擎和AI引擎,让用户只用几句话就可以描述整个应用或产品背后SQL代码行。数据流和AI构造。涉及的SQL引擎包括MySQL、Oracle、Hive、SparkSQL、Flink等支持用SQL或其变体语言描述数据,以及描述对数据的操作的系统。这里所指的AI引擎,既包括TensorFlow、PyTorch等深度学习系统,也包括XGBoost、LibLinear、LibSVM等传统机器学习系统。从SQL到机器学习SQLFlow可以看作是一个翻译器,它将扩展语法的SQL程序翻译成一个叫做submitter的程序,然后执行它。SQLFlow提供了一个抽象层,将各种SQL引擎抽象为一个。SQLFlow还提供了一个可扩展的机制,让你可以插入各种翻译机制来得到基于不同AI引擎的提交程序。SQLFlow扩展SQL语法的意图很简单:在SELECT语句之后,添加一个扩展语法的TRAIN子句,实现AI模型的训练。或者添加PREDICT子句以使用现有模型进行预测。这种设计大大简化了数据分析师的学习路径。此外,SQLFlow还提供了一些基本功能,可供各种提交者翻译插件使用,根据数据的特点,推导出如何将数据自动转换为特征。这样用户就不需要在TRAIN子句中描述转换。这些设计意图都体现在SQLFlow的开源代码中。当然,SQLFlow的开发时间还比较短,还有很多地方不够详细。蚂蚁金服开源的另一个目的是与各个SQL引擎团队和各个AI团队合作,搭建数据和AI之间的桥梁。以下是使用示例数据Iris.train训练TensorflowDNNClassifer模型并使用训练后的模型运行预测的示例。您可以看到使用SQL编写一些优雅的ML代码是多么酷:sqlflow>SELECT*FROMiris.trainTRAINDNNClassifierWITHn_classes=3,hidden_??units=[10,20]COLUMNsepal_length,sepal_width,petal_length,petal_widthLABELclassINTOsqlflow_models.myraining_dnn_model;...67fsql1Docuracy:0>SELECT*FROMMiris.testPREDICTiris.predict.classUSINGsqlflow_models.my_dnn_model;...Donepredicting.Predicttable:iris.predict...Trainingsetaccuracy:0.96721Donetraining
