螞蟻金服開源機器學習工具SQLFlow,機器學習比SQL還簡單

來自:開源最前線(ID:OpenSourceTop)git

綜合自:AI前線、https://github.com/sql-machine-learning/sqlflowgithub

 

5月6日,螞蟻金服副 CTO 胡喜正式宣佈開源機器學習工具 SQLFlow:「將來三年,AI 能力會成爲每一位技術人員的基本能力。咱們但願經過開源 SQLFlow,下降人工智能應用的技術門檻,讓技術人員調用 AI 像 SQL 同樣簡單。」sql

 

 

目前,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 引擎的 submitter 程序。人工智能

 

 

SQLFlow 對 SQL 語法的擴展意圖很簡單:在 SELECT 語句後面,加上一個擴展語法的 TRAIN 從句,便可實現 AI 模型的訓練。或者加上一個 PREDICT 從句便可實現用現有模型作預測。這樣的設計大大簡化了數據分析師的學習路徑。spa

 

此外,SQLFlow 也提供一些基本功能,能夠供各類 submitter 翻譯插件使用,用來根據數據的特色,推導如何自動地把數據轉換成 features。這樣用戶就不須要在 TRAIN 從句裏描述這個轉換。插件

 

 

以上這些設計意圖在 SQLFlow 的開源代碼中都有體現。固然,SQLFlow 開發時間還比較短,仍然存在不少作的不夠細緻的地方。螞蟻金服將其開源的另外一個目的,就是但願可以和各個 SQL 引擎團隊和各個 AI 團隊一塊兒打造這座橫跨數據和 AI 的橋樑。翻譯

 

如下是使用樣本數據Iris.train 訓練Tensorflow DNNClassifer模型,並使用訓練模型運行預測的示例。你能夠看到使用SQL編寫一些優雅的ML代碼有多酷:

 

sqlflow> SELECT *
FROM iris.train
TRAIN DNNClassifier
WITH n_classes = 3, 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
PREDICT iris.predict.class
USING sqlflow_models.my_dnn_model;

...
Done predicting. Predict table : iris.predict
...
Training set accuracy: 0.96721
Done training
相關文章
相關標籤/搜索