Erőforrásokhoz való hozzáférés konfigurálása végpontokat kiszolgáló modellből

Ez a cikk azt ismerteti, hogyan konfigurálhatja a külső és a privát erőforrásokhoz való hozzáférést a végpontokat kiszolgáló modellből. A Modellkiszolgáló támogatja az egyszerű szöveges környezeti változókat és a titkos kódokon alapuló környezeti változókat a Databricks titkos kulcsok használatával.

Követelmények

Titkos kódokon alapuló környezeti változók esetén:

  • A végpont létrehozójának olvasási hozzáféréssel kell rendelkeznie a konfigurációkban hivatkozott Databricks-titkos kódokhoz.
  • A hitelesítő adatokat, például az API-kulcsot vagy más jogkivonatokat Databricks-titkos kódként kell tárolnia.

Egyszerű szöveges környezeti változók hozzáadása

Egyszerű szöveges környezeti változókkal olyan változókat állíthat be, amelyeknek nem kell rejtve lenniük. Végpont létrehozásakor vagy frissítésekor változókat állíthat be a kiszolgáló felhasználói felületén, a REST API-ban vagy az SDK-ban.

Felhasználói felület kiszolgálása

A Kiszolgáló felhasználói felületén hozzáadhat egy környezeti változót a Speciális konfigurációkban:

Végpontot kiszolgáló modell létrehozása

REST API

Az alábbi példa bemutatja, hogyan lehet végpontot létrehozni a POST /api/2.0/serving-endpoints REST API és a environment_vars mező segítségével a környezeti változó konfigurálásához.

{
  "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

Az alábbi példa bemutatja, hogyan lehet létrehozni egy szolgáltatáspontot a WorkspaceClient SDK és a environment_vars mező segítségével a környezeti változó konfigurálásához.

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

Az alábbiakban egy példa egy kiszolgálási végpont létrehozására a Mlflow Deployments SDK és a environment_vars mező használatával a környezeti változó konfigurálására.

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"
                }
            }
        ]
    }
)

Naplófunkciók adatkeretek keresése a táblák következtetéséhez

Ha engedélyezve vannak a következtetési táblák a végponton, naplózhatja automatikus funkciókeresési adatkeretét, az adott következtetési táblába ENABLE_FEATURE_TRACING. Ehhez az MLflow 2.14.0-s vagy újabb verziója szükséges.

Állítsa be ENABLE_FEATURE_TRACING környezeti változóként a kiszolgáló felhasználói felületén, a REST API-ban vagy az SDK-ban egy végpont létrehozásakor vagy frissítésekor.

Felhasználói felület kiszolgálása

  1. Speciális konfigurációkterületen válassza a ** + Környezeti változók hozzáadása** lehetőséget.
  2. Írja be a(z) ENABLE_FEATURE_TRACING-t környezetnévként.
  3. A jobbra lévő mezőbe írja be a true.

Végpontot kiszolgáló modell létrehozása

REST API

Az alábbiakban egy példa szerepel a POST /api/2.0/serving-endpoints REST API és a environment_vars mező használatára a ENABLE_FEATURE_TRACING környezeti változó konfigurálására szolgáló végpont létrehozásához.

{
  "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

Az alábbiakban egy példa látható a kiszolgáló végpont létrehozására a WorkspaceClient SDK és a environment_vars mező használatával a ENABLE_FEATURE_TRACING környezeti változó konfigurálásához.

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

Az alábbiakban egy példa a kiszolgálási végpont létrehozására az Mlflow Deployments SDK és a environment_vars mező használatával a ENABLE_FEATURE_TRACING környezeti változó konfigurálásához.

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"
                }
            }
        ]
    }
)

Titkos kódokon alapuló környezeti változók hozzáadása

Biztonságosan tárolhatja a hitelesítő adatokat a Databricks titkos kulcsainak használatával, és hivatkozhat ezekre a titkos kulcsokra a titkos kódokon alapuló környezeti változókat használó modellben. Ez lehetővé teszi a hitelesítő adatok lekérését a végpontokat kiszolgáló modellből a szolgáltatás ideje alatt.

Például hitelesítő adatokat adhat át az OpenAI és más külső modellvégpontok meghívásához, vagy a külső adattárolási helyekhez való hozzáféréshez közvetlenül a modellkiszolálásból.

