SQLFlow 是一个编译器,可以将 SQL 程序编译成运行在 Kubernetes 上的工作流。输入是用我们扩展的 SQL 语法编写的 SQL 程序,以支持 AI 作业,包括训练、预测、模型评估、模型解释、自定义作业和数学规划。输出是在分布式 Kubernetes 集群上运行的Argo工作流。
SQLFlow 支持各种数据库系统,如 MySQL、MariaDB、TiDB、Hive、MaxCompute和许多机器学习工具包,如TensorFlow、Keras、XGBoost。
适用SQLFlow:https://playground.sqlflow.tech/
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
当前开发基于 ML 的应用程序的经验需要数据工程师、数据科学家、业务分析师团队以及大量高级语言和编程工具,如 Python、SQL、SAS、SASS、Julia、R。工具和开发的碎片化环境给模型训练/调整带来了额外的工程困难。如果我们将使用最广泛的数据管理/处理语言 SQL 与 ML/系统功能结合起来,让具有 SQL 技能的工程师开发基于 ML 的高级应用程序,会怎样?
该行业已经有一些工作正在进行中。我们可以使用诸如 之类的运算符在 SQL 中编写简单的机器学习预测(或评分)算法DOT_PRODUCT
。但是,这需要将训练程序中的模型参数复制粘贴到 SQL 语句中。在商业世界中,我们看到一些专有的 SQL 引擎提供扩展以支持机器学习功能。
CREATE MODEL
语句在 SQL 中启用机器学习。现有的解决方案都没有解决我们的痛点,相反我们希望它是完全可扩展的。
以下是使用示例数据 Iris.train 训练 TensorFlow DNNClassifier模型以及使用训练后的模型运行预测的示例。您可以看到使用 SQL 编写一些优雅的 ML 代码是多么酷:
sqlflow> SELECT *
FROM iris.train
TO TRAIN DNNClassifier
WITH model.n_classes = 3, model.hidden_units = [10, 20]
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO sqlflow_models.my_dnn_model;
...
Training set accuracy: 0.96721
Done training
sqlflow> SELECT *
FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_dnn_model;
...
Done predicting. Predict table : iris.predict
[/hidecontent]