Configurare il gateway di intelligenza artificiale nei modelli che servono gli endpoint
Questo articolo illustra come configurare Mosaic AI Gateway in un endpoint di servizio del modello.
Requisiti
- Un'area di lavoro di Databricks in un'area supportata dai modelli esterni.
- Completare i passaggi 1 e 2 di Creare un endpoint di servizio di un modello esterno.
Configurare il gateway di intelligenza artificiale usando l'interfaccia utente
Questa sezione illustra come configurare il gateway di intelligenza artificiale durante la creazione dell'endpoint usando l'interfaccia utente di servizio.
Se si preferisce eseguire questa operazione a livello di codice, vedere l'esempio notebook.
Nella sezione Gateway di IA della pagina di creazione dell'endpoint è possibile configurare singolarmente le caratteristiche del gateway di IA seguenti:
Funzionalità | Abilitazione | Dettagli |
---|---|---|
Monitoraggio dell'utilizzo | Selezionare Abilita rilevamento utilizzo per abilitare il rilevamento e il monitoraggio delle metriche di utilizzo dei dati. | - È necessario che Unity Catalog sia abilitato. - Gli amministratori dell'account devono abilitare lo schema della tabella di sistema di servizio prima di usare le tabelle di sistema, system.serving.endpoint_usage che acquisisce i conteggi dei token per ogni richiesta all'endpoint e system.serving.served_entities che archivia i metadati per ogni modello esterno.- Vedere Schemi della tabella di rilevamento dell'utilizzo - Solo gli amministratori dell'account hanno l'autorizzazione per visualizzare o eseguire query sulla tabella served_entities o sulla tabella endpoint_usage , anche se l'utente che gestisce l'endpoint deve abilitare il rilevamento dell'utilizzo. Vedere Concedere l'accesso alle tabelle di sistema- Il numero di token di input e di output viene stimato come ( text_length +1)/4 se il numero di token non viene restituito dal modello. |
Registrazione del payload | Selezionare Abilita tabelle di inferenza per registrare automaticamente le richieste e le risposte dall'endpoint nelle tabelle Delta gestite da Unity Catalog. | - È necessario avere Unity Catalog abilitato e l'accesso CREATE_TABLE nello schema del catalogo specificato.- Le tabelle di inferenza abilitate dal gateway di intelligenza artificiale hanno uno schema diverso rispetto alle tabelle di inferenza create per la gestione di endpoint che servono modelli personalizzati. Vedere Schema della tabella di inferenza abilitata per il gateway di IA. - I dati di registrazione del payload popolano queste tabelle meno di un'ora dopo l'esecuzione di query sull'endpoint. - I payload maggiori di 1 MB non vengono registrati. - Il payload della risposta aggrega la risposta di tutti i blocchi restituiti. - Lo streaming è supportato. Negli scenari di streaming il payload della risposta aggrega la risposta dei blocchi restituiti. |
Guardrail di IA | Vedere Configurare guardrail di IA nell'interfaccia utente. | - Guardrail impedisce al modello di interagire con contenuto non sicuro e dannoso rilevato negli input e negli output del modello. - Le protezioni di output non sono supportate né per gli incorporamenti di modelli, né per lo streaming. |
Limiti di richieste inviate al bot | È possibile applicare i limiti di frequenza delle richieste per gestire il traffico per l'endpoint in base all'utente e per ogni endpoint | - I limiti di frequenza sono definiti nelle query al minuto (QPM). - Il valore predefinito è Nessun limite per ogni utente e per endpoint. |
instradamento del traffico | Per configurare il routing del traffico nell'endpoint, vedere Gestire più modelli esterni a un endpoint. |
Configurare guardrail di IA nell'interfaccia utente
Nella tabella seguente viene illustrato come configurare guardrail supportati.
Protezione | Abilitazione | Dettagli |
---|---|---|
Sicurezza | Selezionare Sicurezza per abilitare le misure di sicurezza per impedire al modello di interagire con contenuto non sicuro e dannoso. | |
Rilevamento delle informazioni personali | Selezionare Rilevamento PII per rilevare i dati personali, ad esempio nomi, indirizzi, numeri di carta di credito. | |
Argomenti validi | È possibile digitare argomenti direttamente in questo campo. Se sono presenti più voci, assicurarsi di premere invio dopo ogni argomento. In alternativa, è possibile caricare un file .csv o .txt . |
È possibile specificare un massimo di 50 argomenti validi. Ogni argomento non può superare i 100 caratteri |
Parole chiave non valide | È possibile digitare argomenti direttamente in questo campo. Se sono presenti più voci, assicurarsi di premere invio dopo ogni argomento. In alternativa, è possibile caricare un file .csv o .txt . |
È possibile specificare un massimo di 50 parole chiave non valide. La lunghezza di ciascuna chiave non può superare i 100 caratteri. |
Schemi di tabella di rilevamento dell'utilizzo
La tabella del sistema di rilevamento dell'utilizzo system.serving.served_entities
ha lo schema seguente:
Nome colonna | Descrizione | Tipo |
---|---|---|
served_entity_id |
ID univoco dell’entità dell'evento. | STRING |
account_id |
ID dell'account cliente per la condivisione Delta. | STRING |
workspace_id |
ID dell'area di lavoro del cliente dell'endpoint di servizio. | STRING |
created_by |
ID del creatore. | STRING |
endpoint_name |
Nome dell'endpoint dell’endpoint di servizio. | STRING |
endpoint_id |
ID univoco dell'endpoint di servizio. | STRING |
served_entity_name |
Nome dell’entità servita. | STRING |
entity_type |
Tipo dell'entità servita. Può essere FEATURE_SPEC , EXTERNAL_MODEL , FOUNDATION_MODEL o CUSTOM_MODEL |
STRING |
entity_name |
Nome sottostante dell'entità. Diverso da quello served_entity_name che è un nome specificato dall'utente. Ad esempio, entity_name è il nome del modello Unity Catalog. |
STRING |
entity_version |
Versione dell'entità servita. | STRING |
endpoint_config_version |
Versione della configurazione dell'endpoint. | INT |
task |
Tipo di attività. Può essere llm/v1/chat , llm/v1/completions o llm/v1/embeddings . |
STRING |
external_model_config |
Configurazioni per i modelli esterni. Ad esempio, {Provider: OpenAI} |
STRUCT |
foundation_model_config |
Configurazioni per i modelli di base. Ad esempio, {min_provisioned_throughput: 2200, max_provisioned_throughput: 4400} |
STRUCT |
custom_model_config |
Configurazioni per i modelli personalizzati. Ad esempio, { min_concurrency: 0, max_concurrency: 4, compute_type: CPU } |
STRUCT |
feature_spec_config |
Configurazioni per le specifiche delle caratteristiche. Ad esempio, { min_concurrency: 0, max_concurrency: 4, compute_type: CPU } |
STRUCT |
change_time |
Data e ora della modifica per l'entità servita. | TIMESTAMP |
endpoint_delete_time |
Data e ora dell'eliminazione dell'entità. L'endpoint è il contenitore per l'entità servita. Dopo l'eliminazione dell'endpoint, viene eliminata anche l'entità servita. | TIMESTAMP |
La tabella del sistema di rilevamento dell'utilizzo system.serving.endpoint_usage
ha lo schema seguente:
Nome colonna | Descrizione | Tipo |
---|---|---|
account_id |
Numero dell’ID account cliente. | STRING |
workspace_id |
ID dell'area di lavoro del cliente dell'endpoint di servizio. | STRING |
client_request_id |
Identificatore di richiesta fornito dall'utente che può essere specificato nel corpo della richiesta di servizio del modello. | STRING |
databricks_request_id |
Identificatore di richiesta generato da Azure Databricks associato a tutte le richieste di servizio del modello. | STRING |
requester |
ID dell'utente o dell'entità servizio le cui autorizzazioni vengono usate per la richiesta di chiamata dell'endpoint di servizio. | STRING |
status_code |
Codice di stato HTTP restituito dal modello. | INTEGER |
request_time |
La data e l'ora in cui è stata ricevuta la richiesta. | TIMESTAMP |
input_token_count |
Il numero dei token di input. | LONG |
output_token_count |
Il numero dei token di output. | LONG |
input_character_count |
Numero di caratteri della stringa di input o della richiesta. | LONG |
output_character_count |
Numero di caratteri della stringa di output della risposta. | LONG |
usage_context |
Mappa fornita dall'utente contenente gli identificatori dell'utente finale o dell'applicazione del cliente che effettua la chiamata all'endpoint. Si veda Altre informazioni su come definire l'utilizzo con usage_context. | MAP |
request_streaming |
Indica se la richiesta è in modalità streaming. | BOOLEAN |
served_entity_id |
ID univoco usato per creare un join con la tabella delle dimensioni system.serving.served_entities per cercare informazioni sull'endpoint e sull'entità servita. |
STRING |
Definire ulteriormente l'utilizzo con usage_context
Quando si esegue una query su un modello esterno con il rilevamento dell'utilizzo abilitato, è possibile fornire il usage_context
parametro con il tipo Map[String, String]
. Il mapping del contesto di utilizzo viene visualizzato nella tabella di rilevamento dell'utilizzo nella colonna usage_context
. Le dimensioni della usage_context
mappa non possono superare 10 KiB.
Gli amministratori dell'account possono aggregare righe diverse in base al contesto di utilizzo per ottenere informazioni dettagliate e aggiungere queste informazioni alle informazioni nella tabella di registrazione del payload. Ad esempio, è possibile aggiungere end_user_to_charge
a usage_context
per tenere traccia dell'attribuzione dei costi per gli utenti finali.
{
"messages": [
{
"role": "user",
"content": "What is Databricks?"
}
],
"max_tokens": 128,
"usage_context":
{
"use_case": "external",
"project": "project1",
"priority": "high",
"end_user_to_charge": "abcde12345",
"a_b_test_group": "group_a"
}
}
Schema della tabella di inferenza abilitata per il gateway di IA
Le tabelle di inferenza abilitate con il gateway di IA hanno lo schema seguente:
Nome colonna | Descrizione | Tipo |
---|---|---|
request_date |
Data UTC in cui è stata ricevuta la richiesta di servizio del modello. | DATE |
databricks_request_id |
Identificatore di richiesta generato da Azure Databricks associato a tutte le richieste di servizio del modello. | STRING |
client_request_id |
Identificatore di richiesta generato dal client facoltativo che può essere specificato nel corpo della richiesta di servizio del modello. | STRING |
request_time |
La data e l'ora in cui è stata ricevuta la richiesta. | TIMESTAMP |
status_code |
Codice di stato HTTP restituito dal modello. | INT |
sampling_fraction |
Frazione di campionamento utilizzata nel caso in cui la richiesta sia stata campionata. Questo valore è compreso tra 0 e 1, dove 1 indica che è stato incluso il 100% delle richieste in ingresso. | DOUBLE |
execution_duration_ms |
Tempo in millisecondi per il quale il modello ha eseguito l'inferenza. Ciò non include latenze di rete sovraccariche e rappresenta solo il tempo impiegato per generare stime dal modello. | bigint |
request |
Corpo JSON della richiesta grezza inviato all'endpoint di servizio del modello. | STRING |
response |
Corpo JSON della risposta non elaborata e restituito dall'endpoint di gestione del modello. | STRING |
served_entity_id |
ID univoco dell’entità dell'evento. | STRING |
logging_error_codes |
ARRAY | |
requester |
ID dell'utente o dell'entità servizio le cui autorizzazioni vengono usate per la richiesta di chiamata dell'endpoint di servizio. | STRING |
Aggiornare le funzionalità del gateway di IA sugli endpoint
È possibile aggiornare le funzionalità del gateway di IA nei modelli che servono gli endpoint che in precedenza li avevano abilitati e gli endpoint che non lo erano. Gli aggiornamenti alle configurazioni del gateway di IA richiedono circa 20-40 secondi per l’applicazione, ma gli aggiornamenti della limitazione della frequenza possono richiedere fino a 60 secondi.
Di seguito viene illustrato come aggiornare le funzionalità del gateway di IA in un endpoint di servizio del modello usando l'interfaccia utente di servizio.
Nella sezione Gateway della pagina endpoint è possibile visualizzare le caratteristiche abilitate. Per aggiornare queste caratteristiche, fare clic su Modifica gateway di IA.
Esempio di notebook
Il Notebook seguente illustra come abilitare e usare a livello di codice le caratteristiche di Databricks Mosaic AI Gateway per gestire i modelli dai provider. Per informazioni dettagliate sull'API REST, vedere quanto segue: