Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OLAP SQLの静的解析と自動並列化 と近況報告/cybozulabs-youth10-matsui

A97eee01397705443a72a48ce29d3e19?s=47 Cybozu
April 01, 2021

OLAP SQLの静的解析と自動並列化 と近況報告/cybozulabs-youth10-matsui

A97eee01397705443a72a48ce29d3e19?s=128

Cybozu

April 01, 2021
Tweet

Transcript

  1. OLAP SQLの静的解析と自動並列化 と近況報告 松井誠泰 メンター:川合秀実さん

  2. 自己紹介 ▪ 松井誠泰(まつい まさひろ) ▪ 東京大学学際情報学府修士1年 ▪ Cybozuは2020年10月卒業 – 川合さん、皆さん、お世話になりました

    ▪ 時間が経っているので、簡単に近況報告もさせていただきます。 2
  3. 要旨 ▸ 課題 ▹ 複雑な前処理SQLクエリ集合の管理 ▸ 手法 ▹ SQLクエリ間の依存関係自動抽出に基づく ▹

    可視化 ▹ 自動並列実行 ▹ スキーマ解析 ▸ 有効性 ▹ 実際のプロジェクトにおけるCIのデータを評価 ▹ クエリ・データにおける問題の多くを検知 ▹ 典型的な問題の分類 3
  4. 目次 ▸ 背景と研究目的 ▸ 提案手法 ▸ 評価 4

  5. 機械学習システムの技術的負債 ▪ ソフトウェアの技術的負債 – 依存関係(パッケージ・ヘッダファイル等)の管理 ▪ 機械学習システムでは、上記に加えてデータの依存関係も管理する必要 – データの依存関係はコンパイラ等の支援がない –

    CACE(Changing Anything Changing Everything) → 技術的負債の返済が困難 → 課題を解決するための静的解析ツール等が求められる [1] Sculley , D., Holt, G., Golov in, D., Dav ydov, E., Phillips, T., Ebner, D., Chaudhary , V., Young, M., Crespo, J.- F. and Dennison, D.: Hidden Technical Debt in Machine Learning Sy stems, Proceedings of the 28th International Conf erence on Neural Inf ormation Processing Sy stems - Volume 2, NIPS’15, Cambridge, MA, USA, MIT Press, p. 2503–2511 (2015). [2] Sculley , D., Holt, G., Golov in, D., Dav ydov, E., Phillips, T., Ebner, D., Chaudhary , V. and Young, M.: Machine Learning: The High Interest Credit Card of Technical Debt, SE4ML: Sof tware Engineering f or Machine Learning (NIPS 2014 Workshop) (2014). 5
  6. SQL によるデータ処理技術の進展 ▪ 高圧縮率の列指向データフォーマッ ト ▪ 木構造的ジョブディスパッチ → 高速なデータ処理 ▪

    Dremel をクラウドサービスとして 提供する BigQuery だけでなく、多 くの分析向けクラウドデータベース が提供されている ▪ OSSとしては Apache Drill も ▪ SQL は普及率の高い言語 ▪ SQLによる機械学習モデルの構築も – データ前処理だけでなく – 機械学習システム全体を管理 [3] Melnik, S., Gubarev , A., Long, J. J., Romer, G., Shiv akumar, S., Tolton, M. and Vassilakis, T.: Dremel: interactiv e analy sis of web-scale datasets, Proceedings of the VLDB Endowment, Vol. 3, No. 1-2, pp. 330–339 (online), av ailable f rom ⟨http://dl.acm.org/citation.cfm?id=1920841.1920886⟩ (2010). 6
  7. SQLによる技術的負債 Mart Warehouse Lake 7

  8. SQLによる技術的負債 Mart Warehouse Lake 8

  9. SQLによる技術的負債 Mart Warehouse Lake 1. スキーマを変更 9

  10. SQLによる技術的負債 Mart Warehouse Lake 1. スキーマを変更 2. 後半のクエリで型エラー発生 - 型が合わない

    - カラムが足りない…etc. 10
  11. 課題 ▪ 単一SQLファイルの型解析では、依存関係を持つクエリの実行や並列実行にお ける型エラーを後になるまで検知できない – 大規模データ処理では、処理時間や計算コストの浪費が問題となる → ある種の実行時エラー ▪ 依存関係は複雑になりうる

    – 管理コスト – 並列化のための工数 11
  12. SQLによる機械学習の影響 Mart Warehouse Lake 12

  13. 本研究の目的 ▪ 機械学習システムで問題となる技術的負債の問題を – SQLによるデータ処理パイプラインというターゲットに絞って – 静的解析ツールによって解決する ▪ 普及率の高いSQLによる宣言的なデータ処理をより安全かつ効率的なものにす る

    13
  14. 依存関係の自動抽出 SELECT DOT言語 Zeta SQL エイリアスを除い たテーブル名を抽 出 15 SELECT

    CREATE
  15. 依存関係の自動抽出 1. 複数のSQLファイルから、テーブル名をクエリの種類ごとに抽出する。 2. CREATE文 ← テーブル参照 という依存関係でエッジを追加していく。 3. グラフ構造をDOT言語で書き出す

    - 同名のテーブルをCREATEするクエリがある場合、エラーを出力し異常終了す る。 - グラフ構造にサイクルがあった場合、エラーを出力し異常終了する。 - 依存関係のサイクルについては、議論で - 得られるグラフ構造はサイクルのない有向非巡回グラフ(DAG)となる 16
  16. DOT言語によるグラフ表現 digraph G { 0[label="./create_table.sql"]; 1[label="./select1.sql"]; 2[label="./select2.sql"]; 0->1 ; 0->2

    ; } DOT言語 17
  17. 自動並列実行 DOT言語 digraph G { 0[label="./create_table.sql"]; 1[label="./select1.sql"]; 2[label="./select2.sql"]; 0->1 ;

    0->2 ; } 18
  18. 自動並列実行 1. 依存する先のない頂点(SQLファイル)を並列に実行 2. SQLファイルの実行が完了するたびに以下を実行 3. 依存する先のSQLファイルが全て実行完了済みで、実行済みでないSQLファイ ルを選択して実行 4. 全てのSQLファイルが実行完了したら終了

    19
  19. 全体のスキーマ解析 20 - 順次型解析し、CREATE TABLE文を見つけたらス キーマを環境に登録 digraph G { 0[label="./create_table.sql"];

    1[label="./select1.sql"]; 2[label="./select2.sql"]; 0->1 ; 0->2 ; } DOT言語 CREATE TABLE SELECT トポロジカルソート Zeta SQL 構文解析・型解析 SELECT
  20. 評価 ▪ 実際の機械学習・データ解析プロジェクトのCI上にAlphaSQLを導入 ▪ プロジェクト内には、複数のSQLファイルで構成されるDAGが3つある ▪ SQLファイルは合計で71枚 ▪ CIでは、全体の統合テストを行う目的で、全てのSQLファイルから一つのDAGを 構築し、型・スキーマ解析を行っている。

    ▪ 現状で827件のデータが集まっている。 ▪ CIの実装と分析に使用したコードはAlphaSQLのレポジトリに公開している – https://github.com/Matts966/alphasql/tree/master/samples/sample-ci 22
  21. 結果 23

  22. 結果 ▪ 133件(16%)がAlphaSQLによるエラー – 96件(12%)が必要なデータが存在しないことによるエラー – 19件(2%)がカラムや関数の型が合わないことによるエラー – 16件(2%)がシンタックスエラー –

    同名テーブルを作成したことによるエラーが1件 – 依存関係にサイクルがあったことによるエラーが1件 ▪ 型エラーが確認できた → もともとの課題を静的解析で検知できた ▪ 多くのエラーがデータの依存関係による → [1, 2] の問題提起と整合 24
  23. 経験的な定性的評価 ▪ 偽陽性はない – AlphaSQLが検知したデータ依存関係エラー・型エラー・構文エラーは、1枚の SQLには実行前に毎回適用されるため、必ず発生する – 同名テーブルのエラーはどちらのテーブルを残すのか決定不能なので問題とい える(実際にケアレスミスで発生した) –

    サイクルエラーも後に議論するように問題となる ▪ 偽陰性もほぼない – 例外はメモリエラー等のランタイムエラーのみ ▪ 追加工数なく、依存関係が自動解決され、並列化される ▪ README上のDAG画像が自動更新 → 複雑な依存関係の管理を補助できた 25
  24. Apache Airflow [Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介, Google Cloud Platform Japan

    37
  25. bq-airflow-dag-generator 38

  26. まとめ ▸ 課題 ▹ 複雑な前処理SQLクエリ集合の管理 ▸ 手法 ▹ SQLクエリ間の依存関係自動抽出に基づく ▹

    可視化 ▹ 自動並列実行 ▹ スキーマ解析 ▸ 有効性 ▹ 実際のプロジェクトにおけるCIのデータを評価 ▹ クエリ・データにおける問題の多くを検知 ▹ 典型的な問題の分類 ▸ ソースコードは全て公開済み 39
  27. ▸ 近況報告 40

  28. Wi-FiのChannel State Informationを利 用した混雑検知 ▪ インフラ(Web周り)とデバイス側の実装を担当 ▪ 大学の複数プロジェクトに採択され,実装を進めています. ▪ RTOS向け言語を実装していた時期もありましたが,そこで得た知識も活きてい

    ます 41