Verwalten von Modellbereitstellungsendpunkten
In diesem Artikel wird beschrieben, wie Sie Model Serving-Endpunkte mithilfe der Serving-Benutzeroberfläche und der REST-API verwalten. Weitere Informationen finden Sie unter Bereitstellungsendpunkte in der API-Referenz.
Verwenden Sie zum Erstellen von Endpunkten für die Modellbereitstellung eine der folgenden Optionen:
- Erstellen von benutzerdefinierten Endpunkten für die Modellbereitstellung
- Erstellen von Bereitstellungsendpunkten für Modelle der generativen KI
Abrufen des Status des Modellendpunkts
Auf der Serving-Benutzeroberfläche können Sie den Status eines Endpunkts über den Statusindikator für den Bereitstellungsendpunkt oben auf der Detailseite Ihres Endpunkts überprüfen.
Sie können den Status und die Details eines Endpunkts programmgesteuert mithilfe der REST-API oder des MLflow Deployments SDK überprüfen.
REST-API
GET /api/2.0/serving-endpoints/{name}
Im folgenden Beispiel wird ein Endpunkt erstellt, der der ersten Version des my-ads-model
Modells dient, das in der Unity Catalog-Modellregistrierung registriert ist. Sie müssen den vollständigen Modellnamen einschließlich übergeordnetem Katalog und Schema angeben, catalog.schema.example-model
z. B. .
In der folgenden Beispielantwort lautet ist „READY“ im Feld state.ready
angegeben. Das bedeutet, dass der Endpunkt bereit ist, Datenverkehr zu empfangen. Das Feld state.update_state
ist NOT_UPDATING
und pending_config
wird nicht mehr zurückgegeben, da das Update erfolgreich abgeschlossen wurde.
{
"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"
}
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",
}
Stoppen eines Modellbereitstellungsendpunkts
Sie können einen Modellbereitstellungsendpunkt vorübergehend stoppen und später wieder starten. Wenn ein Endpunkt gestoppt wird, werden die dafür bereitgestellten Ressourcen heruntergefahren, und der Endpunkt kann so lange keine Abfragen bearbeiten, bis er wieder gestartet wird. Nur die für benutzerdefinierte Modelle dienenden Endpunkte sind nicht routenoptimiert und haben keine laufenden Updates, die gestoppt werden können. Gestoppte Endpunkte werden nicht auf das Ressourcenkontingent angerechnet. Wenn Anfragen an einen gestoppten Endpunkt gesendet werden, wird ein 400-Fehler zurückgegeben.
Sie können einen Endpunkt auf der Serving-Benutzeroberfläche auf der Detailseite des Endpunkts stoppen.
- Klicken Sie auf den Endpunkt, den Sie stoppen möchten.
- Klicken Sie oben rechts auf Stoppen.
Alternativ können Sie einen Bereitstellungsendpunkt auch wie folgt programmgesteuert über die REST-API stoppen:
POST /api/2.0/serving-endpoints/{name}/config:stop
Wenn Sie bereit sind, einen gestoppten Modellbereitstellungsendpunkt wieder zu starten, können Sie dies über die Detailseite des Endpunkts in der Serving-Benutzeroberfläche tun.
- Klicken Sie auf den Endpunkt, den Sie starten möchten.
- Klicken Sie oben rechts auf Starten.
Alternativ können Sie einen gestoppten Bereitstellungsendpunkt auch wie folgt programmgesteuert über die REST-API starten:
POST /api/2.0/serving-endpoints/{name}/config:start
Löschen eines Modellbereitstellungsendpunkts
Um die Bereitstellung für ein Modell zu deaktivieren, können Sie den Endpunkt löschen, für den es bereitgestellt wird.
Sie können einen Endpunkt auf der Serving-Benutzeroberfläche auf der Detailseite des Endpunkts löschen.
- Klicken Sie auf der Seitenleiste auf Bereitstellen.
- Klicken Sie auf den zu löschenden Endpunkt.
- Klicken Sie oben auf das Optionsmenü, und wählen Sie Löschen aus.
Alternativ können Sie einen Bereitstelllungsendpunkt programmgesteuert mithilfe der REST-API oder des MLflow Deployments SDK löschen.
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")
Debuggen des Modellbereitstellungsendpunkts
Zum Debuggen von Problemen mit dem Endpunkt können Sie Folgendes abrufen:
- Buildprotokolle für die Modellservercontainer
- Modellserverprotokolle
Auf diese Protokolle kann auch über die Benutzeroberfläche Endpunkte auf der Registerkarte Protokolle zugegriffen werden.
Für die Buildprotokolle für ein bereitgestelltes Modell können Sie die folgende Anforderung verwenden. Weitere Informationen finden Sie im Debughandbuch für die Modellbereitstellung .
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
“config_version”: 1 // optional
}
Für die Modellserverprotokolle für ein bereitgestelltes Modell können Sie die folgende Anforderung verwenden:
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/logs
{
“config_version”: 1 // optional
}
Verwalten von Berechtigungen für Ihren Modellbereitstellungsendpunkt
Sie müssen mindestens über die Berechtigung KANN VERWALTEN für einen Bereitstellungsendpunkt verfügen, um Berechtigungen zu ändern. Weitere Informationen zu den Berechtigungsstufen finden Sie unter Zugriffssteuerungslisten für Bereitstellungsendpunkte.
Rufen Sie die Liste der Berechtigungen für den Bereitstellungsendpunkt ab.
databricks permissions get servingendpoints <endpoint-id>
Weisen Sie dem Benutzer jsmith@example.com
die KANN ABFRAGEN-Berechtigung für den Bereitstellungsendpunkt zu.
databricks permissions update servingendpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "jsmith@example.com",
"permission_level": "CAN_QUERY"
}
]
}'
Sie können die Berechtigungen für Bereitstellungsendpunkte auch mithilfe der Permissions-API ändern.
Abrufen eines Schemas für Modellbereitstellungsendpunkte
Wichtig
Die Unterstützung für die Bereitstellung von Abfrageschemas für Endpunkte befindet sich in der Public Preview. Diese Funktionalität ist in den Modellbereitstellungsregionen verfügbar.
Ein Abfrageschema für Bereitstellungsendpunkte ist eine formale Beschreibung des Bereitstellungsendpunkts mithilfe der standardmäßigen OpenAPI-Spezifikation im JSON-Format. Es enthält Informationen zum Endpunkt, einschließlich Endpunktpfad, Details zum Abfragen des Endpunkts wie das Format von Anforderungs- und Antworttext und des Datentyps für jedes Feld. Diese Informationen können in Reproduktionsszenarien hilfreich sein oder wenn Sie Informationen zum Endpunkt benötigen, aber den Endpunkt ursprünglich nicht erstellt haben und nicht in seinem Besitz sind.
Um das Schema für den Modellbereitstellungsendpunkt abzurufen, muss für das bereitgestellte Modell eine Modellsignatur protokolliert sein, und der Endpunkt muss sich im Zustand READY
befinden.
Die folgenden Beispiele veranschaulichen, wie Sie das Schema des Modellbereitstellungsendpunkts programmgesteuert mithilfe der REST-API abrufen. Weitere Informationen zu Endpunktschemas finden Sie unter Was ist Databricks Feature Serving?.
Das von der API zurückgegebene Schema weist das Format eines JSON-Objekts auf, das der OpenAPI-Spezifikation entspricht.
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"
Schemaantwortdetails
Die Antwort ist eine OpenAPI-Spezifikation im JSON-Format, die in der Regel Felder wie openapi
, info
, servers
und paths
enthält. Da es sich bei der Schemaantwort um ein JSON-Objekt handelt, können Sie sie mithilfe gängiger Programmiersprachen analysieren und Clientcode aus der Spezifikation mithilfe von Drittanbietertools generieren.
Sie können die OpenAPI-Spezifikation auch mithilfe von Drittanbietertools wie dem Swagger-Editor visualisieren.
Wichtige Felder in der Antwort:
- Das Feld
info.title
zeigt den Namen des Bereitstellungsendpunkts an. - Das Feld
servers
enthält immer genau ein Objekt, in der Regel das Feldurl
, das die Basis-URL des Endpunkts ist. - Das
paths
-Objekt in der Antwort enthält alle unterstützten Pfade für einen Endpunkt. Die Schlüssel im Objekt sind die Pfad-URL. Jederpath
kann Eingaben in mehreren Formaten unterstützen. Diese Eingaben werden im FeldoneOf
aufgeführt.
Nachfolgend sehen Sie ein Beispiel für eine Endpunktschemaantwort:
{
"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"
}
}
}
}
}
}
}
}
}
}
}
}