Hantera modell som betjänar slutpunkter
Den här artikeln beskriver hur du hanterar modellserverslutpunkter med hjälp av servergränssnittet och REST-API:et. Se Serveringsslutpunkter i REST API-referensen.
Om du vill skapa modell som betjänar slutpunkter använder du något av följande:
- Skapa anpassade modell som betjänar slutpunkter.
- Skapa generativ AI-modell som betjänar slutpunkter.
Hämta status för modellslutpunkten
I användargränssnittet för servering kan du kontrollera statusen för en slutpunkt från indikatorn serveringsslutpunktstillstånd högst upp på slutpunktens informationssida.
Du kan använda kontrollera status och information om en slutpunkt programmatiskt med hjälp av REST-API:et eller SDK:n för MLflow-distributioner
REST-API
GET /api/2.0/serving-endpoints/{name}
I följande exempel skapas en slutpunkt som hanterar den första versionen av my-ads-model
modellen som är registrerad i Unity Catalog-modellregistret. Du måste ange det fullständiga modellnamnet inklusive den överordnade katalogen och schemat, till exempel . catalog.schema.example-model
I följande exempelsvar är fältet state.ready
"READY", vilket innebär att slutpunkten är redo att ta emot trafik. Fältet state.update_state
returneras NOT_UPDATING
och pending_config
returneras inte längre eftersom uppdateringen har slutförts.
{
"name": "unity-model-endpoint",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "READY",
"update_state": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "my-ads-model",
"entity_name": "myCatalog.mySchema.my-ads-model",
"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": "my-ads-model",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
SDK för MLflow-distributioner
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",
}
Stoppa en modell som betjänar slutpunkten
Du kan tillfälligt stoppa en modell som betjänar slutpunkten och starta den senare. När en slutpunkt stoppas stängs de resurser som har etablerats för den av och slutpunkten kan inte hantera frågor förrän den startas igen. Det är bara slutpunkter som hanterar anpassade modeller, som inte är routningsoptimerade och som inte har några pågående uppdateringar som kan stoppas. Stoppade slutpunkter räknas inte mot resurskvoten. Frågor som skickas till en stoppad slutpunkt returnerar ett 400-fel.
Du kan stoppa en slutpunkt från slutpunktens informationssida i användargränssnittet för servering .
- Klicka på den slutpunkt som du vill stoppa.
- Klicka på Stoppa i det övre högra hörnet.
Du kan också stoppa en serverslutpunkt programmatiskt med hjälp av REST-API:et på följande sätt:
POST /api/2.0/serving-endpoints/{name}/config:stop
När du är redo att starta en stoppad modell som betjänar slutpunkten kan du göra det från slutpunktens informationssida i användargränssnittet för servering .
- Klicka på den slutpunkt som du vill starta.
- Klicka på Starta i det övre högra hörnet.
Du kan också starta en stoppad serverdelsslutpunkt programmatiskt med hjälp av REST-API:et på följande sätt:
POST /api/2.0/serving-endpoints/{name}/config:start
Ta bort en modell som betjänar slutpunkten
Om du vill inaktivera servering för en modell kan du ta bort slutpunkten som den hanteras på.
Du kan ta bort en slutpunkt från slutpunktens informationssida i användargränssnittet för servering .
- Klicka på Servering i sidopanelen.
- Klicka på den slutpunkt som du vill ta bort.
- Klicka på menyn för kebab längst upp och välj Ta bort.
Du kan också ta bort en serverslutpunkt programmatiskt med hjälp av REST-API:et eller MLflow Deployments SDK
REST-API
DELETE /api/2.0/serving-endpoints/{name}
SDK för MLflow-distributioner
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
client.delete_endpoint(endpoint="chat")
Felsöka modellserverslutpunkten
Om du vill felsöka eventuella problem med slutpunkten kan du hämta:
- Modellserver för containerbyggloggar
- Modellserverloggar
Dessa loggar är också tillgängliga från användargränssnittet för slutpunkter på fliken Loggar .
För byggloggarna för en hanterad modell kan du använda följande begäran. Mer information finns i felsökningsguiden för modellservering .
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
“config_version”: 1 // optional
}
För modellserverloggarna för en tjänstmodell kan du använda följande begäran:
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/logs
{
“config_version”: 1 // optional
}
Hantera behörigheter för din modell som betjänar slutpunkten
Du måste ha behörigheten CAN MANAGE på en serverdelsslutpunkt för att kunna ändra behörigheter. Mer information om behörighetsnivåer finns i Serveringsslutpunkts-ACL:er.
Hämta listan över behörigheter på serverdelsslutpunkten.
databricks permissions get servingendpoints <endpoint-id>
Ge användaren jsmith@example.com
behörigheten CAN QUERY på serverdelsslutpunkten.
databricks permissions update servingendpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "jsmith@example.com",
"permission_level": "CAN_QUERY"
}
]
}'
Du kan också ändra serverdelsslutpunktsbehörigheter med hjälp av API:et Behörigheter.
Hämta ett modellserverslutpunktsschema
Viktigt!
Stöd för servering av slutpunktsfrågescheman finns i offentlig förhandsversion. Den här funktionen är tillgänglig i modellserveringsregioner.
Ett serverslutpunktsfrågeschema är en formell beskrivning av serverdelsslutpunkten med hjälp av Standard OpenAPI-specifikationen i JSON-format. Den innehåller information om slutpunkten, inklusive slutpunktssökvägen, information om hur du kör frågor mot slutpunkten som formatet för begäran och svarstext och datatypen för varje fält. Den här informationen kan vara användbar för reproducerbarhetsscenarier eller när du behöver information om slutpunkten, men du inte är den ursprungliga slutpunktens skapare eller ägare.
För att få modellen som betjänar slutpunktsschemat måste den betjänade modellen ha en modellsignatur loggad och slutpunkten måste vara i ett READY
tillstånd.
Följande exempel visar hur du programmatiskt hämtar modellen som betjänar slutpunktsschemat med hjälp av REST-API:et. Information om funktioner som betjänar slutpunktsscheman finns i Vad är Databricks-funktionsserver?.
Schemat som returneras av API:et är i formatet för ett JSON-objekt som följer OpenAPI-specifikationen.
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"
Schemasvarsinformation
Svaret är en OpenAPI-specifikation i JSON-format, vanligtvis inklusive fält som openapi
, servers
info
och paths
. Eftersom schemasvaret är ett JSON-objekt kan du parsa det med hjälp av vanliga programmeringsspråk och generera klientkod från specifikationen med hjälp av verktyg från tredje part.
Du kan också visualisera OpenAPI-specifikationen med hjälp av verktyg från tredje part, till exempel Swagger Editor.
Huvudfälten i svaret är:
- Fältet
info.title
visar namnet på serverdelsslutpunkten. - Fältet
servers
innehåller alltid ett objekt, vanligtvis fälteturl
som är slutpunktens bas-URL. - Objektet
paths
i svaret innehåller alla sökvägar som stöds för en slutpunkt. Nycklarna i objektet är sökvägens URL. Var ochpath
en kan ha stöd för flera format för indata. Dessa indata visas i fältetoneOf
.
Följande är ett exempel på svar på slutpunktsschema:
{
"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"
}
}
}
}
}
}
}
}
}
}
}
}