Slide 1

Slide 1 text

日本の医療体験を、しなやかに。 © KAKEHASHI Inc. 株式会社カケハシ 2024/4/5 データサイエンティスト 保坂 GitHubを使わずDatabricksだけで お手軽にライブラリ共有やCIが できる環境を作ってみた

Slide 2

Slide 2 text

© KAKEHASHI Inc. 保坂 桂佑 株式会社カケハシ AI在庫管理 データサイエンティスト 兼 エンジニア 経歴 データ分析のコンサルティング →リクルートでデータサイエンティスト→機械学習エンジニアマネージャー →カケハシに1人目のデータサイエンティストとしてジョイン 著書 Kaggleで勝つデータ分析の技術(共著) 自己紹介 2

Slide 3

Slide 3 text

© KAKEHASHI Inc. カケハシでのお仕事 開発業務からデータサイエンス業務にシフトしてきています 2021年 Musubi AI在庫管理の開発 (エンジニア的なお仕事) 2022年 Musubi AI在庫管理の開発 + 精度改善 (データサイエンティスト的なお仕事 + エンジニア的なお仕事) 2023年〜 新規事業のためのデータ活用、施策効果検証 (データサイエンティスト的なお仕事) 3

Slide 4

Slide 4 text

© KAKEHASHI Inc. カケハシの分析業務でのDatabricks利用 必要なものがシームレスにつながっていてDatabricksだけで完結できるので、カケハシの分析業務では Databricksをフル活用している 4 可視化・共有 分析 集計・マート作成 定期実行

Slide 5

Slide 5 text

© KAKEHASHI Inc. 分析業務でよく発生する課題3兄弟 コード共有したい 5 だれでも自由に処理を拡張したい デグレが起こらないようにしたい その分析でも使え るからあげる! 関数追加したい バグってるから 直しちゃう 関数にパラメー タ追加しよう 機能追加した! 間違った結果が 出てるよ チームで分析業務を進めているとこの3つがとても良く起こる。手軽に実現したい・・・ (※現在 データサイエンス系人材 11名ほどの組織規模)

Slide 6

Slide 6 text

© KAKEHASHI Inc. Databricksにおけるコード管理のベストプラクティス そういうとき、DatabricksではGit/GitHubを使ったコード管理を推奨している ● バージョン管理のためにGit/GitHubを使う ● GitHub ActionsなどのCI/CDツールでテストをトリガーする ● DatabricksとGit/GitHubを連携させる 6 ノートブックのためのソフトウェアエンジニアリングのベストプラクティス より GitHub Databricks Pull Request GitHub Actions コード 修正 push PR作成 CI実行

Slide 7

Slide 7 text

© KAKEHASHI Inc. プラクティス通りにやると大変だった アウトプットではなく仮説検証のコードなのできっちりしすぎなくてよいのに、労力に見合わない ● 「この集計でXがわかったので別の集計をしてみよう」→「Yがわかったからさらに別の集計をしてみ よう」→「Zだと・・じゃあこのアルゴリズムで行こう」 ● 「この検証の流れがほかにも転用できるかもしれないから共有はしておこう」 7

Slide 8

Slide 8 text

© KAKEHASHI Inc. 大変だった理由① ビジネスサイドに近い業務経験でGitHubに触れたことのないデータサイエンティストにとってGitHubはハー ドルが高い ● branch、commit、push、pullなど様々な独自の概念があってなかなか慣れず、エンジニアに質問しま くってしまう ● 操作をミスしたときのリカバリは周りにエンジニアがいないと厳しい 8

Slide 9

Slide 9 text

© KAKEHASHI Inc. 大変だった理由② CIのためにGitHub Actionsのymlファイルを書くのもかなり辛い ● 書いてあること一つ一つが謎でどう書いたら良いかわからない ● マウスでポチポチするだけでCI作りたい 9

Slide 10

Slide 10 text

© KAKEHASHI Inc. 大変だった理由③ カケハシではGitHubリソースもIaC管理しているのでさらに敷居が高く、GitHubリポジトリ管理したくない ● GitHubリポジトリ作成から権限管理まですべてTerraformコードの修正が必要 ● エンジニアからすると嬉しいことだがデータサイエンティストにとっては知らないことばかり 10

Slide 11

Slide 11 text

© KAKEHASHI Inc. 本当にGitHubで管理しないとだめかな・・ 11

Slide 12

Slide 12 text

