メインコンテンツまでスキップ

Identify 特徴量テーブル across workspace (legacy)

important
  • このドキュメントは廃止されており、更新されない可能性があります。
  • Databricks では、Unity Catalogでの特徴量エンジニアリングを使用して、ワークスペース間で特徴量テーブルを共有することをお勧めします。この記事のアプローチは非推奨です。

Databricks では、複数のワークスペース間での特徴量テーブルの共有がサポートされています。 たとえば、独自のワークスペースから、一元化された Feature Storeの特徴量テーブルを作成、書き込み、または読み取ることができます。 これは、複数のチームが特徴量テーブルへのアクセスを共有する場合や、組織に開発のさまざまな段階を処理するための複数のワークスペースがある場合に便利です。

一元化された機能ストアの場合、Databricks では、すべての機能ストアのメタデータを格納する 1 つのワークスペースを指定し、機能ストアにアクセスする必要があるユーザーごとにアカウントを作成することをお勧めします。

チームが ワークスペース間でモデルを共有している場合は、特徴量テーブルとモデルの両方に同じ集中ワークスペースを割り当てるか、それぞれに異なる集中ワークスペースを指定することもできます。

複数のフィーチャーストアワークスペース

一元化された機能ストアへのアクセスは、トークンによって制御されます。 アクセスが必要な各ユーザーまたはスクリプトは、一元化された機能ストアに 個人用アクセス トークンを作成し 、そのトークンをローカル ワークスペースのシークレット マネージャーにコピーします。 一元化されたフィーチャーストアワークスペースに送信される各APIリクエストには、アクセストークンが含まれている必要があります。Feature Store クライアントは、クロスワークスペース操作を実行するときに使用するシークレットを指定する簡単なメカニズムを提供します。

注記

自動化されたツール、システム、スクリプト、アプリで認証する際のセキュリティのベストプラクティスとして、Databricks では OAuth トークンを使用することをお勧めします。

personal access token authentication を使用する場合、 Databricks では、ワークスペース ユーザーではなく 、サービスプリンシパル に属する personal access token を使用することをお勧めします。 サービスプリンシパルのトークンを作成するには、「 サービスプリンシパルのトークンの管理」を参照してください。

必要条件

ワークスペース間でフィーチャーストアを使用するには、次のものが必要です。

  • Feature Store クライアント v0.3.6 以降。
  • 両方のワークスペースが生の特徴データにアクセスできる必要があります。 同じ 外部 Hive metastore を共有し、同じ DBFS ストレージにアクセスできる必要があります。
  • IP アクセスリストが有効になっている場合は、ワークスペースの IP アドレスがアクセスリストに含まれている必要があります。

リモートレジストリの API トークンを設定する

このセクションでは、「ワークスペース B」は、集中型またはリモートのフィーチャー ストア ワークスペースを指します。

  1. ワークスペース B で、 アクセス トークンを作成します

  2. ローカル ワークスペースで、アクセス トークンを格納するシークレットとワークスペース B に関する情報 を作成します

    1. シークレットスコープを作成します: databricks secrets create-scope --scope <scope>

    2. ワークスペース B の一意の識別子を選択します(ここでは <prefix>と表示されています)。 次に、指定したキー名で 3 つのシークレット を作成します

      • databricks secrets put --scope <scope> --key <prefix>-host : ワークスペース B のホスト名を入力します。次の Python コマンドを使用して、ワークスペースのホスト名を取得します。
      Python
      import mlflow

      host_url = mlflow.utils.databricks_utils.get_webapp_url()
      host_url
      • databricks secrets put --scope <scope> --key <prefix>-token : ワークスペース B からのアクセス トークンを入力します。

      • databricks secrets put --scope <scope> --key <prefix>-workspace-id : 任意のページの URL にある ワークスペース B のワークスペース ID を入力します。

注記

ワークスペースあたりのシークレットスコープの数には制限 があるため、シークレットスコープ を他のユーザーと共有したい場合があります。

リモート フィーチャ ストアの指定

リモート機能ストアワークスペース用に作成したシークレットスコープと名前プレフィックスに基づいて、次の形式の機能ストアURIを構築できます。

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

次に、 FeatureStoreClientをインスタンス化するときに URI を明示的に指定します。

Python
fs = FeatureStoreClient(feature_store_uri=feature_store_uri)

共有 DBFS 場所に特徴量テーブルのデータベースを作成します

リモート Feature Storeに特徴量テーブルを作成する前に、特徴量テーブルを格納するデータベースを作成する必要があります。 データベースは、共有 DBFS の場所に存在している必要があります。

たとえば、共有ロケーション/mnt/sharedにデータベースrecommenderを作成するには、次のコマンドを使用します。

%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'

リモート特徴量テーブルをリモート特徴量ストアに作成する

リモート Feature Store に特徴量テーブルを作成する API は、使用している Databricks ランタイムのバージョンによって異なります。

Use the 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'
)

その他の Feature Store メソッドの例については、ノートブックの例 : ワークスペース間で特徴量テーブルを共有するを参照してください。

リモート・フィーチャー・ストアの特徴量テーブルを使用

リモート 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 v0.3.5 and below
fs.get_table() # in v0.3.6 and above
fs.write_table()
fs.publish_table()
fs.create_training_set()

リモート モデルレジストリを使用する

リモート フィーチャ ストア URI を指定するだけでなく、リモート モデルレジストリ URI を指定して 、ワークスペース間でモデルを共有することもできます。

モデルのログ記録またはスコアリング用にリモート モデルレジストリを指定するには、モデルレジストリ URI を使用して FeatureStoreClient をインスタンス化します。

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>'
)

ノートブック example: Share 特徴量テーブル across ワークスペース

次のノートブックは、一元化された機能ストアを操作する方法を示しています。

一元化された Feature Store のサンプル ノートブック

Open notebook in new tab