Funkciók kiszolgálására szolgáló végpontok

A Databricks szolgáltatáskiszolgáló a Databricks platformon lévő adatokat elérhetővé teszi a Azure Databricks kívül telepített modellek vagy alkalmazások számára. A szolgáltatáskiszolgáló végpontok automatikusan skálázhatók, hogy a valós idejű forgalomhoz igazodjanak, és magas rendelkezésre állású, alacsony késésű szolgáltatást nyújtsanak a szolgáltatások kiszolgálásához. Ez a lap bemutatja, hogyan állíthatja be és használhatja a szolgáltatáskiszolgálót. Részletes oktatóanyagért lásd : Példa: Végpontot kiszolgáló szolgáltatás üzembe helyezése és lekérdezése.

Amikor a Databricks szolgáltatásaival létrehozott modell kiszolgálására használja a Mozaik AI-modellkiszolgálót, a modell automatikusan megkeresi és átalakítja a következtetési kérelmek funkcióit. A Databricks szolgáltatáskiszolgálóval strukturált adatokat szolgáltathat a kiterjesztett generációs (RAG) alkalmazások lekéréséhez, valamint más alkalmazásokhoz szükséges funkciókhoz, például a Databricksen kívül kiszolgált modellekhez vagy bármely más olyan alkalmazáshoz, amely a Unity Catalog adatain alapuló funkciókat igényel.

mikor érdemes funkciókiszolgálást használni?

Miért érdemes a szolgáltatáskiszolgálót használni?

A Databricks szolgáltatáskiszolgáló egyetlen felületet biztosít, amely előre materializált és igény szerinti funkciókat szolgál ki. A következő előnyöket is tartalmazza:

  • Egyszerűség. A Databricks kezeli az infrastruktúrát. Egyetlen API-hívással a Databricks éles üzemre kész kiszolgálókörnyezetet hoz létre.
  • Magas rendelkezésre állás és méretezhetőség. A szolgáltatásvégpontok automatikusan fel- és leskálázhatók, hogy igazodjanak a kérések mennyiségéhez.
  • Biztonság. A végpontok biztonságos hálózathatáron vannak üzembe helyezve, és dedikált számítást használnak, amely a végpont törlésekor vagy nullára skálázásakor leáll.

Követelmények

  • Databricks Runtime 14.2 ML vagy újabb.
  • A Python API használatához a szolgáltatás-kiszolgáláshoz databricks-feature-engineering 0.1.2-es vagy újabb verzió szükséges, amely a Databricks Runtime 14.2 ML-be van beépítve. Korábbi Databricks Runtime ML-verziók esetén manuálisan telepítse a szükséges verziót a következővel %pip install databricks-feature-engineering>=0.1.2: . Ha Databricks-jegyzetfüzetet használ, újra kell indítania a Python kernelt úgy, hogy egy új cellában futtatja a következő parancsot: dbutils.library.restartPython().
  • A Databricks SDK használatához a szolgáltatás-kiszolgáláshoz a 0.18.0-s vagy újabb verzió szükséges databricks-sdk . A szükséges verzió manuális telepítéséhez használja a %pip install databricks-sdk>=0.18.0 kódot. Ha Databricks-jegyzetfüzetet használ, újra kell indítania a Python kernelt úgy, hogy egy új cellában futtatja a következő parancsot: dbutils.library.restartPython().

A Databricks szolgáltatás-szolgáltatás egy felhasználói felületet és számos programozott lehetőséget biztosít végpontok létrehozására, frissítésére, lekérdezésére és törlésére. Ez a cikk az alábbi lehetőségek mindegyikére vonatkozó utasításokat tartalmaz:

  • Databricks felhasználói felület
  • REST API
  • Python API
  • Databricks SDK

A REST API vagy az MLflow Deployments SDK használatához Databricks API-jogkivonattal kell rendelkeznie.

Fontos

A Databricks ajánlott biztonsági gyakorlatként az éles környezetekben a gépről gépre történő OAuth-jogkivonatok használatát javasolja a hitelesítéshez.

Teszteléshez és fejlesztéshez a Databricks a munkaterület felhasználói helyett a szolgáltatásnevekhez tartozó személyes hozzáférési jogkivonat használatát javasolja. Az alábbiakat olvassa el a szolgáltatásnév jogkivonatainak létrehozásáról: A szolgáltatásnév jogkivonatainak kezelése.

Hitelesítés a funkciókiszolgáláshoz

A hitelesítéssel kapcsolatos információkért lásd: A Azure Databricks erőforrásokhoz való hozzáférés engedélyezése.

Hozzon létre egy FeatureSpec

