Arcuate - Delta SharingとMLflowによる機械学習モデルのやり取り

[Introducing Arcuate \- Machine Learning Model Exchange With Delta Sharing and MLflow \- The Databricks Blog](https://databricks.com/blog/2022/05/24/arcuate-machine-learning-model-exchange-with-delta-sharing-and-mlflow.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

# オープンデータマーケットプレースの構築

この勇ましい新たなデジタルワールドに踏み込んでいく中で、我々はデータが多くの組織にとって中心的なプロダクトになることを信じています。彼らの知識や資産を伝達する手段は、データや分析を通じたものになるでしょう。Data + AI Summit 2021において、Databricksは世界初のセキュアかつスケーラブルなデータ共有のためのオープンプロトコルである[Delta Sharing](https://qiita.com/taka_yayoi/items/f93f1b70fef0f75585be)を発表しました。このシンプルなRESTのセキュアデータ共有プロトコルは、皆様が自身のデータプロダクトの周辺に構築しようとしているデータ利用者、エコシステムにとっての差別化要因となり得ます。
![](https://databricks.com/wp-content/uploads/2022/05/db-92-blog-img-1.png)

[プレビュー](https://databricks.com/product/delta-sharing)のローンチ以降、完全に全ての目的に合致し、全ての人にオープンなデータ共有ソリューションを開発し、コラボレーションするために、業界横断のお客様から多大なるエンゲージメントを目撃しています。すでに、お客様はDelta SharingのREST APIを用いてペタバイトのデータを共有しています。お客様との会話から、機械学習エクスペリメントやモデルのようにテーブルデータ以外にDelta Sharingをどのように拡張できるのかに対して多大なる期待があることを知りました。

# Arcuate - ML向けにDelta Sharingを拡張するDatabricks Labsのプロジェクト

機械学習の財布サイクルを管理する際にスムーズな移行/体験を保証するMLflowのようなプラットフォームは、多くのデータサイエンティストにとって頼りになる選択肢として注目されています。[MLflow](https://mlflow.org/)は、実験、再現性、デプロイメント、中央モデルレジストリを含むMLライフサイクルを管理するために、Databrikcsによって開発されたオープンソースプラットフォームです。

MLflowが普及していることから、Arcuateは機械学習モデルのやり取りを実現するために、Delta Sharingの機能を活用するためにDelta LakeとMLflowとを組み合わせます。

また、Delta Sharingを用いることで、Arcuateはトレーニングパラメーター、モデル精度、アーティファクトなどの他の適切なメタデータも共有できます。

プロジェクトの名前は、広く扇状に広がる川の三角州を意味する[arcuate delta](https://www.brainkart.com/article/Types-of-Delta_33787/)からインスピレーションを得ています。我々はモデル交換を実現することで、デジタルで接続された多くの業界に広く影響を与えるであろうことを信じています。
![](https://databricks.com/wp-content/uploads/2022/05/db-92-blog-img-2.png)

# 動作原理

ArcuateはDatabricksクラスター、あるいはローカルマシンにインストールされるPythonライブラリとして提供されます。直接MLflowとインテグレーションされており、MLflowのエクスペリメントやMlflowモデルをDeltaテーブルに取り込むオプションを提供します。そして、これらのテーブルはDelta Sharing([動作原理](https://delta.io/sharing/))を通じて共有され、受信者は自身のMLflowサーバーにこれらをロードすることができます。

シンプルにするために、Arcuateは提供者と受信者両方に対して2つのセットのAPIを提供します。

- 任意のPythonプログラムで使えるPython API
- ノートブックでSQL構文を提供するIPythonマジック`%arcuate`

エンドツーエンドのワークフローは以下のようになります。

- (Databricksを含む)任意の環境でモデルを実験、トレーニングしMLflowに格納
- Delta Sharingの共有にMLflowエクスペリメントを追加

    ```py:Python
    # export the experiment experiment_name to table_name, and add it to share_name
    export_experiments(experiment_name, table_name, share_name)
    ```

- MLflowモデルをDelta Sharingの共有に追加

    ```py:Python
    # export the model model_name to table_name, and add it to share_name
    export_models(model_name, table_name, share_name)  
    ```

- 受信者はシームレスにMLflowのモデル/エクスペリメントをロード

    ```py:Python
    df = delta_sharing.load_as_pandas(delta_sharing_coordinate)
    
    # import the shared table as experiment_name
    import_experiments(df, experiment_name)
    ```

    ```py:Python
    df = delta_sharing.load_as_pandas(delta_sharing_coordinate)
    
    # import the model
    import_models(df, model_name)
    ```

# ロードマップ

このArcuateのファーストバージョンがまさにスタート地点です。プロジェクトを進めていくにつれて、ダッシュボードや任意のファイルのような他のオブジェクトを共有できるように実装を拡張することができます。我々は、データ共有の将来はオープンであると信じており、他の共有ワークフローにこのアプローチを提供できることに興奮を感じています。

# Arcuateを使ってみる

Delta Sharingを用いることで、かつてないほどオープンなデータ共有プロトコルを手にすることができます。今ではArcuateを組み合わせることで、オープンなMLモデル共有プロトコルを手にすることが可能となっています。

我々は間も無く[Databricks Labs](https://databricks.com/learn/labs)プロジェクトとして、Arcuateをリリースしますので、楽しみにしていてください。オープンソースのDelta Sharingリリースを試す場合には、[delta\.io/sharing](http://delta.io/sharing)の手順に従ってください。あるいは、Databricksのユーザーである場合は、我々のサービスのアップデートに[サインアップ](https://databricks.com/jp/product/unity-catalog)してください。皆様からのフィードバックをお待ちしています！

### Databricks 無料トライアル

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