Share via


Condividere tabelle delle funzionalità tra aree di lavoro (legacy)

Importante

  • Questa documentazione è stata ritirata e potrebbe non essere aggiornata.
  • Databricks consiglia di usare Progettazione funzionalità in Unity Catalog per condividere tabelle delle funzionalità tra aree di lavoro. L'approccio in questo articolo è deprecato.

Azure Databricks supporta la condivisione di tabelle delle funzionalità tra più aree di lavoro. Ad esempio, dalla propria area di lavoro è possibile creare, scrivere o leggere da una tabella delle funzionalità in un archivio funzionalità centralizzato. Ciò è utile quando più team condividono l'accesso alle tabelle delle funzionalità o quando l'organizzazione ha più aree di lavoro per gestire diverse fasi di sviluppo.

Per un archivio funzionalità centralizzato, Databricks consiglia di designare una singola area di lavoro per archiviare tutti i metadati dell'archivio funzionalità e creare account per ogni utente che deve accedere all'archivio funzionalità.

Se i team condividono anche modelli tra aree di lavoro, è possibile scegliere di dedicare la stessa area di lavoro centralizzata sia per le tabelle delle funzionalità che per i modelli oppure è possibile specificare aree di lavoro centralizzate diverse per ognuna.

Più aree di lavoro dell'archivio funzionalità

L'accesso all'archivio funzionalità centralizzato è controllato dai token. Ogni utente o script che richiede l'accesso crea un token di accesso personale nell'archivio funzionalità centralizzato e copia tale token nel gestore segreto dell'area di lavoro locale. Ogni richiesta API inviata all'area di lavoro centralizzata dell'archivio funzionalità deve includere il token di accesso; Il client di Feature Store offre un meccanismo semplice per specificare i segreti da usare durante l'esecuzione di operazioni tra aree di lavoro.

Nota

Come procedura consigliata per la sicurezza, quando si esegue l'autenticazione con strumenti automatizzati, sistemi, script e app, Databricks consiglia di usare token di accesso personali appartenenti alle entità servizio anziché agli utenti dell'area di lavoro. Per creare token per le entità servizio, vedere Gestire i token per un'entità servizio.

Requisiti

L'uso di un archivio funzionalità tra aree di lavoro richiede:

  • Client di Feature Store v0.3.6 e versioni successive.
  • Entrambe le aree di lavoro devono avere accesso ai dati delle funzionalità non elaborate. Devono condividere lo stesso metastore Hive esterno e avere accesso alla stessa risorsa di archiviazione DBFS.
  • Se gli elenchi di accesso IP sono abilitati, gli indirizzi IP dell'area di lavoro devono trovarsi in elenchi di accesso.

Configurare il token API per un registro remoto

In questa sezione "Workspace B" si riferisce all'area di lavoro centralizzata o remota dell'archivio funzionalità.

  1. Nell'area di lavoro B creare un token di accesso.
  2. Nell'area di lavoro locale creare segreti per archiviare il token di accesso e le informazioni sull'area di lavoro B:
    1. Creare un ambito segreto: databricks secrets create-scope --scope <scope>.
    2. Selezionare un identificatore univoco per l'area di lavoro B, illustrato qui come <prefix>. Creare quindi tre segreti con i nomi di chiave specificati:
      • databricks secrets put --scope <scope> --key <prefix>-host : immettere il nome host dell'area di lavoro B. Usare i comandi Python seguenti per ottenere il nome host di un'area di lavoro:

        import mlflow
        
        host_url = mlflow.utils.databricks_utils.get_webapp_url()
        host_url
        
      • databricks secrets put --scope <scope> --key <prefix>-token : immettere il token di accesso dall'area di lavoro B.

      • databricks secrets put --scope <scope> --key <prefix>-workspace-id : immettere l'ID dell'area di lavoro per l'area di lavoro B, disponibile nell'URL di qualsiasi pagina.

Specificare un archivio funzionalità remoto

In base all'ambito del segreto e al prefisso del nome creato per l'area di lavoro dell'archivio delle funzionalità remote, è possibile creare un URI dell'archivio funzionalità del modulo:

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

Specificare quindi l'URI in modo esplicito quando si crea un'istanza di FeatureStoreClient:

fs = FeatureStoreClient(feature_store_uri=feature_store_uri)

Creare un database per le tabelle delle funzionalità nel percorso DBFS condiviso

Prima di creare tabelle delle funzionalità nell'archivio delle funzionalità remote, è necessario creare un database per archiviarle. Il database deve esistere nel percorso DBFS condiviso.

Ad esempio, per creare un database recommender nel percorso /mnt/sharedcondiviso, usare il comando seguente:

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

Creare una tabella delle funzionalità nell'archivio delle funzionalità remote

L'API per creare una tabella delle funzionalità in un archivio funzionalità remoto dipende dalla versione del runtime di Databricks in uso.

V0.3.6 e versioni successive

Usare l'API FeatureStoreClient.create_table :

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

V0.3.5 e versioni successive

Usare l'API FeatureStoreClient.create_feature_table :

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

Per esempi di altri metodi di Feature Store, vedere Esempio di notebook: Condividere tabelle delle funzionalità tra aree di lavoro.

Usare una tabella delle funzionalità dall'archivio delle funzionalità remote

È possibile leggere una tabella delle funzionalità nell'archivio delle funzionalità remote con il FeatureStoreClient.read_table metodo impostando prima di feature_store_uritutto :

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

Sono supportati anche altri metodi helper per l'accesso alla tabella delle funzionalità:

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

Usare un registro modelli remoti

Oltre a specificare un URI dell'archivio funzionalità remoto, è anche possibile specificare un URI del Registro di sistema del modello remoto per condividere i modelli tra aree di lavoro.

Per specificare un registro modelli remoto per la registrazione o l'assegnazione dei punteggi del modello, è possibile usare un URI del Registro di sistema del modello per creare un'istanza di 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"
)

Usando feature_store_uri e model_registry_uri, è possibile eseguire il training di un modello usando qualsiasi tabella delle funzionalità locale o remota e quindi registrare il modello in qualsiasi registro modelli locale o remoto.

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

Esempio di notebook: Condividere tabelle delle funzionalità tra aree di lavoro

Il notebook seguente illustra come usare un archivio funzionalità centralizzato.

Notebook di esempio di Archivio funzionalità centralizzato

Ottenere il notebook