Skip to main content
QUICK REVIEW

[논문 리뷰] SQLFlow: A Bridge between SQL and Machine Learning

Yi Wang, Yang Yang|arXiv (Cornell University)|2020. 01. 19.
Scientific Computing and Data Management참고 문헌 8인용 수 6
한 줄 요약

SQLFlow은 데이터베이스와 머신러닝 시스템을 연결하는 오픈소스 SQL 확장 기능으로, 통합된 SQL 구문을 통해 엔드 투 엔드 머신러닝 워크플로우를 가능하게 합니다. SQL 프로그램은 쿠버네티스 네이티브 워크플로우로 컴파일되며, MySQL, Hive, MaxCompute 등의 다양한 데이터베이스와 TensorFlow, XGBoost, scikit-learn 등의 머신러닝 프레임워크를 지원하며, SHAP 및 커스텀 도구를 통한 모델 해석 기능까지 포함합니다.

ABSTRACT

Industrial AI systems are mostly end-to-end machine learning (ML) workflows. A typical recommendation or business intelligence system includes many online micro-services and offline jobs. We describe SQLFlow for developing such workflows efficiently in SQL. SQL enables developers to write short programs focusing on the purpose (what) and ignoring the procedure (how). Previous database systems extended their SQL dialect to support ML. SQLFlow (https://sqlflow.org/sqlflow ) takes another strategy to work as a bridge over various database systems, including MySQL, Apache Hive, and Alibaba MaxCompute, and ML engines like TensorFlow, XGBoost, and scikit-learn. We extended SQL syntax carefully to make the extension working with various SQL dialects. We implement the extension by inventing a collaborative parsing algorithm. SQLFlow is efficient and expressive to a wide variety of ML techniques -- supervised and unsupervised learning; deep networks and tree models; visual model explanation in addition to training and prediction; data processing and feature extraction in addition to ML. SQLFlow compiles a SQL program into a Kubernetes-native workflow for fault-tolerable execution and on-cloud deployment. Current industrial users include Ant Financial, DiDi, and Alibaba Group.

연구 동기 및 목표

  • 데이터 과학자와 엔지니어가 '어떻게'가 아니라 '무엇을' 하는지에 집중할 수 있도록 SQL로 머신러닝 파이프라인을 표현할 수 있게 해, 엔드 투 엔드 머신러닝 워크플로우 개발을 단순화하는 것.
  • 기존 데이터베이스 기반 SQL 시스템에서의 벤더 락인과 제한된 확장성 문제를 해결하는 것.
  • 통합된 오픈소스 브리지 아키텍처를 통해 이질적인 데이터베이스 및 머신러닝 시스템 간의 상호운용성을 제공하는 것.
  • 쿠버네티스 네이티브 워크플로우를 활용한 확장성 있고 장애 내성 있는 실행 모델을 제공하여 산업용 머신러닝 배포를 가능하게 하는 것.
  • 단일 SQL 인터페이스 내에서 모델 설명, 특징 공학, 지도학습 및 비지도학습을 모두 지원하는 것.

제안 방법

  • SQL 구문을 `TO TRAIN`, `TO PREDICT`, `TO EXPLAIN` 등의 새로운 절로 확장하여 머신러닝 워크플로우를 직접 SQL로 표현하는 방식.
  • 표준 SQL 다이얼ект와 SQLFlow 구문 확장을 통합하는 협업 파싱 알고리즘을 적용하여 호환성을 확보하는 방식.
  • 두 단계 컴파일 모델을 사용하여 SQL 프로그램을 쿠버네티스 네이티브 워크플로우로 컴파일하는 방식: 정적 SQL → Couler 번역, 그 다음 Couler → YAML 워크플로우 생성.
  • 워크플로우를 기술하기 위해 도메인 특화 언어(DSL)로 커스터마이즈된 Python 라이브러리인 Couler를 활용하여 머신러닝 연구자들이 Python에서 워크플로우를 구축하고 디버깅할 수 있도록 하는 방식.
  • Argo 및 Tekton과 같은 워크플로우 오케스트레이션 엔진을 사용하여 쿠버네티스 클러스터에서 장애 내성과 확장성을 갖춘 워크플로우 실행을 지원하는 방식.
  • SHAP 및 커스텀 백엔드(예: 텍스트 기반 SHAP)와 통합하여 시각적 및 프로그래밍 방식의 모델 해석 가능성을 지원하는 방식.

실험 결과

연구 질문

  • RQ1통합된 SQL 구문 확장 기능이 다양한 데이터베이스와 머신러닝 프레임워크 간에 다양한 머신러닝 워크플로우를 효과적으로 표현할 수 있는가?
  • RQ2SQL 기반 시스템이 벤더 락인 없이 이질적인 데이터베이스 및 머신러닝 시스템 간의 상호운용성을 어떻게 달성할 수 있는가?
  • RQ3SQLFlow의 컴파일 스택(SQL → Couler → YAML)이 직접 YAML 또는 명령형 코드 대비 개발자 생산성 향상과 워크플로우 유지보수성 향상에 얼마나 기여하는가?
  • RQ4SQLFlow이 단일이고 일관된 SQL 인터페이스 내에서 지도학습 및 비지도학습, 모델 설명 모두를 지원할 수 있는가?
  • RQ5SQLFlow의 아키텍처가 실사용 환경에서 효율적이고 장애 내성적이며 확장 가능한 머신러닝 파이프라인 실행을 어떻게 가능하게 하는가?

주요 결과

  • SQLFlow은 SQL 프로그램을 쿠버네티스 네이티브 워크플로우로 성공적으로 컴파일하여 엔드 투 엔드 머신러닝 파이프라인의 장애 내성적이고 확장 가능한 실행을 가능하게 했습니다.
  • 협업 파싱 알고리즘 덕분에 SQLFlow은 MySQL, Hive, MaxCompute 등의 다양한 SQL 다이얼렉트와 XGBoost, TensorFlow, scikit-learn 등의 머신러닝 엔진을 변경 없이 지원할 수 있었습니다.
  • 시스템은 지도학습 및 비지도학습을 모두 지원하며, 모델 훈련, 예측, SHAP 및 metaplot과 같은 커스텀 도구를 통한 모델 설명까지 포함합니다.
  • Jupyter 노트북 및 명령줄 도구(예: `sqlflow compile`)와의 통합은 상호작용적이고 프로그래밍 기반 워크플로우 모두에서의 사용성과 유용성을 입증했습니다.
  • Couler를 Python DSL로 사용함으로써 머신러닝 연구자들은 복잡한 파이프라인을 효율적으로 구축하고 디버깅할 수 있었으며, 명확한 YAML 컴파일 경로를 확보할 수 있었습니다.
  • 데모를 통해 단일 SQL 프로그램이 로컬, Docker, 클라우드 등 다양한 환경에서 실행 가능하며, 다양한 데이터베이스와 머신러닝 모델과 조합 가능함을 입증하여 시스템의 유연성과 확장성의 우수성을 입증했습니다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.