A FeatureSpec a funkciók és függvények felhasználó által meghatározott készlete. A funkciók és függvények kombinálhatók a FeatureSpec. FeatureSpecs a Unity Catalog tárolja és kezeli, és megjelenik a Katalóguskezelőben.

A megadott FeatureSpec táblákat közzé kell tenni egy online szolgáltatástárolóban vagy egy külső online áruházban. Lásd a Databricks Online szolgáltatástárolóit.

A databricks-feature-engineering csomagot kell használnia FeatureSpec létrehozásához.

Először határozza meg a függvényt:

from unitycatalog.ai.core.databricks import DatabricksFunctionClient

client = DatabricksFunctionClient()

CATALOG = "main"
SCHEMA = "default"

def difference(num_1: float, num_2: float) -> float:
  """
  A function that accepts two floating point numbers, subtracts the second one
  from the first, and returns the result as a float.

  Args:
      num_1 (float): The first number.
      num_2 (float): The second number.

  Returns:
      float: The resulting difference of the two input numbers.
  """
  return num_1 - num_2

client.create_python_function(
  func=difference,
  catalog=CATALOG,
  schema=SCHEMA,
  replace=True
)

Ezután használhatja a függvényt a következőben: FeatureSpec

from databricks.feature_engineering import (
  FeatureFunction,
  FeatureLookup,
  FeatureEngineeringClient,
)

fe = FeatureEngineeringClient()

features = [
  # Lookup column `average_yearly_spend` and `country` from a table in UC by the input `user_id`.
  FeatureLookup(
    table_name="main.default.customer_profile",
    lookup_key="user_id",
    feature_names=["average_yearly_spend", "country"]
  ),
  # Calculate a new feature called `spending_gap` - the difference between `ytd_spend` and `average_yearly_spend`.
  FeatureFunction(
    udf_name="main.default.difference",
    output_name="spending_gap",
    # Bind the function parameter with input from other features or from request.
    # The function calculates num_1 - num_2.
    input_bindings={"num_1": "ytd_spend", "num_2": "average_yearly_spend"},
  ),
]

# Create a `FeatureSpec` with the features defined above.
# The `FeatureSpec` can be accessed in Unity Catalog as a function.
fe.create_feature_spec(
  name="main.default.customer_features",
  features=features,
)

Alapértelmezett értékek megadása

A funkciók alapértelmezett értékeinek megadásához használja a default_values paramétert a FeatureLookup-ben. Lásd a következő példát:

feature_lookups = [
    FeatureLookup(
        table_name="ml.recommender_system.customer_features",
        feature_names=[
            "membership_tier",
            "age",
            "page_views_count_30days",
        ],
        lookup_key="customer_id",
        default_values={
          "age": 18,
          "membership_tier": "bronze"
        },
    ),
]

Ha a szolgáltatásoszlopokat a rename_outputs paraméterrel nevezik át, default_values az átnevezett szolgáltatásneveket kell használnia.

FeatureLookup(
  table_name = 'main.default.table',
  feature_names = ['materialized_feature_value'],
  lookup_key = 'id',
  rename_outputs={"materialized_feature_value": "feature_value"},
  default_values={
    "feature_value": 0
  }
)

Végpont létrehozása

Ez FeatureSpec határozza meg a végpontot. További információ: Végpontokat kiszolgáló egyéni modell létrehozása, a Python API dokumentációja vagy a Databricks SDK dokumentációja.

Feljegyzés

Az olyan számítási feladatok esetében, amelyek késés szempontjából érzékenyek, vagy másodpercenként nagy lekérdezéseket igényelnek, a Model Serving útvonaloptimalizálást kínál az egyéni modellvégpontokon, lásd: Útvonaloptimalizálás a végpontok kiszolgálása esetén.

Databricks SDK – Python

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

workspace = WorkspaceClient()

# Create endpoint
workspace.serving_endpoints.create(
  name="my-serving-endpoint",
  config = EndpointCoreConfigInput(
    served_entities=[
    ServedEntityInput(
        entity_name="main.default.customer_features",
        scale_to_zero_enabled=True,
        workload_size="Small"
      )
    ]
  )
)

Python API

from databricks.feature_engineering.entities.feature_serving_endpoint import (
  ServedEntity,
  EndpointCoreConfig,
)

fe.create_feature_serving_endpoint(
  name="customer-features",
    config=EndpointCoreConfig(
    served_entities=ServedEntity(
      feature_spec_name="main.default.customer_features",
             workload_size="Small",
             scale_to_zero_enabled=True,
             instance_profile_arn=None,
    )
  )
)

REST API

