Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
Hämta status för modellslutpunkten
Du kan kontrollera statusen för en slutpunkt med hjälp av användargränssnittet för servering eller programmatiskt med hjälp av REST API, Databricks Workspace Client eller MLflow Deployments SDK.
Slutpunktsstatusar kan vara Ready, Ready (Update failed), Not ready (Updating), Not ready (Update failed)eller Not ready (Stopped). Beredskap avser om en slutpunkt kan frågas eller inte. Indikationen för misslyckad uppdatering anger att den senaste ändringen av endpoint var misslyckad. Stoppad innebär att slutpunkten stoppades.
Användargränssnitt (UI)
Indikatorn för serverslutpunktstillstånd högst upp på en slutpunkts informationssida:
REST-API
GET /api/2.0/serving-endpoints/{name}
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 är 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"
}
Databricks-arbetsyte-klient
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
endpoint = w.serving_endpoints.get(name="my-endpoint")
print(f"Endpoint state: {endpoint.state.ready}")
print(f"Update state: {endpoint.state.config_update}")
SDK för MLflow-distributioner
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.get_endpoint(endpoint="my-endpoint")
print(f"Endpoint state: {endpoint['state']}")
print(f"Endpoint config: {endpoint['config']}")
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:
- De resurser som har tilldelats för det stängs ner.
- Slutpunkten kan inte hantera frågor förrän den startas igen.
- Endast slutpunkter som hanterar anpassade modeller och inte har några pågående uppdateringar kan stoppas.
- Stoppade slutpunkter räknas inte mot resurskvoten.
- Frågor som skickas till en stoppad slutpunkt returnerar ett 400-fel.
Stoppa en endpunkt
Användargränssnitt (UI)
Klicka på Stoppa i det övre högra hörnet.
REST-API
POST /api/2.0/serving-endpoints/{name}/config:stop
Starta en slutpunkt
När du startar en slutpunkt skapas en ny konfigurationsversion med samma egenskaper som den befintliga stoppade konfigurationen.
När du är redo att starta en stoppad modell som betjänar slutpunkten:
Användargränssnitt (UI)
Klicka på Starta i det övre högra hörnet.
REST-API
POST /api/2.0/serving-endpoints/{name}/config:start
Ta bort en modell som betjänar slutpunkten
Om du tar bort en slutpunkt inaktiveras användningen och alla data som är associerade med slutpunkten tas bort. Det går inte att ångra borttagningen.
Användargränssnitt (UI)
Klicka på menyn för kebab längst upp och välj Ta bort.
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 en modell som betjänar slutpunkten
Det finns två typer av loggar som hjälper dig att felsöka problem med slutpunkter:
- Modellserverns containerbyggloggar: Genereras under slutpunktsinitiering när containern skapas. Dessa loggar registrerar installationsfasen, inklusive nedladdning av modellen, installation av beroenden och konfiguration av körningsmiljön. Använd dessa loggar för att felsöka varför en slutpunkt inte kunde starta eller har fastnat under distributionen.
- Modellserverloggar: Genereras under körning när slutpunkten aktivt hanterar förutsägelser. Dessa loggar samlar in inkommande begäranden, körning av modellinferens, körningsfel och loggning på programnivå från modellkoden. Använd dessa loggar för att felsöka problem med förutsägelser eller undersöka frågefel.
Båda loggtyperna är också tillgängliga från användargränssnittet för slutpunkter på fliken Loggar .
Hämta containerbyggloggar
För byggloggarna för en hanterad modell kan du använda följande begäran. Se felsökningsguiden för modellservering för mer information.
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
"config_version": 1 // optional
}
Hämta modellserverloggar
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 en modell som betjänar slutpunkten
Du måste ha behörigheten CAN MANAGE på en tjänsteendpoint för att ändra behörigheter. Mer information om behörighetsnivåer finns i Serveringsslutpunkts-ACL:er.
Hämta listan över behörigheter på serving-slutpunkten.
Användargränssnitt (UI)
Klicka på knappen Behörigheter längst upp till höger i användargränssnittet.
Databricks kommandoradsgränssnitt (CLI)
databricks permissions get serving-endpoints <endpoint-id>
Bevilja användare jsmith@example.com behörigheten CAN QUERY på serverdelsslutpunkten.
databricks permissions update serving-endpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "jsmith@example.com",
"permission_level": "CAN_QUERY"
}
]
}'
Du kan också ändra slutpunktsbehörigheter med hjälp av Behörighets-API:et.
Lägga till en serverlös budgetprincip för en modell som betjänar slutpunkten
Viktigt!
Den här funktionen finns i offentlig förhandsversion och är inte tillgänglig för serverslutpunkter som hanterar externa modeller.
Med serverlösa budgetprinciper kan din organisation tillämpa anpassade taggar på serverlös användning för detaljerad faktureringsattribution. Om din arbetsyta använder serverlösa budgetprinciper för att tillskriva serverlös användning kan du lägga till en serverlös budgetprincip i din modell som betjänar slutpunkter. Se Attributanvändning med serverlösa budgetprinciper.
Vid skapandet av en modellbetjäningsslutpunkt kan du välja din slutpunkts serverlösa budgetprincip från menyn Budgetprincip i Serverings-UI. Om du har tilldelats en serverlös budgetprincip tilldelas alla slutpunkter som du skapar den serverlösa budgetprincipen, även om du inte väljer en princip på menyn Budgetprincip .
Om du har MANAGE behörighet för en befintlig slutpunkt kan du redigera och lägga till en serverlös budgetprincip till slutpunkten från sidan Slutpunktsinformation i användargränssnittet.
Obs
Om du har tilldelats en serverlös budgetpolicy taggas inte dina befintliga slutpunkter automatiskt med den. Du måste uppdatera befintliga slutpunkter manuellt om du vill koppla en serverlös budgetprincip till dem.
Hämta en modell som betjänar slutpunktsschema
Viktigt!
Stöd för servering av slutpunktsfrågescheman finns i offentlig förhandsversion. Den här funktionen är tillgänglig i Model Serving-regioner.
Ett frågeschema för serverslutpunkter är en formell beskrivning av serverslutpunkten med OpenAPI-standardens specifikation 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å schemat för modelltjänstens slutpunkt måste den hanterade 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 funktionsserverslutpunktsscheman finns i Funktionsserverslutpunkter.
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"
Detaljer om schemasvar
Svaret är en OpenAPI-specifikation i JSON-format, vanligtvis inklusive fält som openapi, infoserversoch 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.titlevisar namnet på tjänstgörande slutpunkten. - Fältet
serversinnehåller alltid ett objekt, vanligtvis fälteturlsom är slutpunktens bas-URL. - Objektet
pathsi svaret innehåller alla sökvägar som stöds för en slutpunkt. Nycklarna i objektet är sökvägens URL. Var ochpathen 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"
}
}
}
}
}
}
}
}
}
}
}
}