Home
Login

將 SQL 與 AI 相結合的編譯器,擴展 SQL 語法支持機器學習模型訓練、預測和評估

Apache-2.0Go 5.2ksql-machine-learning Last Updated: 2024-04-18

SQLFlow 項目詳細介紹

項目概述

SQLFlow 是一個編譯器,將 SQL 程式編譯成在 Kubernetes 上運行的工作流。它通過擴展 SQL 語法來支持 AI 任務,包括訓練、預測、模型評估、模型解釋、自定義作業和數學規劃。

項目地址: https://github.com/sql-machine-learning/sqlflow

核心特性

1. SQL 與 AI 的完美結合

SQLFlow 解決了傳統機器學習開發中的痛點:

  • 傳統 ML 應用開發需要數據工程師、數據科學家、業務分析師等多個角色
  • 需要掌握 Python、SQL、SAS、Julia、R 等多種編程語言
  • 工具和開發環境的碎片化帶來工程困難

SQLFlow 讓具備 SQL 技能的工程師就能開發高級 ML 應用。

2. 廣泛的兼容性

支持的數據庫系統:

  • MySQL
  • MariaDB
  • TiDB
  • Apache Hive
  • Alibaba MaxCompute

支持的機器學習框架:

  • TensorFlow
  • Keras
  • XGBoost

3. 擴展的 SQL 語法

SQLFlow 擴展了標準 SQL 語法,添加了機器學習相關的關鍵字和語句,使用戶能夠直接在 SQL 中進行:

  • 模型訓練 (TO TRAIN)
  • 模型預測 (TO PREDICT)
  • 模型評估
  • 特徵工程

使用示例

模型訓練示例

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;

模型預測示例

SELECT *
FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_dnn_model;

架構設計

SQLFlow 的整體架構具有以下特點:

1. 可擴展性

  • 支持多種 SQL 引擎,而不是針對特定的 SQL 引擎
  • 不基於用戶定義函數 (UDF) 構建語法擴展
  • 支持複雜的機器學習模型和工具包

2. 靈活性與易用性

  • 足够靈活以配置和運行前沿算法
  • 支持特徵交叉 (feature crosses) 等高級功能
  • 易於學習,降低使用門檻

3. 分佈式執行

輸出是在 Kubernetes 集群上分佈式運行的 Argo 工作流,確保:

  • 高可用性
  • 橫向擴展能力
  • 企業級部署支持

技術優勢

1. 與現有解決方案的區別

Microsoft SQL Server: 提供機器學習服務,但需要 R 或 Python 作為外部腳本

Teradata SQL for DL: 提供 RESTful 服務,可從擴展的 SQL SELECT 語法調用

Google BigQuery: 通過 CREATE MODEL 語句在 SQL 中啟用機器學習

SQLFlow 的優勢在於:

  • 完全可擴展的解決方案
  • 兼容多種 SQL 引擎
  • 支持複雜的機器學習模型
  • 無需在 SQL 語句中嵌入 Python 或 R 代碼

2. 工作流集成

  • 編譯 SQL 程式為 Kubernetes 工作流
  • 支持 Argo 工作流編排
  • 雲原生架構設計

社區與生態

學術支持

開源生態

SQLFlow 擁有完整的開源生態系統:

  • 主項目:sql-machine-learning/sqlflow
  • Python 客戶端:sql-machine-learning/pysqlflow
  • Zeppelin 集成:sql-machine-learning/zeppelin-sqlflow
  • 官方網站:sql-machine-learning.github.io

適用場景

SQLFlow 特別適合以下場景:

  • 企業級數據分析團隊希望降低 ML 開發門檻
  • 需要在 SQL 查詢中直接進行機器學習的業務場景
  • 希望統一數據處理和機器學習工作流的組織
  • 需要可擴展、雲原生 ML 解決方案的企業

總結

SQLFlow 通過將 SQL 與 AI 完美結合,為數據專業人員提供了一個強大而易用的機器學習平台。它不僅降低了機器學習的使用門檻,還通過雲原生架構確保了企業級的可擴展性和可靠性。對於希望在數據工作流中無縫集成機器學習能力的組織來說,SQLFlow 是一個理想的選擇。