curl -X POST -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints \
    -H 'Content-Type: application/json' \
    -d '"name": "customer-features",
   "config": {
       "served_entities": [
           {
               "entity_name": "main.default.customer_features",
               "workload_size": "Small",
               "scale_to_zero_enabled": true
           }
       ]
   }'

A végpont megtekintéséhez kattintson a Databricks felhasználói felületének bal oldali oldalsávjában található Kiszolgáló gombra. Ha az állapot kész, a végpont készen áll a lekérdezésekre való válaszadásra. A Mozaik AI-modell szolgáltatásáról további információt a Mozaik AI-modell-kiszolgáló című témakörben talál.

A bővített DataFrame mentése a következtetési táblában

A 2025 februárjától létrehozott végpontok esetében a végpontot kiszolgáló modell úgy konfigurálható, hogy naplózza a kibővített DataFrame-et, amely tartalmazza a keresett funkció értékeit és a függvény visszatérési értékeit. A DataFrame el van mentve a kiszolgált modell következtetési táblájába.

A konfiguráció beállításával kapcsolatos utasításokért tekintse meg Naplófunkciók adatkeretek keresését a táblákkövetkeztetéséhez.

A következtetési táblákról további információt Modellek figyelésére és hibakeresésére vonatkozó következtetési táblákcímű témakörben talál.

Végpont lekérése

A Databricks SDK-val vagy a Python API-val lekérheti egy végpont metaadatait és állapotát.

Databricks SDK – Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

endpoint = workspace.serving_endpoints.get(name="customer-features")
# print(endpoint)

Python API

endpoint = fe.get_feature_serving_endpoint(name="customer-features")
# print(endpoint)

Végpont sémájának lekérése

A Databricks SDK-val vagy a REST API-val lekérheti egy végpont sémáját. A végpontséma további információi: Végpontséma-kiszolgáló modell lekérése.

Databricks SDK – Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

# Create endpoint
endpoint = workspace.serving_endpoints.get_open_api(name="customer-features")

REST API

ACCESS_TOKEN=<token>
ENDPOINT_NAME=<endpoint name>

curl "https://example.databricks.com/api/2.0/serving-endpoints/$ENDPOINT_NAME/openapi" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json"

Végpont lekérdezése

A végpont lekérdezéséhez használhatja a REST API-t, az MLflow Deployments SDK-t vagy a kiszolgáló felhasználói felületet.

Az alábbi kód bemutatja, hogyan állíthat be hitelesítő adatokat, és hogyan hozhatja létre az ügyfelet az MLflow Deployments SDK használatakor.

  # Set up credentials
  export DATABRICKS_HOST=...
  export DATABRICKS_TOKEN=...
  # Set up the client
  import mlflow.deployments

  client = mlflow.deployments.get_deploy_client("databricks")

Feljegyzés

Ajánlott biztonsági eljárásként, ha automatizált eszközökkel, rendszerekkel, szkriptekkel és alkalmazásokkal hitelesít, a Databricks azt javasolja, hogy munkaterület-felhasználók helyett a szolgáltatásnevekhez tartozó személyes hozzáférési jogkivonatokat használja. Az alábbiakat olvassa el a szolgáltatásnév jogkivonatainak létrehozásáról: A szolgáltatásnév jogkivonatainak kezelése.

Végpont lekérdezése API-k használatával

Ez a szakasz példákat tartalmaz egy végpont REST API vagy az MLflow Deployments SDK használatával történő lekérdezésére.

MLflow Deployments SDK

Fontos

Az alábbi példa az predict() MLflow Deployments SDK API-t használja. Ez az API kísérleti , és az API-definíció változhat.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")
response = client.predict(
    endpoint="test-feature-endpoint",
    inputs={
        "dataframe_records": [
            {"user_id": 1, "ytd_spend": 598},
            {"user_id": 2, "ytd_spend": 280},
        ]
    },
)

REST API

curl -X POST -u token:$DATABRICKS_API_TOKEN $ENDPOINT_INVOCATION_URL \
  -H 'Content-Type: application/json' \
  -d '{"dataframe_records": [
          {"user_id": 1, "ytd_spend": 598},
          {"user_id": 2, "ytd_spend": 280}
      ]}'

Végpont lekérdezése a felhasználói felületen

A kiszolgálóvégpontot közvetlenül a kiszolgáló felhasználói felületéről kérdezheti le. A felhasználói felület olyan generált kód példákat tartalmaz, amelyekkel lekérdezheti a végpontot.

  1. A Azure Databricks munkaterület bal oldali oldalsávjában kattintson a Serving elemre.

  2. Kattintson a lekérdezni kívánt végpontra.

  3. A képernyő jobb felső sarkában kattintson a Lekérdezés végpontra.

    lekérdezésvégpont gomb

  4. A Kérelem mezőbe írja be a kérelem törzsét JSON formátumban.

  5. Kattintson a Kérés küldése gombra.

