Databricksにおけるデータサイエンスコラボレーション

[Collaborative Data Science \- Databricks](https://databricks.com/solutions/data-science)をベースにした記事です。

> [Databricksクイックスタートガイド](https://qiita.com/taka_yayoi/items/125231c126a602693610)のコンテンツです。

データサイエンティストは、データサイエンスワークフローを通じて生産性を阻害する数多くの課題に直面します。企業がよりデータドリブンになるに従い、データ、そして、データを用いてトレーニングしたモデルに容易にアクセスでき、可視性、再現性を確保し、データから洞察を得るためのコラボレーション環境は重要となります。

# 課題

![](https://databricks.com/wp-content/uploads/2020/04/datascience-challenge.png)

- **大規模データの探索は困難かつ高コストです。**
- インフラストラクチャとDevOpsの管理に**多くの時間を費やしています。**
- より詳細な分析を行うために**様々ななオープンソースのライブラリ、ツールを組み合わせる必要があります。**
- データエンジニアリングチームとデータサイエンスチーム間で**複数の引き渡し**が発生し、エラーが混入しやすく、リスクを増大させます。
- 複雑なML(機械学習)環境、依存関係により**ローカルでの開発からクラウドベースの開発に移行することが困難です。**

# ソリューション

![](https://databricks.com/wp-content/uploads/2020/04/datascience-solution-1.png)

- 後段の分析で用いるクリーンかつ信頼性のあるデータへの**クイックアクセス**
- データサイエンスワークスペースで事前設定済みのクラスターに**ワンクリックでアクセス**
- 最大の柔軟性を得るために、**お使いの環境の持ち込み、複数言語をサポート**
- データ準備からモデリング、洞察の共有に至るエンドツーエンドのデータサイエンスワークフローを円滑にするための**統合的アプローチ**
- 事前設定済みかつカスタマイズ可能なMLクラスターへの**コードのマイグレーション及びリモート実行**

# データサイエンスのためのDatabricks

Databricksは、データ準備から探索的分析、予兆分析に至る全てのタイプの分析ワークロードをコラボレーションを通じて実行できるオープンかつ統合されたプラットフォームです。

## ワークスペース

ノートブック、エクスペリメント、プロジェクトをロールベースのアクセスコントロールのもとで格納、共有できる集中管理された作業場所です。
![Screen Shot 2022-01-19 at 8.48.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/38c42108-335d-c4c3-85a1-45860f640600.png)

Databricksワークスペースは複数ユーザーが共同作業を行うための作業場所と言えます。Databricksにアクセスし、画面右側のサイドメニューから**Workspace**を選択することで、ワークスペースの全ユーザーのホームディレクトリを参照することができます。

![Screen Shot 2022-01-19 at 9.39.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/66e17cc9-3efa-ec31-758c-38a3b11eceaf.png)

階層のトップレベルには以下のフォルダーが存在しています。他のユーザーと共同作業する際にはこれらのフォルダーにアクセスすることになります。あるいは、Databricksノートブック(そしてセル)には一意のURLが割り振られますので、URLをシェアすることで当該のノートブックに直接アクセスすることができます。セルのURLに関しては[こちら](https://qiita.com/taka_yayoi/items/896ffb40342816baefc6#%E3%82%BB%E3%83%AB%E3%81%AEurl%E3%82%92%E3%82%B7%E3%82%A7%E3%82%A2%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99)を参照ください。

- ![](https://docs.databricks.com/_images/shared-icon.png)**Shared**: 組織内でオブジェクトを共有するためのフォルダーです。全てのユーザーが全てのアクセス権を有しています。
- ![](https://docs.databricks.com/_images/users-icon1.png)**Users**: ユーザーごとのフォルダーが格納されています。

**Users**をクリックすると、一番上にはご自身のホームディレクトリが表示され、以降に他のユーザーのホームディレクトリがアルファベット順に表示されます。なお、後述するアクセス権で、他のユーザーが参照できるように設定がなされていないユーザーは表示されません。
![Screen Shot 2022-01-19 at 9.39.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a77ad689-b6bd-4ca7-b510-b1a8c026da87.png)

## ノートブック

ビルトインのインタラクティブな可視化機能、自動バージョン管理、コメント、Git連携、ロールベースのアクセス管理を行える複数言語をサポートするノートブックです。ノートブックのURLをシェアすることで、同時参照、同時編集を行うこともできます。
![Screen Shot 2022-01-19 at 8.48.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3817a8b1-0c63-fda9-eccd-592145d6cdfb.png)

**Users**配下のノートブックで共同作業を行う際には、アクセスしてほしいユーザーのアクセスを許可する必要があります。

以下の動画で説明しているように、ノートブックの画面の右上にある**Share**ボタン(以前はPermissionsボタンでしたがShareボタンに変更されました)を押すことで、ノートブックに対するアクセス権を設定することができます。誰に対して何の操作を許可するのかを指定します。参照のみを許可するのであれば**Can Read**、実行を許可するのであれば**Can Run**、編集も許可するのであれば**Can Edit**を選択します。フルコントロールを許可するのであれば**Can Manage**を選択します。ここでは、ノートブックのアクセス権を説明しましたが、同様にクラスター、フォルダー、エクスペリメントなどDatabricks上のオブジェクトはアクセス権を設定することが可能です。詳細は[Databricksにおけるワークスペースオブジェクトのアクセスコントロール]
(https://qiita.com/taka_yayoi/items/2dd6711b7b254505e4a3)を参照してください。

![](https://psajpstorage.blob.core.windows.net/commonfiles/Collaboration001.gif)

他のユーザーがノートブックにアクセスすると、ノートブックの右上に他のユーザーのアクセスを示すアイコンが表示され、他のユーザーがどのセルで作業しているのかが分かるように、セルがハイライトされ、カーソルが表示されます。
![Screen Shot 2022-01-19 at 9.58.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/1d62da80-1be9-9b56-b143-25d01aada762.png)

ノートブック上にキーワードレベルでコメントを残すことも可能です。リアルタイムでのコミュニケーションが難しい場合に活用することができます。

コメントをつけたいキーワードを選択すると、セルの右側に吹き出しマークが表示されます。これをクリックするとコメントを入力できるようになります。
![Screen Shot 2022-01-19 at 10.04.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/dcd5e24f-689d-ce40-8c12-9447e61a875f.png)

コメントを入力し**Comment**をクリックします。
![Screen Shot 2022-01-19 at 10.04.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a91c5147-6180-27b6-3a46-aa50891233b9.png)

全てのコメントを表示するにはノートブック右上の**Comments**ボタンをクリックします。Replyすることも可能です。
![Screen Shot 2022-01-19 at 10.06.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8453484f-e5e1-65f0-2013-09d7866f9f55.png)

## データストア

全ての利用可能なデータにアクセスできる集中管理されるデータストアです。スキーマ、以前のバージョンのデータにもアクセスすることができます。
![Screen Shot 2022-01-19 at 8.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/7eed4d9c-0a57-2f55-adda-35ce30a13e45.png)

## ダッシュボード

ノートブックの実行結果をクイックに共有可能なダッシュボードにすることができます。ダッシュボードは常に最新の状態に保たれ、インタラクティブなクエリーを実行することもできます。
![Screen Shot 2022-01-19 at 8.48.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/90f438a6-3e9b-4966-442f-dd982ce4c250.png)


## 実験(エクスペリメント)トラッキング

機械学習モデル構築で使用したソースコード、パラメータ、結果、アーティファクト、使用されたデータなどは自動で記録され、他のユーザーと共有することができます。
![Screen Shot 2022-01-19 at 8.48.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e5e9cb7b-23cc-36f6-2159-0e1ecb964dc6.png)

# 大規模コラボレーティブデータサイエンス

Databricksを活用することで、大規模なデータを活用する多人数から構成されるデータサイエンティストチーム、データエンジニアリングチーム、データアナリスト、MLOps/DevOpsチーム、ITチームなど、AI/機械学習プロジェクトに関わる全ての方が連携しながら作業を進めることができます。

## データサイエンスワークフロー全体を通じたコラボレーション

![](https://databricks.com/wp-content/uploads/2020/04/Data-Scince-us-case01-min.jpg)

Databricksノートブック上でコラボレーションしながら、Python、R、Scala、SQLのコードを記述し、インタラクティブなビジュアライゼーションを行い、新たな洞察を得ることができます。

共同編集、コメント、自動バージョン管理、Git連携、ロールベースのアクセスコントロールを通じて、セキュアかつ信頼性高くコードを共有することができます。

一つの場所で全てのエクスペリメント(モデルのトレーニング)とモデルを記録することで知識を蓄え、ダッシュボードを公開することで、生データから洞察に至るワークフロー全体を通じて、同僚・ステークホルダーへの作業の引き渡しをファシリテートします。

[詳細はこちら](https://databricks.com/jp/product/machine-learning)

## インフラストラクチャではなくデータサイエンスへのフォーカス

![](https://databricks.com/wp-content/uploads/2020/04/Data-Scince-us-case02-min.jpg)

もはや、お使いのラップトップに収まるようにデータを制限することや、利用できる計算リソースに苦慮する必要はありません。

お使いのローカル環境をクイックにクラウドに移行することができ、自動で管理されるクラスターにノートブックを接続することで、みなさまな分析ワークロードを必要なだけスケールさせることができます。

[詳細はこちら](https://databricks.com/jp/product/enterprise-cloud-service)

## PyCharm、Jupyter Lab、RStudioからスケーラブルな計算資源を活用

![](https://databricks.com/wp-content/uploads/2020/04/Data-Scince-us-case03-min.jpg)

我々は皆様がどれだけ多忙であるのかを知っています...おそらく、すでに皆様のラップトップには数百のプロジェクトが存在しており、特定のツールセットに習熟しているのだと思います。

お使いのIDEをDatabricksに接続することで、無限のデータストレージと計算リソースを活用することができます。あるいは、シンプルにDatabricks内でRStudioやJupyter Labから直接接続することも可能です。

https://qiita.com/taka_yayoi/items/e7ce091f9d01da4b0294

## データサイエンスに活用するデータの準備

![](https://databricks.com/wp-content/uploads/2020/04/Delta-lake-use-case-min.jpg)

[Delta Lake](https://databricks.com/jp/product/delta-lake-on-databricks)を用いることで、バッチ、ストリーミング、構造化データ、非構造化データの全てのデータを一つの場所でクリーンにし、カタログ化します。これにより、集中管理されたデータストアを企業全体で活用できるようになります。

[詳細はこちら](https://databricks.com/jp/product/unified-data-service)

## 新たな洞察の発見及び共有

![](https://databricks.com/wp-content/uploads/2020/04/Data-Scince-us-case04-min.jpg)

ビルトインのインタラクティブなビジュアライゼーション、matplotlib、ggplotのようなライブラリを用いて新たな洞察を得ることができます。

分析結果を動的なダッシュボードにクイックに切り替えることで、分析結果を容易に共有することができます。ダッシュボードは常に最新の状態に保たれ、インタラクティブなクエリーを実行することもできます。

ノートブック、セル、ダッシュボードはロールベースのアクセスコントロールを通じて共有することができ、HTML、IPythonノートブックなどの複数のフォーマットでエクスポートすることも可能です。

https://qiita.com/taka_yayoi/items/4b200d08ab3d0863d40a


## 最新MLフレームワークへのシンプルなアクセス

![](https://databricks.com/wp-content/uploads/2020/04/Packages-pic@2x.png)

scikit-learn、XGBoost、TensorFlow、Kerasのような人気のあるフレームワークが同梱された最適化機械学習環境にワンクリックでアクセスできるので、すぐに作業に取り掛かることができます。あるいは、Condaを用いて簡単にML環境を移行しカスタマイズすることができます。Databricksにおけるスケーリングは簡素化されており、簡単に小規模データからビッグデータに移行することができるので、お使いのラップトップにデータが収まるかどうかを悩む必要はありません。

MLランタイムはハイパーパラメーターチューニング、モデル検索を行うビルトインの[AutoML](https://qiita.com/taka_yayoi/items/0ed860131a02aeade14f)機能を提供しており、データサイエンスワークフローを加速させるお手伝いをします。例えば、ロジスティック回帰、ツリーベースのモデル、GraphFramesなど一般的に用いられているアルゴリズム、フレームワークでビルトインの最適化を行うことでトレーニングに要する時間を短縮します。

[詳細はこちら](https://databricks.com/jp/product/machine-learning-runtime)

## 結果の自動追跡および再現性の確保

![](https://databricks.com/wp-content/uploads/2020/04/Data-Scince-us-case06-min.jpg)

マネージド[MLflow](https://qiita.com/taka_yayoi/items/1a4e82f7e20c56ba4f72)を用いることで、フレームワークを用いたエクスペリメントを自動で追跡し、ラン(トレーニング)ごとのパラメータ、結果、コードバージョンを記録します。

ワークスペース、プロジェクト間、あるいは特定のノートブックでセキュアに全てのエクスペリメントを共有し、検索、可視化を行うことが可能です。

トレーニング結果のソート、フィルタリングを通じて結果の比較を行い、洗練されたビジュアライゼーションを用いることで、お使いのモデルのベストバージョンを特定することを支援し、特定のトレーニングの適切なバージョンにクイックにアクセスすることが可能となります。

https://qiita.com/taka_yayoi/items/1a4e82f7e20c56ba4f72

## 大規模なオペレーションへの移行

![](https://databricks.com/wp-content/uploads/2020/04/Data-Scince-us-case08-min.jpg)

データ変換、モデル構築、最新結果の共有を自動実行するようにノートブックをスケジューリングすることができます。

アラートを設定し、モニタリング、トラブルシュートを容易にするために監査ログにクイックにアクセスすることができます。

https://qiita.com/taka_yayoi/items/b3275a1983c51a8bbe1a

# お客様事例

## 在庫管理で数百万ドルを節約

Shellにおいては、自身の設備の破損に備えるためスペアパーツの在庫管理を行なっていますが、これを最適管理するためにグローバルでデータサイエンスを活用し、10億ドルのコスト削減を実現しています。

<iframe width="560" height="315" src="https://www.youtube.com/embed/f_6Sn13NIEU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

https://qiita.com/taka_yayoi/items/13b59b8d450360d626b8

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)