Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du konfigurerar åtkomst till externa och privata resurser från modell som betjänar slutpunkter. Modellservern stöder miljövariabler för oformaterad text och hemligheterbaserade miljövariabler med databrickshemligheter.
Krav
För hemligheter baserade på miljövariabler,
- Slutpunktens skapare måste ha LÄS-åtkomst till De Databricks-hemligheter som refereras i konfigurationerna.
- Du måste lagra autentiseringsuppgifter som din API-nyckel eller andra token som en Databricks-hemlighet.
Lägga till miljövariabler för oformaterad text
Använd miljövariabler för oformaterad text för att ange variabler som inte behöver döljas. Du kan ange variabler i användargränssnittet för servering, REST API eller SDK när du skapar eller uppdaterar en slutpunkt.
Serveringsgränssnitt
Från användargränssnittet för servering kan du lägga till en miljövariabel i Avancerade konfigurationer:
REST API
Följande är ett exempel på hur du skapar en serverslutpunkt med hjälp av POST /api/2.0/serving-endpoints REST-API:et environment_vars och fältet för att konfigurera miljövariabeln.
{
"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
Följande är ett exempel på hur du skapar en serverslutpunkt med hjälp av WorkspaceClient SDK och fältet environment_vars för att konfigurera miljövariabeln.
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"
}
)
]
)
)
SDK för MLflow-distributioner
Följande är ett exempel på hur du skapar en serverslutpunkt med hjälp av Mlflow Deployments SDK och environment_vars fältet för att konfigurera miljövariabeln.
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"
}
}
]
}
)
Loggfunktionssökning DataFrames till slutsatsdragningstabeller
Om du har inferenstabeller aktiverade på slutpunkten kan du logga dataramen för automatisk funktionsökning till den här slutsatstabellen med hjälp av ENABLE_FEATURE_TRACING. Detta kräver MLflow 2.14.0 eller senare.
Ange ENABLE_FEATURE_TRACING som en miljövariabel i servergränssnittet, REST API eller SDK när du skapar eller uppdaterar en slutpunkt.
Serveringsgränssnitt
- I Avancerade konfigurationer väljer du ** + Lägg till miljövariabler**.
- Ange
ENABLE_FEATURE_TRACINGsom miljönamn. - I fältet till höger, skriv
true.
REST API
Följande är ett exempel för att skapa en serverslutpunkt med hjälp av POST /api/2.0/serving-endpoints REST-API:et environment_vars och fältet för att konfigurera ENABLE_FEATURE_TRACING miljövariabeln.
{
"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
Följande är ett exempel på hur du skapar en serverslutpunkt med hjälp av WorkspaceClient SDK och environment_vars fältet för att konfigurera ENABLE_FEATURE_TRACING miljövariabeln.
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"
}
)
]
)
)
SDK för MLflow-distributioner
Följande är ett exempel för att skapa en serverslutpunkt med hjälp av Mlflow Deployments SDK och environment_vars fältet för att konfigurera ENABLE_FEATURE_TRACING miljövariabeln.
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"
}
}
]
}
)
Lägga till hemligheter baserade på miljövariabler
Du kan lagra autentiseringsuppgifter på ett säkert sätt med hjälp av Databricks-hemligheter och referera till dessa hemligheter i en modell som betjänar med hjälp av en hemlighetsbaserad miljövariabler. Detta möjliggör att autentiseringsuppgifter kan hämtas från modellbetjäningsslutpunkter vid betjäningstid.
Du kan till exempel skicka autentiseringsuppgifter för att anropa OpenAI och andra externa modellslutpunkter eller komma åt externa lagringsplatser för data direkt från modellservern.
Databricks rekommenderar den här funktionen för att distribuera OpenAI - och LangChain MLflow-modellsmaker till servering. Det gäller även för andra SaaS-modeller som kräver autentiseringsuppgifter med insikten att åtkomstmönstret baseras på användning av miljövariabler och API-nycklar och token.
Steg 1: Skapa ett hemligt omfång
Under modellservering hämtas hemligheterna från Databricks-hemligheter av hemlighetens omfång och nyckel. Dessa tilldelas de hemliga miljövariabelnamnen som kan användas i modellen.
Skapa först ett hemligt omfång. Se Hantera hemliga omfång.
Följande är CLI-kommandon:
databricks secrets create-scope my_secret_scope
Du kan sedan lägga till din hemlighet i ett önskat hemligt omfång och nyckel enligt nedan:
databricks secrets put-secret my_secret_scope my_secret_key
Den hemliga informationen och namnet på miljövariabeln kan sedan skickas till slutpunktskonfigurationen när slutpunkten skapas eller som en uppdatering av konfigurationen av en befintlig slutpunkt.
Steg 2: Lägga till hemliga omfång i slutpunktskonfigurationen
Du kan lägga till det hemliga omfånget i en miljövariabel och skicka variabeln till slutpunkten när slutpunkten skapas eller konfigurationsuppdateringar skapas. Se Skapa anpassade modell som betjänar slutpunkter.
Serveringsgränssnitt
Från användargränssnittet för servering kan du lägga till en miljövariabel i Avancerade konfigurationer. Den hemlighetsbaserade miljövariabeln måste anges med hjälp av följande syntax: {{secrets/scope/key}}. Annars betraktas miljövariabeln som en miljövariabel för oformaterad text.
REST API
Följande är ett exempel på hur du skapar en serverslutpunkt med hjälp av REST-API:et. Under modellserverns slutpunktsgenerering och konfigurationsuppdateringar kan du tillhandahålla en lista med specifikationer för hemliga miljövariabler för varje hanterad modell i API-begäran med hjälp av environment_vars fältet.
I följande exempel tilldelas värdet från hemligheten som skapades i den angivna koden till miljövariabeln OPENAI_API_KEY.
{
"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}}"
}
}
]
}
}
Du kan också uppdatera en serverslutpunkt, som i följande PUT /api/2.0/serving-endpoints/{name}/config REST API-exempel:
{
"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
Följande är ett exempel för att skapa en serverslutpunkt med hjälp av WorkspaceClient SDK. Under modellserverns slutpunktsgenerering och konfigurationsuppdateringar kan du tillhandahålla en lista med specifikationer för hemliga miljövariabler för varje hanterad modell i API-begäran med hjälp av environment_vars fältet.
I följande exempel tilldelas värdet från hemligheten som skapades i den angivna koden till miljövariabeln OPENAI_API_KEY.
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}}"
}
)
]
)
)
SDK för MLflow-distributioner
Följande är ett exempel på hur du skapar en serverslutpunkt med hjälp av Mlflow Deployments SDK. Under modellserverns slutpunktsgenerering och konfigurationsuppdateringar kan du tillhandahålla en lista med specifikationer för hemliga miljövariabler för varje hanterad modell i API-begäran med hjälp av environment_vars fältet.
I följande exempel tilldelas värdet från hemligheten som skapades i den angivna koden till miljövariabeln OPENAI_API_KEY.
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}}"
}
}
]
}
)
När slutpunkten har skapats eller uppdaterats hämtar modellen som betjänar den hemliga nyckeln automatiskt från databrickshemlighetsomfånget och fyller i miljövariabeln som modellens slutsatsdragningskod ska använda.
Notebook-exempel
I följande notebook-fil finns ett exempel på hur du konfigurerar en OpenAI API-nyckel för en LangChain Retrieval QA-kedja som distribueras bakom modellen som betjänar slutpunkter med hemliga miljövariabler.