2019年5月29日のMachine Learning Casual Talks #10 で発表する内容
databricksを使ってnotebookベースでお手軽に機械学習API・バッチ処理を量産する2019.05.29SupershipToru Nishiyama
View Slide
2サマリ• 自己紹介• 普段の仕事と機械学習のかかわり• databricksとは• databricksのJob機能を活用しよう• databricks環境におけるCI/CD• 具体的なユースケース
3自己紹介• 西山 徹(にしやま とおる)• データアナリスト/セールスエンジニア@Supership• 非IT系 -> データアナリスト -> データアナリスト/セールスエンジニア(now)• どうでもよいつぶやき:最近、二郎系ラーメンマップを作ったらGIGAZINEに取り上げられたりしました※Herokuの無料枠が死んで現在は落ちてます…
4普段の仕事と機械学習のかかわり• 所属チームのミッション• 広告配信ログ、ユーザの属性情報など自社データを用いたクライアント向けデータ分析・自社利用向け広告配信セグメントの作成etc.,• 大変なところ• とにかくデータがでかい• 広告配信ログは1日数十億レコード、属性データも1テーブル1億レコードを余裕で超えてくる• チームはアナリストが大半で、エンジニアリングリソースが十分でない• 案件ベースで、広告配信セグメントを新規で作成してスケジュール実行したり、クライアントとのデータ連携のためのデータパイプラインを作ったり、といったことが散発的に発生
5普段の仕事と機械学習のかかわり• 大変なところにどう立ち向かっているか• とにかくデータがでかい-> Apache Sparkを使おう• チームはアナリストが大半で、エンジニアリングリソースが十分でない-> databricksを使うことで、極力エンジニアリングにかけるリソースをへらす≒databricksの機能を利用して巻き取ってもらう↑ここらへんが今回の話の中心になります
6databricksとは• ざっくりdatabricksの紹介• databricks社(Sparkの開発元)が提供している統合分析プラットフォーム• jupyter-likeなnotebookベースでPython, R, Scalaから、分散処理基盤上でSparkが実行できる• 利用するクラスタ単位で環境を切り替えたり、依存ライブラリを管理することができる• ベースとなる環境は databricks runtimeと呼ばれる標準環境-> ざっくりanacondaみたいなものだと思ってください• 今日出てこない話も含めて過去に書いた記事もあるのでよかったら読んでみてください• Databricksで分析業務がはかどっている話 - Qiita
7databricksのJobs機能を活用しよう• notebookを文字通りjob化することができる機能• notebookのスケジュール実行したり、REST API化して任意のタイミングで処理を実行させることができる• jobの作成・管理などの操作がwebブラウザ上から実行できる• 良いかどうかはさておき,エンジニアリングの基礎知識がなくても一瞬でAPI構築ができる• jobごとに専用のクラスタが実行時に都度立ち上がるので、コスト的にもメリットがある• jobの内容に合わせたスペックを選択できる(CPU/GPU, メモリ, worker数, etc.,)
8databricks環境におけるCI/CD• databricksのnotebookはgithubとの連携が可能• しかも.pyで保存できる• databricksが用意しているCLIを使うことで、ローカル環境やdatabricksのワークスペース内の任意のディレクトリにnotebookを同期可能• それとCI/CDツールを組み合わせることで、「notebookがmasterにマージされたら本番用のワークスペースに自動でデプロイする」といったことが実現可能(開発用ワークスペース ) (本番用ワークスペース )deploycommit/merge/master//dev/
9webアプリケーション具体的なユースケース• バッチ処理を記述したnotebookをスケジュール実行して、ETL処理として利用• アドホックなETL処理が多数発生するので都合が良い• webアプリケーションから呼ばれるAPIとして利用databricks jobjobに投げるパラメータを選択jobの結果を閲覧jobの結果を出力ユーザが指定した条件でjobをkick/jobのステータスを監視完了したjobの結果を読み込み画面上で可視化
10さらに細かいtips• ちょっとした履歴管理はnotebookに標準でついてるので楽• .pyでnotebookが保存されるのでGithub上でのレビューがめっちゃ楽• 改行がちゃんと表示されてdiffがめっちゃ見やすい!• databricks CLIでローカル環境にnotebookを持ってきて、.pyファイルとして開発もできる• jupyter-likeなインタラクティブに確認しながら開発したい、リファクタなどエディタやlintツールの機能を活用したいなど、好みに合わせて作業環境を選べる• 微妙なところとしては、jobにキューイングがまだ実装されていないところ
11まとめ• databricksを使うことで、• Jupyter notebookベースで分析をしていて辛いところをdatabricksがよしなに巻き取ってくれるので、アナリストが多いチームでもお手軽に機械学習やちょっとしたデータパイプラインを量産できる• (今回は触れませんでしたが)ちょっとしたBIツールとして使ったりもできるなど、databricksだけで分析業務が完結できるよう様々な機能が高速に開発されている