Home
Login

Um compilador que combina SQL com IA, estendendo a sintaxe SQL para suportar treinamento, previsão e avaliação de modelos de aprendizado de máquina.

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

Detalhes do Projeto SQLFlow

Visão Geral do Projeto

SQLFlow é um compilador que transforma programas SQL em fluxos de trabalho executados no Kubernetes. Ele estende a sintaxe SQL para suportar tarefas de IA, incluindo treinamento, previsão, avaliação de modelos, explicação de modelos, trabalhos personalizados e planejamento matemático.

Endereço do Projeto: https://github.com/sql-machine-learning/sqlflow

Principais Características

1. Combinação Perfeita de SQL e IA

SQLFlow resolve os problemas da programação tradicional de machine learning:

  • O desenvolvimento tradicional de aplicações de ML requer múltiplos papéis, como engenheiros de dados, cientistas de dados e analistas de negócios.
  • Requer o domínio de várias linguagens de programação, como Python, SQL, SAS, Julia e R.
  • A fragmentação de ferramentas e ambientes de desenvolvimento traz dificuldades de engenharia.

SQLFlow permite que engenheiros com habilidades em SQL desenvolvam aplicações de ML avançadas.

2. Ampla Compatibilidade

Sistemas de Banco de Dados Suportados:

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

Frameworks de Machine Learning Suportados:

  • TensorFlow
  • Keras
  • XGBoost

3. Sintaxe SQL Estendida

SQLFlow estende a sintaxe SQL padrão, adicionando palavras-chave e declarações relacionadas ao machine learning, permitindo que os usuários realizem diretamente em SQL:

  • Treinamento de modelo (TO TRAIN)
  • Previsão de modelo (TO PREDICT)
  • Avaliação de modelo
  • Engenharia de recursos

Exemplos de Uso

Exemplo de Treinamento de Modelo

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;

Exemplo de Previsão de Modelo

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

Design da Arquitetura

A arquitetura geral do SQLFlow tem as seguintes características:

1. Escalabilidade

  • Suporta vários mecanismos SQL, em vez de ser direcionado a um mecanismo SQL específico.
  • Não se baseia em funções definidas pelo usuário (UDF) para construir extensões de sintaxe.
  • Suporta modelos e kits de ferramentas complexos de machine learning.

2. Flexibilidade e Facilidade de Uso

  • Suficientemente flexível para configurar e executar algoritmos de ponta.
  • Suporta recursos avançados, como cruzamentos de recursos (feature crosses).
  • Fácil de aprender, reduzindo a barreira de entrada.

3. Execução Distribuída

A saída é um fluxo de trabalho Argo executado de forma distribuída em um cluster Kubernetes, garantindo:

  • Alta disponibilidade
  • Capacidade de escalonamento horizontal
  • Suporte para implantações de nível empresarial

Vantagens Técnicas

1. Diferenças em Relação às Soluções Existentes

Microsoft SQL Server: Fornece serviços de machine learning, mas requer R ou Python como scripts externos.

Teradata SQL for DL: Fornece serviços RESTful que podem ser chamados a partir da sintaxe SQL SELECT estendida.

Google BigQuery: Habilita o machine learning em SQL através da declaração CREATE MODEL.

A vantagem do SQLFlow é:

  • Uma solução totalmente escalável
  • Compatível com vários mecanismos SQL
  • Suporta modelos complexos de machine learning
  • Não requer a incorporação de código Python ou R em declarações SQL

2. Integração de Fluxo de Trabalho

  • Compila programas SQL em fluxos de trabalho Kubernetes
  • Suporta orquestração de fluxo de trabalho Argo
  • Design de arquitetura nativa da nuvem

Comunidade e Ecossistema

Suporte Acadêmico

Ecossistema de Código Aberto

SQLFlow possui um ecossistema de código aberto completo:

  • Projeto principal: sql-machine-learning/sqlflow
  • Cliente Python: sql-machine-learning/pysqlflow
  • Integração com Zeppelin: sql-machine-learning/zeppelin-sqlflow
  • Site oficial: sql-machine-learning.github.io

Cenários de Aplicação

SQLFlow é particularmente adequado para os seguintes cenários:

  • Equipes de análise de dados corporativas que desejam reduzir a barreira de entrada para o desenvolvimento de ML
  • Cenários de negócios que exigem machine learning diretamente em consultas SQL
  • Organizações que desejam unificar o processamento de dados e os fluxos de trabalho de machine learning
  • Empresas que precisam de soluções de ML escaláveis e nativas da nuvem

Resumo

SQLFlow, ao combinar perfeitamente SQL e IA, fornece uma plataforma de machine learning poderosa e fácil de usar para profissionais de dados. Ele não apenas reduz a barreira de entrada para o uso de machine learning, mas também garante escalabilidade e confiabilidade de nível empresarial por meio de uma arquitetura nativa da nuvem. Para organizações que desejam integrar perfeitamente os recursos de machine learning em seus fluxos de trabalho de dados, o SQLFlow é uma escolha ideal.