Dela funktionstabeller mellan arbetsytor

Azure Databricks har stöd för delning av funktionstabeller över flera arbetsytor. Från din egen arbetsyta kan du till exempel skapa, skriva till eller läsa från en funktionstabell i ett centraliserat funktionslager. Detta är användbart när flera team delar åtkomst till funktionstabeller eller när din organisation har flera arbetsytor för att hantera olika utvecklingsstadier.

För ett centraliserat funktionslager rekommenderar Databricks att du anger en enskild arbetsyta för att lagra alla metadata för funktionslagret och skapar konton för varje användare som behöver åtkomst till funktionslagret.

Om dina team också delar modeller mellan arbetsytor kandu välja att dedikera samma centraliserade arbetsyta för både funktionstabeller och modeller, eller så kan du ange olika centraliserade arbetsytor för var och en.

Flera arbetsytor i funktionslagret

Åtkomsten till det centraliserade funktionslagret styrs av token. Varje användare eller skript som behöver åtkomst skapar en personlig åtkomsttoken i det centraliserade funktionslagret och kopierar denna token till den hemliga hanteraren för den lokala arbetsytan. Varje API-begäran som skickas till den centraliserade arbetsytan för funktionslagret måste innehålla åtkomsttoken. Feature Store-klienten tillhandahåller en enkel mekanism för att ange de hemligheter som ska användas när åtgärder mellan arbetsytor utförs.

Krav

Användning av ett funktionslager mellan arbetsytor kräver Databricks Runtime 9.0 ML eller högre. Alla arbetsytor måste finnas i samma region.

Konfigurera API-token för ett fjärrregister

  1. Skapa en åtkomsttoken i arbetsytan för funktionslagret.
  2. På den lokala arbetsytan skapar du hemligheter för att lagra åtkomsttoken och informationen om fjärrarbetsytan:
    1. Skapa ett hemligt omfång: databricks secrets create-scope --scope <scope> .
    2. Välj ett unikt namn för målarbetsytan, som visas här som <prefix> . Skapa sedan tre hemligheter med de angivna nyckelnamnen:
      • databricks secrets put --scope <scope> --key <prefix>-host : Ange värdnamnet för arbetsytan för funktionslagret med arbetsytans regionala URL. Använd till exempel https://westus.azuredatabricks.net/ i stället för https://adb-5555555555555555.19.azuredatabricks.net/. Du kan verifiera den regionala URL:en genom att köra mlflow.utils.databricks_utils.get_webapp_url() i en notebook-fil.
      • databricks secrets put --scope <scope> --key <prefix>-token : Ange åtkomsttoken från arbetsytan för funktionslagret.
      • databricks secrets put --scope <scope> --key <prefix>-workspace-id : Ange arbetsyte-ID:t för arbetsytan i funktionslagret som databricks secrets put --scope <scope> --key <prefix>-workspace-id för valfri sida.

Anteckning

Du kanske vill dela det hemliga omfånget med andra användare, eftersom det finns en gräns för antalet hemlighetsomfång per arbetsyta.

Ange ett fjärrfunktionslager

Baserat på det hemliga omfång och namnprefix som du skapade för arbetsytan för fjärrfunktionslagret kan du skapa en funktionslagrings-URI för formuläret:

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

Ange sedan URI:en explicit när du instansierar en FeatureStoreClient :

fs = FeatureStoreClient(feature_store_uri=feature_store_uri)

Skapa en funktionstabell i fjärrfunktionslagret

Använd FeatureStoreClient.create_feature_table API:et:

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

Exempel på andra metoder för funktionslager finns i Exempelanteckningsbok.

Använda en funktionstabell från fjärrfunktionslagret

Du kan läsa en funktionstabell i fjärrfunktionslagret med metoden FeatureStoreClient.read_table genom att först ange feature_store_uri :

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

Andra hjälpmetoder för att komma åt funktionstabellen stöds också:

fs.read_table()
fs.get_feature_table()
fs.write_table()
fs.publish_table()
fs.create_training_set()

Använda ett fjärrmodellregister

Förutom att ange en fjärrfunktionslagrings-URI kan du även ange en URI för fjärrmodellregistret för att dela modeller mellan arbetsytor.

Om du vill ange ett fjärrmodellregister för modellloggning eller bedömning kan du använda en modellregister-URI för att instansiera en FeatureStoreClient.

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

Med hjälp av och kan du träna en modell med hjälp av valfri lokal tabell eller fjärrfunktionstabell och sedan registrera modellen i ett feature_store_urimodel_registry_uri lokalt eller fjärranslutet modellregister.

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

Exempelnotebook-fil

Centraliserad exempelanteckningsbok för funktionslager

Hämta notebook-fil