// Example of a request body.
{
  "dataframe_records": [
    { "user_id": 1, "ytd_spend": 598 },
    { "user_id": 2, "ytd_spend": 280 }
  ]
}

A Lekérdezési végpont párbeszédpanel a curlben, a Python és az SQL-ben létrehozott példakódot tartalmazza. Kattintson a fülekre a példakód megtekintéséhez és másolásához.

lekérdezésvégpont párbeszédpanel

A kód másolásához kattintson a szövegdoboz jobb felső sarkában található másolás ikonra.

Másolás gomb a lekérdezésvégpont párbeszédpanelen

Végpont frissítése

Fontos

A szolgáltatáskiszolgáló végpont konfigurációjának módosításához (például a számítási feladatok méretének FeatureSpec módosításához) mindig használja az ebben a szakaszban ismertetett frissítési API-kat. Ne törölje és hozza létre újra a végpontot a módosítások alkalmazásához. Az élő végpont törlése azonnali leállást okoz, és megszakítja a lekérdezést használó összes alkalmazást.

A végpontot a REST API, a Databricks SDK vagy a Kiszolgáló felhasználói felület használatával frissítheti.

Végpont frissítése API-k használatával

Databricks SDK – Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

workspace.serving_endpoints.update_config(
  name="my-serving-endpoint",
  served_entities=[
    ServedEntityInput(
      entity_name="main.default.customer_features",
      scale_to_zero_enabled=True,
      workload_size="Small"
    )
  ]
)

REST API

curl -X PUT -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>/config \
  -H 'Content-Type: application/json' \
  -d '"served_entities": [
        {
            "name": "customer-features",
            "entity_name": "main.default.customer_features_new",
            "workload_size": "Small",
            "scale_to_zero_enabled": True
        }
    ]'

Végpont frissítése a felhasználói felületen

A kiszolgáló felhasználói felületének használatához kövesse az alábbi lépéseket:

  1. A Azure Databricks munkaterület bal oldali oldalsávjában kattintson a Serving elemre.
  2. A táblázatban kattintson a frissíteni kívánt végpont nevére. Megjelenik a végpont képernyője.
  3. A képernyő jobb felső sarkában kattintson a Végpont szerkesztése elemre.
  4. A Kiszolgálóvégpont szerkesztése párbeszédpanelen szükség szerint szerkessze a végpont beállításait.
  5. Kattintson Frissítés elemre a módosítások mentéséhez.

végpont frissítése

Végpont törlése

Figyelmeztetés

Ez a művelet visszavonhatatlan. A funkcionális egységet kiszolgáló végpont törlése azonnali állásidőt okoz bármelyik azt lekérdező alkalmazás számára. Ha módosítani szeretné a végpont konfigurációját, használja a Végpont frissítése parancsot a végpont törlése és újraküldése helyett.

A végpontokat a REST API, a Databricks SDK, a Python API vagy a kiszolgálói felhasználói felület használatával törölheti.

Végpont törlése API-k használatával

Databricks SDK – Python

from databricks.sdk import WorkspaceClient
workspace = WorkspaceClient()

workspace.serving_endpoints.delete(name="customer-features")

Python API

fe.delete_feature_serving_endpoint(name="customer-features")

REST API

curl -X DELETE -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>

Végpont törlése a felhasználói felületen

Az alábbi lépéseket követve törölhet egy végpontot a kiszolgáló felhasználói felületén:

  1. A Azure Databricks munkaterület bal oldali oldalsávjában kattintson a Serving elemre.
  2. A táblázatban kattintson a törölni kívánt végpont nevére. Megjelenik a végpont képernyője.
  3. A képernyő jobb felső sarkában kattintson a kebab menü Kebab menüikonjára, és válassza a Törlés lehetőséget.

végpont törlése

Végpont állapotának figyelése

A szolgáltatáskiszolgáló végpontok számára elérhető naplókkal és metrikákkal kapcsolatos információkért tekintse meg a modell minőségének és a végpont állapotának figyelése című témakört.

Hozzáférés-vezérlés

A szolgáltatáskiszolgáló végpontokra vonatkozó engedélyekről további információt a végpontot kiszolgáló modell engedélyeinek kezelése című témakörben talál.

Példajegyzetfüzet

Ez a jegyzetfüzet bemutatja, hogyan hozhat létre szolgáltatáskiszolgáló végpontot a Databricks Online Szolgáltatástár használatával a Databricks SDK használatával.

Szolgáltatásmegjelenítési példajegyzetfüzet online áruházzal

Jegyzetfüzet lekérése