Konfigurera åtkomst till resurser från slutpunkter för modellservering

Den här artikeln beskriver hur du konfigurerar åtkomst till externa och privata resurser från slutpunkter för modellservering. Model Serving stöder miljövariabler för oformaterad text och hemlighetsbaserade miljövariabler med Databricks secrets.

Krav

För miljövariabler baserade på hemligheter,

  • Den som skapar slutpunkten måste ha läsåtkomst till de Databricks-hemligheter som refereras till 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:

Skapa en modell som betjänar slutpunkten

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

  1. I Avancerade konfigurationer väljer du ** + Lägg till miljövariabler**.
  2. Ange ENABLE_FEATURE_TRACING som miljönamn.
  3. I fältet till höger, skriv true.

Skapa en modell som betjänar slutpunkten

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

Vid modellservering hämtas hemligheterna från Databricks Secrets med hjälp av secret scope och nyckel. Dessa tilldelas de hemliga miljövariabelnamnen som kan användas i modellen.

Skapa först ett hemligt omfång. Se Hantera hemlighetsomfå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 omfånget för hemligheten i en miljövariabel och skicka den variabeln till din slutpunkt när du skapar slutpunkten eller uppdaterar konfigurationen. Se Skapa anpassade slutpunkter för modellservering.

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.

Skapa en modell som betjänar slutpunkten

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.

Konfigurera åtkomst till resurser från anteckningsboken för modellserving-slutpunkter

Hämta anteckningsbok