0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricksワークスペース間で特徴量テーブルを共有する

Last updated at Posted at 2021-12-21

Share feature tables across workspaces | Databricks on AWS [2021/12/6時点]の翻訳です。

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

Databricksでは、複数のワークスペースでの特徴量テーブルの共有をサポートしています。例えば、お使いのワークスペースから、集中管理された特徴量ストアの特徴量テーブルに対して特徴量の作成、書き込み、読み込みを行うことができます。これは、異なる開発ステージを取り扱う複数のワークスペースをお持ちのケース、あるいは複数のチームで特徴量テーブルへのアクセスを共有する際に有用です。

集中管理された特徴量ストアに関しては、全ての特徴量ストアのメタデータを格納する単一の専用のワークスペースを作成し、特徴量ストアへのアクセスを必要とするユーザーそれぞれにアカウントを作成することをお勧めします。

チームがワークスペース間でモデルを共有している場合には、特徴量とモデルの両方に対して同じ集中管理の専用ワークスペースを選択することも可能です。

集中管理された特徴量ストアへのアクセスはトークンによって制御されます。アクセスを必要とするユーザー、スクリプトは、集中管理されている特徴量ストアでパーソナルアクセストークンを作成し、ローカルのワークスペースのシークレットマネージャにトークンをコピーします。集中管理された特徴量ストアのワークスペースに送信されるAPIリクエストにはアクセストークンを含める必要があります。Feature Storeクライアントは、ワークスペース間のオペレーションを実行する際に簡単にシークレットを指定することができるシンプルなメカニズムを提供しています。

要件

ワークスペースにまたがる特徴量ストアを使用する際には、以下の要件が必要となります。

  • Databricksランタイム10.2 ML以降
  • 両方のワークスペースは生の特徴量データへアクセスできる必要があります。両者は同じHiveメタストアを共有し、同じDBFSストレージにアクセスできる必要があります。
  • IPアクセスリストが有効化されている場合には、ワークスペースのIPアドレスはアクセスリストに記載されている必要があります。

リモートレジストリに対するAPIトークンのセットアップ

  1. 特徴量ストアのワークスペースにおいてアクセストークンを作成します。
  2. ローカルのワークスペースで、アクセストークンとリモートワークスペース情報を格納するためのシークレットを作成します。
    1. シークレットのスコープを作成します: databricks secrets create-scope --scope <scope>
    2. ターゲットのワークスペースのユニークな名称を指定します。ここでは<prefix>となります。そして、指定したキー名を用いて3つのシークレットを作成します。
      • databricks secrets put --scope <scope> --key <prefix>-host: 特徴量ストアのワークスペースのホスト名を指定します。例えば、https://cust-success.cloud.databricks.com/
      • databricks secrets put --scope <scope> --key <prefix>-token: 特徴量ストアワークスペースのアクセストークンを入力します。
      • databricks secrets put --scope <scope> --key <prefix>-workspace-id: 任意のページで取得可能な特徴量ストアのワークスペースIDを入力します。

注意
ワークスペースごとのシークレットスコープの数の制限が存在するので、別のユーザーとシークレットスコープを共有することも可能です。

リモート特徴量ストアの指定

リモート特徴量ストアワークスペース用に作成したシークレットスコープと名前のプレフィクスに基づき、以下のフォーマットで特徴量ストアのURIを構築することができます。

Python
feature_store_uri = f'databricks://<scope>:<prefix>'

そして、FeatureStoreClientのインスタンスを作成する際に明示的にURIを指定します。

Python
fs = FeatureStoreClient(feature_store_uri=feature_store_uri)

リモート特徴量ストアに特徴量ストアを作成

リモート特徴量ストアの特徴量テーブルを作成するAPIは、使用するDatabricksランタイムバージョンに依存します。

Databricksランタイム10.2 ML以降

FeatureStoreClient.create_table APIを使用します。

Python
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_table(
  name='recommender.customer_features',
  primary_keys='customer_id',
  schema=customer_features_df.schema,
  description='Customer-keyed features'
)

Databricksランタイム10.1 ML以前

FeatureStoreClient.create_feature_table APIを使用します。

Python
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_feature_table(
  name='recommender.customer_features',
  keys='customer_id',
  schema=customer_features_df.schema,
  description='Customer-keyed features'
)

その他のFeature Storeメソッドに関しては、サンプルノートブックを参照ください。

リモート特徴量ストアから特徴量テーブルを利用

feature_store_uriを設定したFeatureStoreClient.read_tableメソッドを用いることで、リモートの特徴量ストアの特徴量テーブルを読み込むことができます。

Python
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
  name='recommender.customer_features',
)

特徴量テーブルにアクセスするための他のヘルパーメソッドもサポートされています。

Python
fs.read_table()
fs.get_feature_table() # in Databricks Runtime 10.1 ML and below
fs.get_table() # in Databricks Runtime 10.2 ML and above
fs.write_table()
fs.publish_table()
fs.create_training_set()

リモートモデルレジストリの利用

リモート特徴量ストアのURIを指定することに加え、ワークスペース間でモデルを共有するためにモデルレジストリのURIを指定することも可能です。

モデルのロギングやスコアリングのためにリモートレジストリを指定するために、FeatureStoreClientのインスタンスを作成する際にモデルレジストリのURIを使用することができます。

Python
fs = FeatureStoreClient(model_registry_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.log_model(
    model,
    "recommendation_model",
    flavor=mlflow.sklearn,
    training_set=training_set,
    registered_model_name="recommendation_model"
)

feature_store_urimodel_registry_uriを用いることで、任意のローカルあるいはリモートの特徴量テーブルを用いてモデルをトレーニングし、任意のローカルあるいはリモートのモデルレジストリにモデルを登録することができます。

Python
fs = FeatureStoreClient(
    feature_store_uri=f'databricks://<scope>:<prefix>',
    model_registry_uri=f'databricks://<scope>:<prefix>'
)

サンプルノートブック

Databricks 無料トライアル

Databricks 無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?