Home
Login

Un compilateur qui combine SQL et IA, étendant la syntaxe SQL pour prendre en charge la formation, la prédiction et l'évaluation des modèles d'apprentissage automatique.

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

Présentation détaillée du projet SQLFlow

Aperçu du projet

SQLFlow est un compilateur qui transforme des programmes SQL en workflows exécutés sur Kubernetes. Il étend la syntaxe SQL pour prendre en charge les tâches d'IA, notamment l'entraînement, la prédiction, l'évaluation de modèles, l'interprétation de modèles, les tâches personnalisées et la planification mathématique.

Adresse du projet: https://github.com/sql-machine-learning/sqlflow

Caractéristiques principales

1. Combinaison parfaite de SQL et d'IA

SQLFlow résout les problèmes rencontrés dans le développement traditionnel du machine learning :

  • Le développement d'applications ML traditionnelles nécessite plusieurs rôles, tels que des ingénieurs de données, des data scientists et des analystes commerciaux.
  • Il est nécessaire de maîtriser plusieurs langages de programmation tels que Python, SQL, SAS, Julia et R.
  • La fragmentation des outils et des environnements de développement entraîne des difficultés d'ingénierie.

SQLFlow permet aux ingénieurs ayant des compétences en SQL de développer des applications ML avancées.

2. Compatibilité étendue

Systèmes de bases de données pris en charge:

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

Frameworks de machine learning pris en charge:

  • TensorFlow
  • Keras
  • XGBoost

3. Syntaxe SQL étendue

SQLFlow étend la syntaxe SQL standard en ajoutant des mots-clés et des instructions liés au machine learning, permettant aux utilisateurs d'effectuer directement en SQL :

  • L'entraînement de modèles (TO TRAIN)
  • La prédiction de modèles (TO PREDICT)
  • L'évaluation de modèles
  • L'ingénierie des caractéristiques (feature engineering)

Exemples d'utilisation

Exemple d'entraînement de modèle

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;

Exemple de prédiction de modèle

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

Conception de l'architecture

L'architecture globale de SQLFlow présente les caractéristiques suivantes :

1. Extensibilité

  • Prend en charge plusieurs moteurs SQL, au lieu d'être spécifique à un seul.
  • Ne repose pas sur des fonctions définies par l'utilisateur (UDF) pour l'extension de la syntaxe.
  • Prend en charge des modèles et des boîtes à outils de machine learning complexes.

2. Flexibilité et facilité d'utilisation

  • Assez flexible pour configurer et exécuter des algorithmes de pointe.
  • Prend en charge des fonctionnalités avancées telles que les croisements de caractéristiques (feature crosses).
  • Facile à apprendre, réduisant la barrière à l'entrée.

3. Exécution distribuée

La sortie est un workflow Argo exécuté de manière distribuée sur un cluster Kubernetes, garantissant :

  • Une haute disponibilité
  • Une capacité de mise à l'échelle horizontale
  • Une prise en charge du déploiement en entreprise

Avantages techniques

1. Différences par rapport aux solutions existantes

Microsoft SQL Server: Fournit des services de machine learning, mais nécessite R ou Python comme scripts externes.

Teradata SQL for DL: Fournit un service RESTful, qui peut être appelé à partir d'une syntaxe SQL SELECT étendue.

Google BigQuery: Active le machine learning en SQL via l'instruction CREATE MODEL.

L'avantage de SQLFlow réside dans :

  • Une solution entièrement extensible
  • Compatible avec plusieurs moteurs SQL
  • Prend en charge des modèles de machine learning complexes
  • Pas besoin d'intégrer du code Python ou R dans les instructions SQL

2. Intégration du workflow

  • Compile les programmes SQL en workflows Kubernetes
  • Prend en charge l'orchestration de workflow Argo
  • Conception d'architecture cloud native

Communauté et écosystème

Soutien académique

Écosystème open source

SQLFlow possède un écosystème open source complet :

  • Projet principal : sql-machine-learning/sqlflow
  • Client Python : sql-machine-learning/pysqlflow
  • Intégration Zeppelin : sql-machine-learning/zeppelin-sqlflow
  • Site officiel : sql-machine-learning.github.io

Scénarios d'application

SQLFlow est particulièrement adapté aux scénarios suivants :

  • Les équipes d'analyse de données d'entreprise souhaitent réduire la barrière à l'entrée du développement ML.
  • Les scénarios commerciaux nécessitent d'effectuer du machine learning directement dans les requêtes SQL.
  • Les organisations souhaitent unifier les workflows de traitement des données et de machine learning.
  • Les entreprises ont besoin de solutions ML évolutives et cloud natives.

Conclusion

SQLFlow, en combinant parfaitement SQL et IA, offre aux professionnels des données une plateforme de machine learning puissante et facile à utiliser. Il réduit non seulement la barrière à l'entrée du machine learning, mais assure également une évolutivité et une fiabilité de niveau entreprise grâce à une architecture cloud native. Pour les organisations qui souhaitent intégrer de manière transparente les capacités de machine learning dans leurs workflows de données, SQLFlow est un choix idéal.