Abilitare le tabelle di inferenza nei modelli che servono gli endpoint usando l'API
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Questo articolo illustra come usare l'API Databricks per abilitare le tabelle di inferenza per un endpoint di gestione del modello. Per informazioni generali sull'uso delle tabelle di inferenza, tra cui come abilitarle usando l'interfaccia utente di Databricks, vedere Tabelle di inferenza per il monitoraggio e il debug dei modelli.
È possibile abilitare le tabelle di inferenza quando si crea un nuovo endpoint o in un endpoint esistente. Databricks consiglia di creare l'endpoint con un'entità servizio in modo che la tabella di inferenza non sia interessata se l'utente che ha creato l'endpoint viene rimosso dall'area di lavoro.
Il proprietario delle tabelle di inferenza è l'utente che ha creato l'endpoint. Tutti gli elenchi di controllo di accesso (ACL) nella tabella seguono le autorizzazioni standard di Unity Catalog e possono essere modificati dal proprietario della tabella.
Fabbisogno
- L'area di lavoro deve avere Unity Catalog abilitato.
- Sia l'autore dell'endpoint che il modificatore devono disporre dell'autorizzazione Gestisci per l'endpoint. Consultare Elenchi di controllo di accesso.
- Sia l'autore dell'endpoint che il modificatore devono avere le seguenti autorizzazioni in Unity Catalog:
USE CATALOG
autorizzazioni per il catalogo specificato.USE SCHEMA
autorizzazioni per lo schema specificato.CREATE TABLE
autorizzazioni nello schema.
Abilitare le tabelle di inferenza in fase di creazione dell'endpoint usando l'API
È possibile abilitare le tabelle di inferenza per un endpoint durante la creazione dell'endpoint usando l'API. Per istruzioni sulla creazione di un endpoint, vedere Creare endpoint di gestione di modelli personalizzati.
Nell'API il corpo della richiesta deve auto_capture_config
specificare:
- Catalogo unity: stringa che rappresenta il catalogo per archiviare la tabella
- Schema del catalogo Unity: stringa che rappresenta lo schema per archiviare la tabella
- (facoltativo) prefisso di tabella: stringa usata come prefisso per il nome della tabella di inferenza. Se non viene specificato, viene usato il nome dell'endpoint.
- (facoltativo) abilitato: valore booleano usato per abilitare o disabilitare le tabelle di inferenza. Questo valore è true per impostazione predefinita.
Dopo aver specificato un catalogo, uno schema e facoltativamente un prefisso di tabella, viene creata una tabella in <catalog>.<schema>.<table_prefix>_payload
. Questa tabella crea automaticamente una tabella gestita del catalogo Unity. Il proprietario della tabella è l'utente che crea l'endpoint.
Nota
La specifica di una tabella esistente non è supportata perché la tabella di inferenza viene sempre creata automaticamente durante la creazione dell'endpoint o gli aggiornamenti degli endpoint.
Avviso
La tabella di inferenza potrebbe essere danneggiata se si esegue una delle seguenti operazioni:
- Modificare lo schema di tabella.
- Modificare il nome della tabella.
- Eliminare la tabella.
- Perdere le autorizzazioni a Unity Catalog allo schema.
In questo caso, lo auto_capture_config
stato dell'endpoint mostra uno FAILED
stato per la tabella del payload. In questo caso, è necessario creare un nuovo endpoint per continuare a usare le tabelle di inferenza.
Nell'esempio seguente viene illustrato come abilitare le tabelle di inferenza durante la creazione dell'endpoint.
POST /api/2.0/serving-endpoints
{
"name": "feed-ads",
"config":
{
"served_entities": [
{
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config":
{
"catalog_name": "ml",
"schema_name": "ads",
"table_name_prefix": "feed-ads-prod"
}
}
}
La risposta ha un aspetto simile al seguente:
{
"name": "feed-ads",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "NOT_READY",
"config_update": "IN_PROGRESS"
},
"pending_config": {
"start_time": 1666718879000,
"served_entities": [
{
"name": "ads1-1",
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true,
"state": {
"deployment": "DEPLOYMENT_CREATING",
"deployment_state_message": "Creating"
},
"creator": "customer@example.com",
"creation_timestamp": 1666829055000
}
],
"config_version": 1,
"traffic_config": {
"routes": [
{
"served_model_name": "ads1-1",
"traffic_percentage": 100
}
]
},
"auto_capture_config": {
"catalog_name": "ml",
"schema_name": "ads",
"table_name_prefix": "feed-ads-prod",
"state": {
"payload_table": {
"name": "feed-ads-prod_payload"
}
},
"enabled": true
}
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
Dopo aver abilitato la registrazione alle tabelle di inferenza, attendere che l'endpoint sia pronto. È quindi possibile iniziare a chiamarlo.
Dopo aver creato una tabella di inferenza, l'evoluzione dello schema e l'aggiunta di dati devono essere gestiti dal sistema.
Le operazioni seguenti non influiscono sull'integrità della tabella:
- Esecuzione di OPTIMIZE, ANALYZE e VACUUM sulla tabella.
- Eliminazione di dati inutilizzati obsoleti.
Se non si specifica un , auto_capture_config
per impostazione predefinita viene usata di nuovo la configurazione delle impostazioni della versione di configurazione precedente. Ad esempio, se le tabelle di inferenza erano già abilitate, le stesse impostazioni vengono usate nell'aggiornamento dell'endpoint successivo o se le tabelle di inferenza sono state disabilitate, continua a essere disabilitato.
{
"served_entities": [
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"auto_capture_config": {
"enabled": false
}
}
Abilitare le tabelle di inferenza in un endpoint esistente usando l'API
È anche possibile abilitare le tabelle di inferenza in un endpoint esistente usando l'API. Dopo aver abilitato le tabelle di inferenza, continuare a specificare lo stesso auto_capture_config
corpo nelle chiamate API degli endpoint di aggiornamento future per continuare a usare le tabelle di inferenza.
Nota
La modifica del percorso della tabella dopo l'abilitazione delle tabelle di inferenza non è supportata.
PUT /api/2.0/serving-endpoints/{name}/config
{
"served_entities": [
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":{
"routes": [
{
"served_model_name":"current",
"traffic_percentage":"50"
},
{
"served_model_name":"challenger",
"traffic_percentage":"50"
}
]
},
"auto_capture_config":{
"catalog_name": "catalog",
"schema_name": "schema",
"table_name_prefix": "my-endpoint"
}
}
Disabilitare le tabelle di inferenza
Quando si disabilitano le tabelle di inferenza, non è necessario specificare il prefisso di catalogo, schema o tabella. L'unico campo obbligatorio è enabled: false
.
POST /api/2.0/serving-endpoints
{
"name": "feed-ads",
"config":{
"served_entities": [
{
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config":{
"enabled": false
}
}
}
Per riabilitare una tabella di inferenza disabilitata, seguire le istruzioni in Abilitare le tabelle di inferenza in un endpoint esistente. È possibile utilizzare la stessa tabella o specificare una nuova tabella.
Passaggi successivi
Dopo aver abilitato le tabelle di inferenza, è possibile monitorare i modelli serviti nel modello che gestisce l'endpoint con Databricks Lakehouse Monitoring. Per informazioni dettagliate, vedere Flusso di lavoro: Monitorare le prestazioni del modello usando le tabelle di inferenza.