Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 le credenziali come una chiave API o altri token come un segreto Databricks.
Aggiungere variabili di ambiente di testo normale
Usare le variabili di ambiente di testo normale per impostare le variabili che non devono essere nascoste. È possibile impostare le variabili nell'interfaccia utente di gestione, nell'API REST o nell'SDK quando si crea o si aggiorna un endpoint.
Interfaccia utente di gestione
Dall'interfaccia utente di servizio è possibile aggiungere una variabile di ambiente nelle configurazioni avanzate:
REST API
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"
}
}
]
}
}
WorkspaceClient SDK
Di seguito è riportato un esempio per la creazione di un endpoint di gestione usando WorkspaceClient SDK e il environment_vars campo per configurare la variabile di ambiente.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ServedEntityInput, EndpointCoreConfigInput, ServingModelWorkloadType
w = WorkspaceClient()
endpoint_name = "example-add-model"
model_name = "main.default.addmodel"
w.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name = model_name,
entity_version = "2",
workload_type = ServingModelWorkloadType("CPU"),
workload_size = "Small",
scale_to_zero_enabled = False,
environment_vars = {
"MY_ENV_VAR": "value_to_be_injected",
"ADS_TOKEN": "abcdefg-1234"
}
)
]
)
)
MLflow Deployments SDK
Di seguito è riportato un esempio per la creazione di un endpoint di gestione usando Mlflow Deployments SDK e il environment_vars campo per configurare la variabile di ambiente.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": True,
"environment_vars": {
"MY_ENV_VAR": "value_to_be_injected",
"ADS_TOKEN": "abcdefg-1234"
}
}
]
}
)
Registra la ricerca delle caratteristiche dei DataFrame nelle tabelle di inferenza
Se nell'endpoint sono abilitate le tabelle di inferenza, è possibile registrare il frame di dati di ricerca automatica delle funzionalità in tale tabella di inferenza usando ENABLE_FEATURE_TRACING. Questo richiede MLflow 2.14.0 o versione successiva.
Impostare ENABLE_FEATURE_TRACING come variabile di ambiente nell'interfaccia utente di servizio, nell'API REST o nell'SDK quando si crea o si aggiorna un endpoint.
Interfaccia utente di gestione
- In Configurazioni avanzate selezionare ** + Aggiungi variabili di ambiente**.
- Digitare
ENABLE_FEATURE_TRACINGcome nome dell'ambiente. - Nel campo a destra digitare
true.
REST API
Di seguito è riportato un esempio per la creazione di un endpoint di gestione usando l'API POST /api/2.0/serving-endpoints REST e il environment_vars campo per configurare la ENABLE_FEATURE_TRACING 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": {
"ENABLE_FEATURE_TRACING": "true"
}
}
]
}
}
WorkspaceClient SDK
Di seguito è riportato un esempio per la creazione di un endpoint di gestione tramite WorkspaceClient SDK e il environment_vars campo per configurare la ENABLE_FEATURE_TRACING variabile di ambiente.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ServedEntityInput, EndpointCoreConfigInput, ServingModelWorkloadType
w = WorkspaceClient()
endpoint_name = "example-add-model"
model_name = "main.default.addmodel"
w.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name = model_name,
entity_version = "2",
workload_type = ServingModelWorkloadType("CPU"),
workload_size = "Small",
scale_to_zero_enabled = False,
environment_vars = {
"ENABLE_FEATURE_TRACING": "true"
}
)
]
)
)
MLflow Deployments SDK
Di seguito è riportato un esempio per la creazione di un endpoint di gestione tramite Mlflow Deployments SDK e il environment_vars campo per configurare la ENABLE_FEATURE_TRACING variabile di ambiente.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": True,
"environment_vars": {
"ENABLE_FEATURE_TRACING": "true"
}
}
]
}
)
Aggiungere variabili di ambiente basate su segreti
È possibile archiviare in modo sicuro le credenziali usando i segreti di Databricks e fare riferimento a tali segreti nel modello che gestisce usando 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'uso 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 usati all'interno del modello.
Creare un ambito dei segreti: . Vedere Gestire gli 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.
Interfaccia utente di gestione
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.
REST API
Di seguito è riportato un esempio per la creazione di un endpoint di gestione tramite l’API REST. Durante il modello che gestisce gli aggiornamenti di configurazione e creazione di endpoint, è possibile fornire un elenco di specifiche di variabili di ambiente segrete per ogni modello servito all'interno della richiesta API usando environment_vars campo.
Nell’esempio seguente viene assegnato il valore del segreto creato nel codice fornito alla variabile OPENAI_API_KEYdi 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 servizio, come nell'esempio di API REST di PUT /api/2.0/serving-endpoints/{name}/config seguente:
{
"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}}"
}
}
]
}
WorkspaceClient SDK
Di seguito è riportato un esempio per la creazione di un endpoint di gestione tramite WorkspaceClient SDK. Durante il modello che gestisce gli aggiornamenti di configurazione e creazione di endpoint, è possibile fornire un elenco di specifiche di variabili di ambiente segrete per ogni modello servito all'interno della richiesta API usando environment_vars campo.
Nell’esempio seguente viene assegnato il valore del segreto creato nel codice fornito alla variabile OPENAI_API_KEYdi ambiente .
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ServedEntityInput, EndpointCoreConfigInput, ServingModelWorkloadType
w = WorkspaceClient()
endpoint_name = "example-add-model"
model_name = "main.default.addmodel"
w.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name = model_name,
entity_version = "2",
workload_type = ServingModelWorkloadType("CPU"),
workload_size = "Small",
scale_to_zero_enabled = False,
environment_vars = {
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
)
]
)
)
MLflow Deployments SDK
Di seguito è riportato un esempio per la creazione di un endpoint di gestione tramite Mlflow Deployments SDK. Durante il modello che gestisce gli aggiornamenti di configurazione e creazione di endpoint, è possibile fornire un elenco di specifiche di variabili di ambiente segrete per ogni modello servito all'interno della richiesta API usando environment_vars campo.
Nell’esempio seguente viene assegnato il valore del segreto creato nel codice fornito alla variabile OPENAI_API_KEYdi ambiente .
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"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.