Feature-Tabellen arbeitsbereichsübergreifend freigeben (veraltet)

Wichtig

  • Diese Dokumentation wurde eingestellt und wird unter Umständen nicht aktualisiert.
  • Databricks empfiehlt die Verwendung des Feature Engineering in Unity Catalog, um Featuretabellen in mehreren Arbeitsbereichen gemeinsam nutzen zu können. Der Ansatz in diesem Artikel ist veraltet.

Azure Databricks unterstützt das Freigeben von Featuretabellen in mehreren Arbeitsbereichen. Beispielsweise können Sie aus Ihrem eigenen Arbeitsbereich eine Featuretabelle in einem zentralisierten Featurespeicher erstellen, in diese schreiben oder aus dieser lesen. Dies ist nützlich, wenn mehrere Teams gleichermaßen auf Featuretabellen zugreifen oder wenn Ihre Organisation über mehrere Arbeitsbereiche für verschiedene Entwicklungsstadien verfügt.

Für einen zentralisierten Featurespeicher empfiehlt Databricks, einen einzelnen Arbeitsbereich zum Speichern aller Metadaten festzulegen und Konten für alle Benutzer*innen zu erstellen, die Zugriff auf den Featurespeicher benötigen.

Wenn Ihre Teams auch Modelle arbeitsbereichsübergreifend freigeben, können Sie denselben zentralisierten Arbeitsbereich sowohl für Featuretabellen als auch für Modelle verwenden, oder Sie können jeweils unterschiedliche zentralisierte Arbeitsbereiche angeben.

Mehrere Feature-Store-Arbeitsbereiche

Der Zugriff auf den zentralisierten Featurespeicher wird durch Token gesteuert. Alle Benutzer*innen oder Skripte, die Zugriff benötigen, erstellen ein persönliches Zugriffstoken im zentralen Feature-Store und kopieren dieses Token in den Secret Manager ihres lokalen Arbeitsbereichs. Jede API-Anforderung, die an den Arbeitsbereich des zentralisierten Featurespeichers gesendet wird, muss das Zugriffstoken enthalten. Der Featurespeicher-Client bietet einen einfachen Mechanismus zum Angeben von Geheimnissen, die bei arbeitsbereichsübergreifenden Vorgängen verwendet werden sollen.

Hinweis

Als bewährte Methode für die Sicherheit empfiehlt Databricks, dass Sie bei der Authentifizierung mit automatisierten Tools, Systemen, Skripten und Anwendungen persönliche Zugriffstoken verwenden, die zu Dienstprinzipalen und nicht zu Benutzern des Arbeitsbereichs gehören. Informationen zum Erstellen von Token für Dienstprinzipale finden Sie unter Verwalten von Token für einen Dienstprinzipal.

Anforderungen

Die Verwendung eines Feature Stores über Arbeitsbereiche hinweg erfordert Folgendes:

  • Feature-Store-Client Version 0.3.6 und höher.
  • Beide Arbeitsbereiche müssen Zugriff auf die rohen Featuredaten haben. Sie müssen denselben externen Hive-Metastore nutzen und über Zugriff auf denselben DBFS-Speicher verfügen.
  • Wenn IP-Zugriffslisten aktiviert sind, müssen sich die IP-Adressen des Arbeitsbereichs in Zugriffslisten befinden.

Einrichten des API-Tokens für eine Remoteregistrierung

