$30 off During Our Annual Pro Sale. View Details »

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

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

Cybozu
PRO

April 01, 2021
Tweet

More Decks by Cybozu

Other Decks in Technology

Transcript

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

    View Slide

  2. 自己紹介
    ■ 松井誠泰(まつい まさひろ)
    ■ 東京大学学際情報学府修士1年
    ■ Cybozuは2020年10月卒業
    – 川合さん、皆さん、お世話になりました
    ■ 時間が経っているので、簡単に近況報告もさせていただきます。
    2

    View Slide

  3. 要旨
    ▸ 課題
    ▹ 複雑な前処理SQLクエリ集合の管理
    ▸ 手法
    ▹ SQLクエリ間の依存関係自動抽出に基づく
    ▹ 可視化
    ▹ 自動並列実行
    ▹ スキーマ解析
    ▸ 有効性
    ▹ 実際のプロジェクトにおけるCIのデータを評価
    ▹ クエリ・データにおける問題の多くを検知
    ▹ 典型的な問題の分類
    3

    View Slide

  4. 目次
    ▸ 背景と研究目的
    ▸ 提案手法
    ▸ 評価
    4

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. SQLによる機械学習の影響
    Mart
    Warehouse
    Lake
    12

    View Slide

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

    13

    View Slide

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

    15
    SELECT
    CREATE

    View Slide

  15. 依存関係の自動抽出
    1. 複数のSQLファイルから、テーブル名をクエリの種類ごとに抽出する。
    2. CREATE文 ← テーブル参照 という依存関係でエッジを追加していく。
    3. グラフ構造をDOT言語で書き出す
    - 同名のテーブルをCREATEするクエリがある場合、エラーを出力し異常終了す
    る。
    - グラフ構造にサイクルがあった場合、エラーを出力し異常終了する。
    - 依存関係のサイクルについては、議論で
    - 得られるグラフ構造はサイクルのない有向非巡回グラフ(DAG)となる
    16

    View Slide

  16. DOT言語によるグラフ表現
    digraph G {
    0[label="./create_table.sql"];
    1[label="./select1.sql"];
    2[label="./select2.sql"];
    0->1 ;
    0->2 ;
    }
    DOT言語
    17

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  21. 結果
    23

    View Slide

  22. 結果
    ■ 133件(16%)がAlphaSQLによるエラー
    – 96件(12%)が必要なデータが存在しないことによるエラー
    – 19件(2%)がカラムや関数の型が合わないことによるエラー
    – 16件(2%)がシンタックスエラー
    – 同名テーブルを作成したことによるエラーが1件
    – 依存関係にサイクルがあったことによるエラーが1件
    ■ 型エラーが確認できた → もともとの課題を静的解析で検知できた
    ■ 多くのエラーがデータの依存関係による
    → [1, 2] の問題提起と整合
    24

    View Slide

  23. 経験的な定性的評価
    ■ 偽陽性はない
    – AlphaSQLが検知したデータ依存関係エラー・型エラー・構文エラーは、1枚の
    SQLには実行前に毎回適用されるため、必ず発生する
    – 同名テーブルのエラーはどちらのテーブルを残すのか決定不能なので問題とい
    える(実際にケアレスミスで発生した)
    – サイクルエラーも後に議論するように問題となる
    ■ 偽陰性もほぼない
    – 例外はメモリエラー等のランタイムエラーのみ
    ■ 追加工数なく、依存関係が自動解決され、並列化される
    ■ README上のDAG画像が自動更新
    → 複雑な依存関係の管理を補助できた
    25

    View Slide

  24. Apache Airflow
    [Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介, Google Cloud Platform Japan
    37

    View Slide

  25. bq-airflow-dag-generator
    38

    View Slide

  26. まとめ
    ▸ 課題
    ▹ 複雑な前処理SQLクエリ集合の管理
    ▸ 手法
    ▹ SQLクエリ間の依存関係自動抽出に基づく
    ▹ 可視化
    ▹ 自動並列実行
    ▹ スキーマ解析
    ▸ 有効性
    ▹ 実際のプロジェクトにおけるCIのデータを評価
    ▹ クエリ・データにおける問題の多くを検知
    ▹ 典型的な問題の分類
    ▸ ソースコードは全て公開済み
    39

    View Slide

  27. ▸ 近況報告
    40

    View Slide

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

    View Slide