Végpontokat kiszolgáló modell kezelése
Ez a cikk bemutatja, hogyan kezelheti a kiszolgálói végpontokat kiszolgáló modelleket a kiszolgáló felhasználói felületen és a REST API-val. Lásd : Végpontok kiszolgálása a REST API-referenciaban.
A végpontokat kiszolgáló modell létrehozásához használja az alábbiak egyikét:
- Végpontokat kiszolgáló egyéni modell létrehozása.
- Végpontokat kiszolgáló alapmodell létrehozása.
A modellvégpont állapotának lekérése
A Kiszolgáló felhasználói felületén ellenőrizheti egy végpont állapotát a végpont részletes lapjának tetején található Kiszolgáló végpont állapotjelzőjéből.
A végpont állapotát és részleteit programozott módon használhatja a REST API vagy az MLflow Deployments SDK használatával
Rest API
GET /api/2.0/serving-endpoints/{name}
Az alábbi példa a modellregisztrációs adatbázisban regisztrált modell első verzióját ads1
kiszolgáló végpont részleteit tartalmazza. Ha meg szeretne adni egy modellt a Unity Katalógusból, adja meg a modell teljes nevét, beleértve a szülőkatalógust és a sémát, például: catalog.schema.example-model
.
A következő példaválaszban a state.ready
mező "KÉSZ", ami azt jelenti, hogy a végpont készen áll a forgalom fogadására. A state.update_state
mező már nem lesz NOT_UPDATING
pending_config
visszaadva, mert a frissítés sikeresen befejeződött.
{
"name": "workspace-model-endpoint",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "READY",
"update_state": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "ads1-1",
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": false,
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "customer@example.com",
"creation_timestamp": 1666829055000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "ads1-1",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
Mlflow deployments sdk
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.get_endpoint(endpoint="chat")
assert endpoint == {
"name": "chat",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
Végpontot kiszolgáló modell törlése
Ha le szeretné tiltani egy modell kiszolgálását, törölheti a kiszolgált végpontot.
A végpontot törölheti a végpont részleteinek oldaláról a Kiszolgáló felhasználói felületén.
- Kattintson a Tálalás gombra az oldalsávon.
- Kattintson a törölni kívánt végpontra.
- Kattintson a felső kebab menüre, és válassza a Törlés lehetőséget.
Másik lehetőségként a kiszolgáló végpontot programozott módon is törölheti a REST API vagy az MLflow Deployments SDK használatával
Rest API
DELETE /api/2.0/serving-endpoints/{name}
Mlflow deployments sdk
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
client.delete_endpoint(endpoint="chat")
A végpontot kiszolgáló modell hibakeresése
A végponttal kapcsolatos problémák hibakereséséhez beolvashatja a következőt:
- Modellkiszolgáló tárolójának buildnaplói
- Modellkiszolgáló naplói
Ezek a naplók a Naplók lap Végpontok felhasználói felületén is elérhetők.
A kiszolgált modell buildnaplóihoz a következő kérést használhatja:
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
“config_version”: 1 // optional
}
Egy kiszolgálómodell modellkiszolgálói naplóihoz a következő kérést használhatja:
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/logs
{
“config_version”: 1 // optional
}
A végpontot kiszolgáló modell engedélyeinek kezelése
Az engedélyek módosításához legalább a CAN MANAGE engedéllyel kell rendelkeznie egy kiszolgáló végponton. A jogosultsági szintekről további információt a végponti ACL-ek kiszolgálása című témakörben talál.
Kérje le a kiszolgáló végpont engedélyeinek listáját.
databricks permissions get servingendpoints <endpoint-id>
Adjon a felhasználónak jsmith@example.com
CAN QUERY-engedélyt a kiszolgáló végponton.
databricks permissions update servingendpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "jsmith@example.com",
"permission_level": "CAN_QUERY"
}
]
}'
A végpontengedélyek kiszolgálását az Permissions API használatával is módosíthatja.
Végpontsémát kiszolgáló modell lekérése
Fontos
A végpontlekérdezés sémáinak kiszolgálása nyilvános előzetes verzióban érhető el. Ez a funkció a Modellkiszolgáló régiókban érhető el.
A kiszolgálói végpontlekérdezés sémája a kiszolgáló végpontjának formális leírása a standard OpenAPI-specifikáció JSON formátumban történő használatával. Információkat tartalmaz a végpontról, beleértve a végpont elérési útját, a végpont lekérdezésének részleteit, például a kérelem- és választörzs formátumát, valamint az egyes mezők adattípusát. Ezek az információk hasznosak lehetnek a reprodukálhatósági forgatókönyvekben, vagy ha a végponttal kapcsolatos információkra van szüksége, de nem az eredeti végpont létrehozója vagy tulajdonosa.
A kiszolgálói végpont sémájának lekéréséhez a kiszolgált modellnek naplózott modelladjegyzővel kell rendelkeznie, és a végpontnak állapotban READY
kell lennie.
Az alábbi példák bemutatják, hogyan lehet programozott módon lekérni a végpontsémát kiszolgáló modellt a REST API használatával. A végpontsémákat kiszolgáló funkciókkal kapcsolatban lásd : Mi az a Databricks szolgáltatáskiszolgáló?.
Az API által visszaadott séma az OpenAPI-specifikációt követő JSON-objektum formátumában található.
ACCESS_TOKEN="<endpoint-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"
Sémaválasz részletei
A válasz egy JSON formátumú OpenAPI-specifikáció, amely általában olyan mezőket tartalmaz, mint a openapi
, info
servers
és paths
. Mivel a sémaválasz egy JSON-objektum, elemezheti azt közös programozási nyelvek használatával, és ügyfélkódot hozhat létre a specifikációból külső eszközökkel.
Az OpenAPI-specifikációt külső eszközök, például a Swagger Editor használatával is megjelenítheti.
A válasz fő mezői a következők:
- A
info.title
mező a kiszolgáló végpont nevét jeleníti meg. - A
servers
mező mindig egy objektumot tartalmaz, általában azt aurl
mezőt, amely a végpont alap URL-címe. - A
paths
válaszban szereplő objektum egy végpont összes támogatott elérési útját tartalmazza. Az objektum kulcsai az elérési út URL-címe. Mindegyikpath
támogatja a bemenetek több formátumát. Ezek a bemenetek szerepelnek aoneOf
mezőben.
Az alábbiakban egy példa végpontséma-választ mutatunk be:
{
"openapi": "3.1.0",
"info": {
"title": "example-endpoint",
"version": "2"
},
"servers": [{ "url": "https://example.databricks.com/serving-endpoints/example-endpoint"}],
"paths": {
"/served-models/vanilla_simple_model-2/invocations": {
"post": {
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"dataframe_split": {
"type": "object",
"properties": {
"columns": {
"description": "required fields: int_col",
"type": "array",
"items": {
"type": "string",
"enum": [
"int_col",
"float_col",
"string_col"
]
}
},
"data": {
"type": "array",
"items": {
"type": "array",
"prefixItems": [
{
"type": "integer",
"format": "int64"
},
{
"type": "number",
"format": "double"
},
{
"type": "string"
}
]
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
},
"examples": [
{
"columns": [
"int_col",
"float_col",
"string_col"
],
"data": [
[
3,
10.4,
"abc"
],
[
2,
20.4,
"xyz"
]
]
}
]
},
{
"type": "object",
"properties": {
"dataframe_records": {
"type": "array",
"items": {
"required": [
"int_col",
"float_col",
"string_col"
],
"type": "object",
"properties": {
"int_col": {
"type": "integer",
"format": "int64"
},
"float_col": {
"type": "number",
"format": "double"
},
"string_col": {
"type": "string"
},
"becx_col": {
"type": "object",
"format": "unknown"
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
}
}
]
}
}
}
},
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"predictions": {
"type": "array",
"items": {
"type": "number",
"format": "double"
}
}
}
}
}
}
}
}
}
}
}
}