1. 程式人生 > >螞蟻金服開源機器學習工具SQLFlow,機器學習比SQL還簡單

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

red 樣本 抽象 sub mysq 系統 tps hid 源代碼

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

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

5月6日,螞蟻金服副 CTO 胡喜正式宣布開源機器學習工具 SQLFlow:“未來三年,AI 能力會成為每一位技術人員的基本能力。我們希望通過開源 SQLFlow,降低人工智能應用的技術門檻,讓技術人員調用 AI 像 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 從句即可實現用現有模型做預測。這樣的設計大大簡化了數據分析師的學習路徑。

此外,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

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