In diesem Abschnitt bezieht sich „Arbeitsbereich B“ auf den Arbeitsbereich des zentralen oder Remote-Feature-Stores.

  1. Erstellen Sie ein Zugriffstoken im Arbeitsbereich B.
  2. Erstellen Sie in Ihrem lokalen Arbeitsbereich geheime Schlüssel , um das Zugriffstoken und Informationen zu Arbeitsbereich B zu speichern:
    1. Erstellen Sie einen Geheimnisbereich: databricks secrets create-scope --scope <scope>.
    2. Wählen Sie einen eindeutigen Bezeichner für den Arbeitsbereich B aus (hier angezeigt als <prefix>). Erstellen Sie dann drei geheime Schlüssel mit den angegebenen Schlüsselnamen:
      • databricks secrets put --scope <scope> --key <prefix>-host: Geben Sie den Hostnamen des Arbeitsbereichs B ein. Verwenden Sie die folgenden Python-Befehle, um den Hostnamen eines Arbeitsbereichs abzurufen:

        import mlflow
        
        host_url = mlflow.utils.databricks_utils.get_webapp_url()
        host_url
        
      • databricks secrets put --scope <scope> --key <prefix>-token: Geben Sie das Zugriffstoken aus dem Arbeitsbereich B ein.

      • databricks secrets put --scope <scope> --key <prefix>-workspace-id: Geben Sie die Arbeitsbereichs-ID für den Arbeitsbereich B ein. Diese finden Sie in der URL jeder beliebigen Seite.

Hinweis

Möglicherweise möchten Sie den geheimen Bereich für andere Benutzer freigeben, da die Anzahl der geheimen Bereiche pro Arbeitsbereich begrenzt ist.

Geben Sie einen entfernten Feature-Store an.

Sie können auf der Grundlage des Geheimnisbereichs und des Namenspräfixes, die Sie für den Arbeitsbereich des Remote-Featurespeichers erstellt haben, einen Featurespeicher-URI mit dem folgenden Format erstellen:

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

Geben Sie dann den URI explizit an, wenn Sie einen FeatureStoreClient instanziieren:

fs = FeatureStoreClient(feature_store_uri=feature_store_uri)

Erstellen einer Datenbank für Featuretabellen im freigegebenen DBFS-Speicherort

Bevor Sie Feature-Tabellen im Remote-Feature-Store erstellen, müssen Sie eine Datenbank erstellen, um sie darin zu speichern. Die Datenbank muss am freigegebenen DBFS-Speicherort vorhanden sein.

Wenn Sie beispielsweise eine Datenbank recommender am freigegebenen Speicherort /mnt/sharederstellen möchten, verwenden Sie den folgenden Befehl:

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

Erstellen Sie eine Feature-Tabelle im Remote-Feature-Store

Die API zum Erstellen einer Featuretabelle in einem Remote-Featurespeicher hängt von der verwendeten Version von Databricks Runtime ab.

Version 0.3.6 und höher

Verwenden Sie die FeatureStoreClient.create_table-API:

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

Version 0.3.5 und niedriger

Verwenden Sie die FeatureStoreClient.create_feature_table-API:

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

Beispiele für andere Feature Store-Methoden finden Sie unter Notebookbeispiel: Arbeitsbereichsübergreifendes Freigeben von Featuretabellen.

Verwenden Sie eine Feature-Tabelle aus dem Remote-Feature-Store

Sie können eine Featuretabelle im Remote-Feature-Store mit der Methode FeatureStoreClient.read_table lesen, indem Sie zuerst den feature_store_uri festlegen:

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

Andere Hilfsmethoden für den Zugriff auf die Featuretabelle werden ebenfalls unterstützt:

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

Verwenden Sie ein entferntes Modellregister

Zusätzlich zur Angabe der URI eines Remote-Feature-Stores können Sie auch die URI einer Remote-Modellregistrierung angeben, um Modelle über Arbeitsbereiche hinweg gemeinsam zu nutzen.

Wenn Sie für die Protokollierung oder Auswertung von Modellen eine Remote-Modellregistrierung angeben möchten, können Sie mithilfe eines Modellregistrierungs-URI einen FeatureStoreClient instanziieren.

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

Mit feature_store_uri und model_registry_uri können Sie ein Modell mithilfe einer beliebigen lokalen Featuretabelle oder Remote-Featuretabelle trainieren und dann das Modell in einer beliebigen lokalen Modellregistrierung oder Remote-Modellregistrierung registrieren.

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

Notebookbeispiel: Arbeitsbereichsübergreifendes Freigeben von Featuretabellen

Das folgende Notebook zeigt, wie Sie mit einem zentralen Feature-Store arbeiten.

Beispiel-Notebook für den zentralen Feature Store

Notebook abrufen