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

databricksを使ってnotebookベースでお手軽に機械学習API・バッチ処理を量産する

 databricksを使ってnotebookベースでお手軽に機械学習API・バッチ処理を量産する

2019年5月29日のMachine Learning Casual Talks #10 で発表する内容

Toru Nishiyama

May 29, 2019
Tweet

More Decks by Toru Nishiyama

Other Decks in Technology

Transcript

  1. databricksを使ってnotebookベース
    でお手軽に機械学習API・
    バッチ処理を量産する
    2019.05.29
    Supership
    Toru Nishiyama

    View Slide

  2. 2
    サマリ
    • 自己紹介
    • 普段の仕事と機械学習のかかわり
    • databricksとは
    • databricksのJob機能を活用しよう
    • databricks環境におけるCI/CD
    • 具体的なユースケース

    View Slide

  3. 3
    自己紹介
    • 西山 徹(にしやま とおる)
    • データアナリスト/セールスエンジニア@Supership
    • 非IT系 -> データアナリスト -> データアナリスト/セールスエンジニア(now)
    • どうでもよいつぶやき:
    最近、二郎系ラーメンマップを作ったらGIGAZINEに
    取り上げられたりしました
    ※Herokuの無料枠が死んで現在は落ちてます…

    View Slide

  4. 4
    普段の仕事と機械学習のかかわり
    • 所属チームのミッション
    • 広告配信ログ、ユーザの属性情報など自社データを用いた
    クライアント向けデータ分析・自社利用向け広告配信セグメントの作成
    etc.,
    • 大変なところ
    • とにかくデータがでかい
    • 広告配信ログは1日数十億レコード、
    属性データも1テーブル1億レコードを余裕で超えてくる
    • チームはアナリストが大半で、エンジニアリングリソースが十分でない
    • 案件ベースで、
    広告配信セグメントを新規で作成してスケジュール実行したり、
    クライアントとのデータ連携のためのデータパイプラインを作ったり、
    といったことが散発的に発生

    View Slide

  5. 5
    普段の仕事と機械学習のかかわり
    • 大変なところにどう立ち向かっているか
    • とにかくデータがでかい
    -> Apache Sparkを使おう
    • チームはアナリストが大半で、エンジニアリングリソースが十分でない
    -> databricksを使うことで、極力エンジニアリング
    にかけるリソースをへらす
    ≒databricksの機能を利用して巻き取ってもらう
    ↑ここらへんが今回の話の中心になります

    View Slide

  6. 6
    databricksとは
    • ざっくりdatabricksの紹介
    • databricks社(Sparkの開発元)が提供している
    統合分析プラットフォーム
    • jupyter-likeなnotebookベースでPython, R, Scalaから、
    分散処理基盤上でSparkが実行できる
    • 利用するクラスタ単位で環境を切り替えたり、
    依存ライブラリを管理することができる
    • ベースとなる環境は databricks runtimeと呼ばれる標準環境
    -> ざっくりanacondaみたいなものだと思ってください
    • 今日出てこない話も含めて過去に書いた記事もあるので
    よかったら読んでみてください
    • Databricksで分析業務がはかどっている話 - Qiita

    View Slide

  7. 7
    databricksのJobs機能を活用しよう
    • notebookを文字通りjob化することができる機能
    • notebookのスケジュール実行したり、REST API化して
    任意のタイミングで処理を実行させることができる
    • jobの作成・管理などの操作がwebブラウザ上から実行できる
    • 良いかどうかはさておき,
    エンジニアリングの基礎知識がなくても一瞬でAPI構築ができる
    • jobごとに専用のクラスタが実行時に都度立ち上がるので、
    コスト的にもメリットがある
    • jobの内容に合わせたスペックを選択できる
    (CPU/GPU, メモリ, worker数, etc.,)

    View Slide

  8. 8
    databricks環境におけるCI/CD
    • databricksのnotebookはgithubとの連携が可能
    • しかも.pyで保存できる
    • databricksが用意しているCLIを使うことで、ローカル環境や
    databricksのワークスペース内の任意のディレクトリに
    notebookを同期可能
    • それとCI/CDツールを組み合わせることで、
    「notebookがmasterにマージされたら本番用の
    ワークスペースに自動でデプロイする」といったことが実現可能
    (開発用ワークスペース ) (本番用ワークスペース )
    deploy
    commit/
    merge
    /master/
    /dev/

    View Slide

  9. 9
    webアプリケーション
    具体的なユースケース
    • バッチ処理を記述したnotebookをスケジュール実行して、
    ETL処理として利用
    • アドホックなETL処理が多数発生するので都合が良い
    • webアプリケーションから呼ばれるAPIとして利用
    databricks job
    jobに投げる
    パラメータを選択
    jobの結果を閲覧
    jobの結果を
    出力
    ユーザが指定した
    条件でjobをkick/
    jobのステータスを監視
    完了した
    jobの結果を読み込み
    画面上で可視化

    View Slide

  10. 10
    さらに細かいtips
    • ちょっとした履歴管理はnotebookに標準でついてるので楽
    • .pyでnotebookが保存されるのでGithub上でのレビューが
    めっちゃ楽
    • 改行がちゃんと表示されてdiffがめっちゃ見やすい!
    • databricks CLIでローカル環境にnotebookを持ってきて、
    .pyファイルとして開発もできる
    • jupyter-likeなインタラクティブに確認しながら開発したい、
    リファクタなどエディタやlintツールの機能を活用したいなど、
    好みに合わせて作業環境を選べる
    • 微妙なところとしては、jobにキューイングが
    まだ実装されていないところ

    View Slide

  11. 11
    まとめ
    • databricksを使うことで、
    • Jupyter notebookベースで分析をしていて辛いところを
    databricksがよしなに巻き取ってくれるので、
    アナリストが多いチームでもお手軽に機械学習や
    ちょっとしたデータパイプラインを量産できる
    • (今回は触れませんでしたが)ちょっとしたBIツールとして
    使ったりもできるなど、databricksだけで分析業務が完結できるよう
    様々な機能が高速に開発されている

    View Slide