Functietabellen delen in werkruimten

Azure Databricks biedt ondersteuning voor het delen van functietabellen in meerdere werkruimten. Vanuit uw eigen werkruimte kunt u bijvoorbeeld een functietabel maken, schrijven naar of lezen in een gecentraliseerd functie-opslag. Dit is handig wanneer meerdere teams toegang delen tot functietabellen of wanneer uw organisatie meerdere werkruimten heeft voor het afhandelen van verschillende fasen van de ontwikkeling.

Voor een gecentraliseerd functie-store raadt Databricks u aan één werkruimte aan te wijzen om alle metagegevens van de functieopslag op te slaan en accounts te maken voor elke gebruiker die toegang tot de functieopslag nodig heeft.

Als uw teams ook modellen delen in werkruimten,kunt u ervoor kiezen om dezelfde gecentraliseerde werkruimte te gebruiken voor zowel functietabellen als modellen, of u kunt verschillende gecentraliseerde werkruimten opgeven voor elke werkruimte.

Werkruimten voor meerdere functieopslag

Toegang tot de gecentraliseerde functieopslag wordt beheerd door tokens. Elke gebruiker of elk script dat toegang nodig heeft, maakt een persoonlijk toegangtoken in het gecentraliseerde functie-opslag en kopieert dat token naar de geheime manager van de lokale werkruimte. Elke API-aanvraag die wordt verzonden naar de werkruimte voor gecentraliseerde functieopslag moet het toegangtoken bevatten; De Feature Store-client biedt een eenvoudig mechanisme om de geheimen op te geven die moeten worden gebruikt bij het uitvoeren van bewerkingen tussen werkruimten.

Vereisten

Voor het gebruik van een functieopslag in werkruimten is Databricks Runtime 9.0 ML of hoger vereist. Alle werkruimten moeten zich in dezelfde regio hebben.

Het API-token voor een extern register instellen

  1. Maak in de werkruimte voor de functieopslag een toegangstoken.
  2. Maak in de lokale werkruimte geheimen voor het opslaan van het toegangsteken en de gegevens van de externe werkruimte:
    1. Maak een geheim bereik: databricks secrets create-scope --scope <scope> .
    2. Kies een unieke naam voor de doelwerkruimte, die hier wordt weergegeven als <prefix> . Maak vervolgens drie geheimen met de opgegeven sleutelnamen:
      • databricks secrets put --scope <scope> --key <prefix>-host : Voer de hostnaam van de werkruimte in het functie-winkelgebied in met behulp van de regionale URL van de werkruimte. U kunt bijvoorbeeld https://westus.azuredatabricks.net/ weergeven in plaats van https://adb-5555555555555555.19.azuredatabricks.net/. Als u de regionale URL wilt controleren, kunt u uitvoeren mlflow.utils.databricks_utils.get_webapp_url() in een notebook.
      • databricks secrets put --scope <scope> --key <prefix>-token : Voer het toegangstoken uit de werkruimte voor de functieopslag in.
      • databricks secrets put --scope <scope> --key <prefix>-workspace-id : Voer de werkruimte-id voor de werkruimte voor het functie-winkelgebied in die u databricks secrets put --scope <scope> --key <prefix>-workspace-id van een pagina.

Notitie

Mogelijk wilt u het geheime bereik delen met andere gebruikers, omdat er een limiet geldt voor het aantal geheime scopes per werkruimte.

Een extern functie-store opgeven

Op basis van het geheime bereik en het naam voorvoegsel dat u hebt gemaakt voor de werkruimte van het externe functie-winkel, kunt u een functieopslag-URI van het formulier maken:

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

Geef vervolgens expliciet de URI op wanneer u een FeatureStoreClient instantieert:

fs = FeatureStoreClient(feature_store_uri=feature_store_uri)

Een functietabel maken in het externe functie-store

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

Zie Voorbeeldnotenote voor voorbeelden van andere methoden voor functieopslag.

Een functietabel uit het externe functie-store gebruiken

U kunt een functietabel in het externe functie-store lezen met de FeatureStoreClient.read_table methode door eerst de in te feature_store_uri stellen:

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

Andere helpermethoden voor toegang tot de functietabel worden ook ondersteund:

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

Een extern modelregister gebruiken

Naast het opgeven van een externe functie store URI, kunt u ook een externe model register-URI voor het delen van modellen in werkruimten opgeven.

Als u een extern modelregister wilt opgeven voor modelregistratie of score, kunt u een modelregister-URI gebruiken om een FeatureStoreClient te instanteren.

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

Met en kunt u een model trainen met behulp van een lokale of externe functietabel en het model vervolgens registreren in een lokaal of feature_store_urimodel_registry_uri extern modelregister.

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

Voorbeeld van notebook

Voorbeeldnotenote over gecentraliseerde functieopslag

Notebook downloaden