Configurare l’accesso alle risorse dagli endpoint di gestione dei modelli
Questo articolo descrive come configurare l’accesso alle risorse esterne e private dagli endpoint di gestione dei modelli. Model Serving supporta variabili di ambiente di testo normale e variabili di ambiente basate su segreti utilizzando i segreti di Databricks.
Requisiti
Per le variabili di ambiente basate su segreti,
- L’autore dell'endpoint deve avere accesso in lettura ai segreti di Databricks a cui si fa riferimento nelle configurazioni.
- È necessario archiviare credenziali come la chiave API o altri token come segreto databricks.
Aggiungere variabili di ambiente di testo normale
Utilizzare le variabili di ambiente di testo normale per impostare le variabili che non devono essere nascoste. È possibile impostare le variabili nell’interfaccia utente di servizio o nell’API REST quando si crea o si aggiorna un endpoint.
Dall'interfaccia utente di servizio è possibile aggiungere una variabile di ambiente nelle configurazioni avanzate:
Di seguito è riportato un esempio per la creazione di un endpoint di gestione utilizzando l’API POST /api/2.0/serving-endpoints
REST e il environment_vars
campo per configurare la variabile di ambiente.
{
"name": "endpoint-name",
"config":{
"served_entities": [{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars":{
"TEXT_ENV_VAR_NAME": "plain-text-env-value"
}
}]
}
}
Aggiungere variabili di ambiente basate su segreti
È possibile archiviare in modo sicuro le credenziali utilizzando i segreti di Databricks e fare riferimento a tali segreti nel modello che gestisce utilizzando variabili di ambiente basate su segreti. In questo modo le credenziali possono essere recuperate dal modello che gestisce gli endpoint in fase di gestione.
Ad esempio, è possibile passare le credenziali per chiamare OpenAI e altri endpoint del modello esterno o accedere ai percorsi di archiviazione dei dati esterni direttamente dalla gestione del modello.
Databricks consiglia questa funzionalità per la distribuzione delle versioni del modello OpenAI e LangChain MLflow. È applicabile anche ad altri modelli SaaS che richiedono credenziali per comprendere che il modello di accesso si basa sull’utilizzo di variabili di ambiente e chiavi e token API.
Passaggio 1: Creare un ambito segreto
Durante la gestione del modello, i segreti vengono recuperati dai segreti di Databricks dall’ambito e dalla chiave del segreto. Questi vengono assegnati ai nomi delle variabili di ambiente segrete che possono essere utilizzati all’interno del modello.
Creare un ambito dei segreti: . Vedere Ambiti dei segreti.
Eseguire i comandi seguenti dell’interfaccia della riga di comando di Azure:
databricks secrets create-scope my_secret_scope
È quindi possibile aggiungere il segreto a un ambito e una chiave segreti desiderati, come illustrato di seguito:
databricks secrets put-secret my_secret_scope my_secret_key
Le informazioni segrete e il nome della variabile di ambiente possono quindi essere passati alla configurazione dell’endpoint durante la creazione dell’endpoint o come aggiornamento alla configurazione di un endpoint esistente.
Passaggio 2: Aggiungere ambiti segreti alla configurazione dell’endpoint
È possibile aggiungere l'ambito segreto a una variabile di ambiente e passare tale variabile all’endpoint durante la creazione o gli aggiornamenti della configurazione dell’endpoint. Vedere Creare endpoint di gestione di modelli personalizzati.
Dall’interfaccia utente di servizio è possibile aggiungere una variabile di ambiente in Configurazioni avanzate. La variabile di ambiente basata sui segreti deve essere fornita utilizzando la sintassi seguente: {{secrets/scope/key}}
. In caso contrario, la variabile di ambiente viene considerata una variabile di ambiente di testo normale.
Di seguito è riportato un esempio per la creazione di un endpoint di gestione tramite l’API REST. Durante la gestione dei modelli per la creazione e gli aggiornamenti della configurazione degli endpoint, è possibile fornire un elenco di specifiche di variabili di ambiente segrete per ogni modello servito all’interno della richiesta API utilizzando environment_vars
il campo .
Nell’esempio seguente viene assegnato il valore del segreto creato nel codice fornito alla variabile OPENAI_API_KEY
di ambiente .
{
"name": "endpoint-name",
"config":{
"served_entities": [{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars":{
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}]
}
}
È anche possibile aggiornare un endpoint di gestione, come nell’esempio di API REST seguente PUT /api/2.0/serving-endpoints/{name}/config
:
{
"served_entities": [{
"entity_name": "model-name",
"entity_version": "2",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars":{
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}]
}
Dopo aver creato o aggiornato l’endpoint, il modello che gestisce recupera automaticamente la chiave privata dall’ambito dei segreti di Databricks e popola la variabile di ambiente per il codice di inferenza del modello da utilizzare.
Esempio di Notebook
Vedere il notebook seguente per un esempio di come configurare una chiave API OpenAI per una catena di controllo di recupero LangChain distribuita dietro il modello che gestisce gli endpoint con variabili di ambiente basate su segreti.