© KAKEHASHI Inc. GitHubの恩恵 GitHubでコード管理すると以下のような恩恵がえられるが・・・ ● コードのバージョン管理ができる ● Pull Requestによりレビューできる ● コードのロールバックができる ● CI/CDにより自動テストができる 12

Slide 13

Slide 13 text

© KAKEHASHI Inc. Databricksでも代替できるかも! 調べてみるとGitHubが提供する機能の多くをDatabricksだけでもカバーできそうだった (制限はある) 13 PRはないけど コードにコメントつけてFBすることはできる! ブランチはないけどバージョン管理できる! push/PRをトリガーにはできないけど スケジュールジョブで定期自動テストはできる! 一部コミットのrevertはできないけど 過去バージョンへのロールバックはできる!

Slide 14

Slide 14 text

© KAKEHASHI Inc. Databricksでも代替できるかも! 調べてみるとGitHubが提供する機能の多くをDatabricksだけでもカバーできそうだった (制限はある) 14 PRはないけど コードにコメントつけてFBすることはできる! ブランチはないけどバージョン管理できる! push/PRをトリガーにはできないけど スケジュールジョブで定期自動テストはできる! 一部コミットのrevertはできないけど 過去バージョンへのロールバックはできる! データサイエンティスト的には これで十分!

Slide 15

Slide 15 text

© KAKEHASHI Inc. ということで、GitHubなしでやってみた! 15

Slide 16

Slide 16 text

© KAKEHASHI Inc. 作った環境 Databricksの機能のみをつかって ● コード共有したい ● だれでも自由に処理を拡張したい ● デグレが起こらないようにしたい を実現する環境になっている 16 詳細は 弊社ブログ記事 をご覧ください

Slide 17

Slide 17 text

© KAKEHASHI Inc. 導入してよかったこと この仕組みで、分析業務でよく発生する課題3兄弟は解消できそう。特に以下の点は良いと感じた (※一部のプロジェクトに導入し始めている状況での感想です) マウスでポチポチするだけでCI環境をつくれる • GitHub使ったり、 GitHub Actionsのyml書く必要がないのでかなりハードルが下がる PRを出す必要なくコード修正が可能なのはやっぱり楽 • ちょっとした変更にPR作って出したりレビューするのもデータサイエンティストにとっては結構負担 リグレッションテスト程度ならすぐ作れるので負担は小さい • 分析作業の中で、処理途中のデータをチェックしてるのでそれをテストにするだけ • おかしな修正があれば過去バージョンに戻せるので怖くない 17

Slide 18

Slide 18 text

© KAKEHASHI Inc. この仕組みで難しいと感じたこと 手軽さを取る代わりに捨てたものもあるので、難しいと感じた点もあった。データサイエンティストにとっ てもGitHubが必要な場面はありそう。 たくさん変更するときは不安が残る • ブランチは使えないし、差分の全revertはできても一部の差分のrevertはできない ノートブック以外のリソース(クエリなど)はこの仕組みでは管理できない • 自動テストをさせることはできる • 変更履歴が見られずロールバックができない 18

Slide 19

Slide 19 text

© KAKEHASHI Inc. 今後やっていこうとしていること プロジェクトや作成したコードのフェーズに合わせた管理ができるようにしていきたい 19 初期フェーズ 試行錯誤・共有フェーズ 安定フェーズ Databricks only CIもなし Databricks only CIあり Databricks + GitHub 新規のデータや分析なので 共有・再利用難しい お互いのコードが再利用できるときがある が、分析が整理されきっていない 分析が整理・型化されてきて、 その再利用、拡張を行っていく

Slide 20

Slide 20 text

© KAKEHASHI Inc. まとめ 20 Databricksだけで簡易なライブラリ共有やCIの環境を作った背景、導入してみてのメリットデメリットをご 紹介 ● GitHubに触れたことのないデータサイエンティストでも、分析のコード共有に適した手軽さで使える ● リグレッションテストをしたり、テスト失敗時に元のコードにrevertするといった簡単なデグレ防止 には十分使える ● たくさんの変更をちゃんと管理したり、ノートブック以外のリソース(クエリなど)を管理したいなら GitHubが不可欠

Slide 21

Slide 21 text

© KAKEHASHI Inc. なにはともあれ 21 Databricksはデータ関連の機能が オールインワンに搭載されていて 直感的に使えるので、 どんどん使ってみてください!