A Databricks javasolja ezt a funkciót az OpenAI és a LangChain MLflow modellváltozatok kiszolgálására. Más, hitelesítő adatokat igénylő SaaS-modellekre is alkalmazható, azzal a megértéssel, hogy a hozzáférési minta környezeti változókon, API-kulcsokon és jogkivonatokon alapul.

1. lépés: Titkos kulcs hatókörének létrehozása

A modell kiszolgálása során a titkos adatokat a Databricks titkokból egy adott hatókör és kulcs alapján kérjük le. Ezek a titkos környezeti változók neveihez lesznek hozzárendelve, amelyek a modellen belül használhatók.

Először hozzon létre egy titkos hatókört. Lásd: Titkos kódok hatóköreinek kezelése.

A parancssori felület parancsai a következők:


databricks secrets create-scope my_secret_scope

Ezután hozzáadhatja a titkát a kívánt titkos hatókörhöz és kulcshoz az alábbiak szerint:


databricks secrets put-secret my_secret_scope my_secret_key

A titkos információk és a környezeti változó neve ezután átadható a végpont konfigurációjának a végpont létrehozásakor vagy egy meglévő végpont konfigurációjának frissítéseként.

2. lépés: Titkos kulcs hatóköreinek hozzáadása a végpontkonfigurációhoz

A titkos kulcs hatókörét hozzáadhatja egy környezeti változóhoz, és átadhatja a változót a végpontnak a végpont létrehozása vagy konfigurációfrissítései során. Lásd: Végpontokat kiszolgáló egyéni modell létrehozása.

Felhasználói felület kiszolgálása

A Kiszolgáló felhasználói felületén hozzáadhat egy környezeti változót a Speciális konfigurációkban. A titkos kódokon alapuló környezeti változót a következő szintaxissal kell megadni: {{secrets/scope/key}}. Ellenkező esetben a környezeti változó egyszerű szöveges környezeti változónak minősül.

Végpontot kiszolgáló modell létrehozása

REST API

Az alábbi példa bemutatja, hogyan lehet létrehozni egy kiszolgáló végpontot a REST API használatával. A végpontlétrehozási és konfigurációs frissítéseket kiszolgáló modell során az API-kérésben szereplő egyes kiszolgált modellek titkos környezeti változós specifikációinak listáját is megadhatja environment_vars mező használatával.

Az alábbi példa a megadott kódban létrehozott titkos kódból származó értéket rendeli hozzá a környezeti változóhoz 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}}"
        }
      }
    ]
  }
}

Egy kiszolgálóvégpontot is frissíthet, ahogyan az alábbi PUT /api/2.0/serving-endpoints/{name}/config REST API-példában is látható:

{
  "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

Az alábbiakban egy példa a kiszolgáló végpont létrehozására a WorkspaceClient SDK használatával. A végpontlétrehozási és konfigurációs frissítéseket kiszolgáló modell során az API-kérésben szereplő egyes kiszolgált modellek titkos környezeti változós specifikációinak listáját is megadhatja environment_vars mező használatával.

Az alábbi példa a megadott kódban létrehozott titkos kódból származó értéket rendeli hozzá a környezeti változóhoz 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}}"
                }
            )
        ]
    )
)

MLflow Deployments SDK

Az alábbiakban egy példa az Mlflow Deployments SDK használatával történő kiszolgáló végpont létrehozására. A végpontlétrehozási és konfigurációs frissítéseket kiszolgáló modell során az API-kérésben szereplő egyes kiszolgált modellek titkos környezeti változós specifikációinak listáját is megadhatja environment_vars mező használatával.

Az alábbi példa a megadott kódban létrehozott titkos kódból származó értéket rendeli hozzá a környezeti változóhoz 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}}"
                }
            }
        ]
    }
)

A végpont létrehozása vagy frissítése után a kiszolgáló modell automatikusan lekéri a titkos kulcsot a Databricks titkos kulcs hatóköréből, és feltölti a modell következtetési kódjának környezeti változóját.

Jegyzetfüzet példa

Az alábbi jegyzetfüzetből megtudhatja, hogyan konfigurálhat OpenAI API-kulcsot egy LangChain-lekéréses minőségbiztosítási lánchoz a végpontokat titkos környezeti változókkal kiszolgáló modell mögött.

Erőforrásokhoz való hozzáférés konfigurálása végpontokat kiszolgáló modell jegyzetfüzetéből

Jegyzetfüzet lekérése