Megosztás a következőn keresztül:


Mi az a Databricks szolgáltatás?

A Databricks szolgáltatáskiszolgáló a Databricks platformon lévő adatokat elérhetővé teszi az Azure Databricksen kívül üzembe helyezett 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 tekintse meg a végpontot kiszolgáló szolgáltatás üzembe helyezését és lekérdezését ismertető oktatóanyagot.

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 szolgáltatás-szolgáltatá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 a 0.1.2-es vagy újabb verzió szükséges databricks-feature-engineering , 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 ezt a parancsot egy új cellában futtatja: 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 %pip install databricks-sdk>=0.18.0a következőt: . Ha Databricks-jegyzetfüzetet használ, újra kell indítania a Python-kernelt úgy, hogy ezt a parancsot egy új cellában futtatja: 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 az éles környezetben.

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. A szolgáltatásnevek jogkivonatainak létrehozásáról a szolgáltatásnév jogkivonatainak kezelése című témakörben olvashat.

Hitelesítés a szolgáltatás-szolgáltatáshoz

A hitelesítéssel kapcsolatos információkért tekintse meg az Azure Databricks automation hitelesítését – áttekintés.

Hozzon létre egy FeatureSpec

Az A FeatureSpec a funkciók és függvények felhasználó által definiált 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 táblában vagy egy külső online áruházban. Lásd: Online táblák használata valós idejű szolgáltatásmegjelenítéshez vagy külső online áruházakhoz.

A csomag használatával databricks-feature-engineering létre kell hoznia egy 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",
    features=["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 a - b.
    input_bindings={"a": "ytd_spend", "b": "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,
)

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 modellkiszolgáló útvonaloptimalizálást kínál az egyéni modellvégpontokon, lásd: Útvonaloptimalizálás konfigurálása a végpontok kiszolgálása esetén.

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
           }
       ]
   }'

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,
    )
  )
)

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.

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

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

Fontos

Ez a funkció a nyilvános előzetes verzióban érhető el.

A REST API-val lekérheti egy végpont sémáját. A végpontsémával kapcsolatos további információkért tekintse meg a végpontsémát kiszolgáló modell lekérése című témakört.

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. A szolgáltatásnevek jogkivonatainak létrehozásáról a szolgáltatásnév jogkivonatainak kezelése című témakörben olvashat.

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.

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}
      ]}'

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

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. Az Azure Databricks-munkaterület bal oldali oldalsávjában kattintson a Kiszolgáló gombra.

  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ésvégpont párbeszédpanelen létrehozott példakód található a Curlben, a Pythonban és az SQL-ben. 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

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

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
        }
    ]'

Databricks SDK – Python

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

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. Az Azure Databricks-munkaterület bal oldali oldalsávjában kattintson a Kiszolgáló gombra.
  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. A módosítások mentéséhez kattintson a Frissítés gombra.

végpont frissítése

Végpont törlése

Figyelmeztetés

Ez a művelet visszavonhatatlan.

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

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

REST API

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

Databricks SDK – Python

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

Python API

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

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. Az Azure Databricks-munkaterület bal oldali oldalsávjában kattintson a Kiszolgáló gombra.
  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üreKebab menü, é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 modellvégpont 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-táblák használatával a Databricks SDK használatával.

Szolgáltatásmegjelenítési példajegyzetfüzet online táblákkal

Jegyzetfüzet beszerzése