Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 Foundation Model-Bereitstellungsendpunkten
Abrufen des Status des Modellendpunkts
Sie können den Status eines Endpunkts mithilfe der Dienstbenutzeroberfläche oder programmgesteuert mithilfe der REST-API, des Databricks Workspace Client oder des MLflow Deployments SDK überprüfen.
Endpunktstatus können sein Ready, , Ready (Update failed), Not ready (Updating), , Not ready (Update failed)oder Not ready (Stopped). Die Bereitschaft bezieht sich darauf, ob ein Endpunkt abgefragt werden kann. Update fehlgeschlagen: Die letzte Änderung am Endpunkt war nicht erfolgreich. Gestoppt bedeutet, dass der Endpunkt gestoppt wurde.
Benutzeroberfläche
Die Statusanzeige für den Dienstendpunkt am oberen Rand der Detailseite eines Endpunkts:
REST-API
GET /api/2.0/serving-endpoints/{name}
In der folgenden Beispielantwort ist das state.ready Feld "READY", was bedeutet, dass der Endpunkt bereit für den Empfang von Datenverkehr ist. 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"
}
Databricks Workspace-Client
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}")
MLflow Deployments SDK
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']}")
Stoppen eines Modellbereitstellungsendpunkts
Sie können einen Modellbereitstellungsendpunkt vorübergehend stoppen und später wieder starten. Wenn ein Endpunkt beendet wird:
- Die dafür bereitgestellten Ressourcen wurden abgeschaltet.
- Der Endpunkt kann Abfragen erst bereitstellen, wenn er erneut gestartet wird.
- Nur Endpunkte, die benutzerdefinierte Modelle bedienen und keine laufenden Updates haben, können beendet werden.
- Gestoppte Endpunkte werden nicht auf das Ressourcenkontingent angerechnet.
- Wenn Anfragen an einen gestoppten Endpunkt gesendet werden, wird ein 400-Fehler zurückgegeben.
Beenden eines Endpunkts
Benutzeroberfläche
Klicken Sie oben rechts auf Stoppen.
REST-API
POST /api/2.0/serving-endpoints/{name}/config:stop
Starten eines Endpunkts
Das Starten eines Endpunkts erstellt eine neue Konfigurationsversion mit den gleichen Eigenschaften wie die vorhandene beendete Konfiguration.
Wenn Sie bereit sind, ein beendetes Modell zu starten, das den Endpunkt bedient:
Benutzeroberfläche
Klicken Sie oben rechts auf Starten.
REST-API
POST /api/2.0/serving-endpoints/{name}/config:start
Löschen eines Modellbereitstellungsendpunkts
Das Löschen eines Endpunkts deaktiviert die Verwendung und löscht alle dem Endpunkt zugeordneten Daten. Sie können das Löschen nicht rückgängigmachen.
Benutzeroberfläche
Klicken Sie oben auf das Optionsmenü, und wählen Sie Löschen aus.
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 eines Modellbereitstellungsendpunkts
Zwei Arten von Protokollen stehen zur Verfügung, um Probleme mit Endpunkten zu debuggen:
- Modellservercontainer-Buildprotokolle: Generiert während der Endpunktinitialisierung, wenn der Container erstellt wird. Diese Protokolle erfassen die Setupphase, einschließlich herunterladen des Modells, Installieren von Abhängigkeiten und Konfigurieren der Laufzeitumgebung. Verwenden Sie diese Protokolle, um zu debuggen, warum ein Endpunkt nicht gestartet oder während der Bereitstellung hängen geblieben ist.
- Modellserverprotokolle: Generiert während der Laufzeit, wenn der Endpunkt aktiv Vorhersagen bedient. Diese Protokolle erfassen eingehende Anforderungen, Modellableitungsausführung, Laufzeitfehler und Protokollierung auf Anwendungsebene aus Dem Modellcode. Verwenden Sie diese Protokolle, um Probleme mit Vorhersagen zu debuggen oder Abfragefehler zu untersuchen.
Auf beide Protokolltypen kann auch über die Endpunkt-Benutzeroberfläche auf der Registerkarte "Protokolle " zugegriffen werden.
Abrufen von Containerbuildprotokollen
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
}
Abrufen der Modellserverprotokolle
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 an einem Modellbereitstellungs-Endpunkt
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.
Benutzeroberfläche
Klicken Sie oben rechts auf der Benutzeroberfläche auf die Schaltfläche "Berechtigungen".
Databricks-Befehlszeilenschnittstelle
databricks permissions get serving-endpoints <endpoint-id>
Weisen Sie dem Benutzer jsmith@example.com die KANN ABFRAGEN-Berechtigung für den Bereitstellungsendpunkt zu.
databricks permissions update serving-endpoints <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.
Eine serverlose Budgetrichtlinie für einen Modellbereitstellungsendpunkt hinzufügen
Wichtig
Dieses Feature befindet sich in der Public Preview und ist nicht für die Bereitstellung von Endpunkten verfügbar, die externe Modelle bereitstellen.
Richtlinien für serverlose Budgets ermöglichen Ihrer Organisation, benutzerdefinierte Tags auf die serverlose Nutzung zur präzisen Zuordnung von Abrechnungen anzuwenden. Wenn Ihr Arbeitsbereich serverlose Budgetrichtlinien verwendet, um serverlose Verwendung zu attributieren, können Sie Ihrem Modell, das Endpunkte bedient, eine serverlose Budgetrichtlinie hinzufügen. Siehe Attributverwendung mit serverlosen Budgetrichtlinien.
Während des Modells, das die Endpunkterstellung bedient, können Sie die serverlose Budgetrichtlinie Ihres Endpunkts im Menü " Budgetrichtlinie " auf der Benutzeroberfläche auswählen. Wenn Ihnen eine serverlose Budgetrichtlinie zugewiesen ist, werden allen von Ihnen erstellten Endpunkten die Serverlose Budgetrichtlinie zugewiesen, auch wenn Sie im Menü " Budgetrichtlinie " keine Richtlinie auswählen.
Wenn Sie über Berechtigungen für einen vorhandenen Endpunkt verfügen MANAGE , können Sie eine serverlose Budgetrichtlinie auf der Seite "Endpunktdetails " auf der Benutzeroberfläche bearbeiten und diesem hinzufügen.
Anmerkung
Wenn Ihnen eine serverlose Budgetrichtlinie zugewiesen wurde, werden Ihre vorhandenen Endpunkte nicht automatisch mit Ihrer Richtlinie kategorisiert. Sie müssen vorhandene Endpunkte manuell aktualisieren, wenn Sie eine serverlose Budgetrichtlinie an sie anfügen möchten.
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. Informationen zu Schemas für Feature-Serving-Endpunkte finden Sie unter Feature Serving Endpoints.
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.titlezeigt den Namen des Bereitstellungsendpunkts an. - Das Feld
serversenthä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. Jederpathkann Eingaben in mehreren Formaten unterstützen. Diese Eingaben werden im FeldoneOfaufgefü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"
}
}
}
}
}
}
}
}
}
}
}
}