Erstellen von Bereitstellungsendpunkten für Basismodelle
In diesem Artikel erfahren Sie, wie Sie Modellbereitstellungsendpunkte erstellen, die Basismodelle bereitstellen.
Databricks Model Serving unterstützt die folgenden Foundation-Modelle:
- Modernste offene Modelle, die von Foundation Model-APIszur Verfügung gestellt werden Diese Modelle sind kuratierte Basismodellarchitekturen, die optimierte Rückschlüsse unterstützen. Basismodelle wie Llama-2-70B-chat, BGE-Large und Mistral-7B stehen für die sofortige Verwendung mit tokenbasierter Bezahlung zur Verfügung. Produktionsworkloads, die Basis- oder optimierte Modelle verwenden, können mithilfe des bereitgestellten Durchsatzes mit Leistungsgarantien bereitgestellt werden.
- Externe Modelle. Dies sind Modelle, die außerhalb von Databricks gehostet werden. Endpunkte, die externe Modelle bedienen, können zentral gesteuert werden, und Kunden können Ratenbegrenzungen und Zugriffssteuerungen für sie festlegen. Beispiele sind Basismodelle wie GPT-4 von OpenAI, Claude von Anthropic und andere.
Die Model Serving bietet die folgenden Optionen für die Erstellung von Modellbereitstellungsendpunkten:
- Die Benutzeroberfläche für die Bereitstellung
- REST-API
- MLflow Deployments SDK
Informationen zum Erstellen von Endpunkten für traditionelle ML- oder Python-Modelle finden Sie unter Erstellen von benutzerdefinierten Modellbereitstellungsendpunkten.
Anforderungen
- Ein Databricks-Arbeitsbereich in einer unterstützten Region.
- Zum Erstellen von Endpunkten mithilfe des MLflow Deployments SDK müssen Sie den MLflow Deployment-Client installieren. Führen Sie zur Installation Folgendes aus:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Erstellen eines Bereitstellungsendpunkts für ein Basismodell
Im Folgenden wird beschrieben, wie Sie einen Endpunkt erstellen, der ein Basismodell bedient, das über Databricks externe Modelle zur Verfügung gestellt wird. Endpunkte, die fein abgestimmten Varianten der Modelle bedienen, die mithilfe von Basismodel-APIs zur Verfügung gestellt werden, finden Sie unter Erstellen Ihres bereitgestellten Durchsatzendpunkts mithilfe der REST-API.
Benutzeroberfläche für Bereitstellung
- Geben Sie im Feld Name einen Namen für Ihren Endpunkt an.
- Im Abschnitt Bereitgestellte Entitäten
- Wählen Sie das Feld Entität aus, um das Formular Bereitgestellte Entität auswählen zu öffnen.
- Wählen Sie das externe Modell aus.
- Wählen Sie den Modellanbieter aus, den Sie verwenden möchten.
- Klicken Sie auf Bestätigen.
- Geben Sie den Namen des externen Modells an, das Sie verwenden möchten. Das Formular wird basierend auf Ihrer Auswahl dynamisch aktualisiert. Sehen Sie sich die verfügbaren externen Modelle an.
- Wählen Sie den Aufgabentyp aus. Verfügbare Aufgaben sind Chats, Abschlüsse und Einbettungen.
- Geben Sie die Konfigurationsdetails für den Zugriff auf den ausgewählten Modellanbieter an. Dies ist in der Regel der geheime Schlüssel, der auf das persönliche Zugriffstoken verweist, das der Endpunkt für den Zugriff auf dieses Modell verwenden soll.
- Klicken Sie auf Erstellen. Die Seite Bereitstellungsendpunkte wird mit dem Status „Nicht bereit“ für den Bereitstellungsendpunkt angezeigt.
REST-API
Wichtig
Die REST-API-Parameter zum Erstellen von Bereitstellungsendpunkten, die Basismodelle bereitstellen, sind als Public Preview verfügbar.
Im folgenden Beispiel wird ein Endpunkt erstellt, der die erste Version des von OpenAI bereitgestellten Modells text-embedding-ada-002
bereitstellt.
Informationen zu Endpunktkonfigurationsparametern finden Sie unter POST /api/2.0/serving-endpoints.
{
"name": "openai_endpoint",
"config":{
"served_entities": [
{
"name": "openai_embeddings",
"external_model":{
"name": "text-embedding-ada-002",
"provider": "openai",
"task": "llm/v1/embeddings",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
},
"rate_limits": [
{
"calls": 100,
"key": "user",
"renewal_period": "minute"
}
],
"tags": [
{
"key": "team",
"value": "gen-ai"
}
]
}
Hier sehen Sie eine Beispielantwort.
{
"name": "openai_endpoint",
"creator": "user@email.com",
"creation_timestamp": 1699617587000,
"last_updated_timestamp": 1699617587000,
"state": {
"ready": "READY"
},
"config": {
"served_entities": [
{
"name": "openai_embeddings",
"external_model": {
"provider": "openai",
"name": "text-embedding-ada-002",
"task": "llm/v1/embeddings",
"openai_config": {
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
},
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1699617587000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "openai_embeddings",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "gen-ai"
}
],
"id": "69962db6b9db47c4a8a222d2ac79d7f8",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
MLflow Deployments SDK
Im Folgenden wird ein Endpunkt für Einbettungen mit OpenAI text-embedding-ada-002
erstellt.
Für Basismodellendpunkte müssen Sie API-Schlüssel für den Modellanbieter bereitstellen, den Sie verwenden möchten. Siehe POST /api/2.0/serving-endpoints in der REST API, um Informationen zu Anforderungs- und Antwortschemadetails zu erhalten.
Sie können auch Endpunkte für Vervollständigungs- und Chataufgaben erstellen, wie im Feld task
im Abschnitt external_model
der Konfiguration angegeben. Informationen zu unterstützten Modellen und Anbietern für die einzelnen Aufgaben finden Sie unter Externe Modelle in der Databricks-Modellbereitstellung.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="chat",
config={
"served_entities": [
{
"name": "completions",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chat",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
Aktualisieren eines Basismodellendpunkts
Nachdem Sie einen Modellendpunkt aktiviert haben, können Sie die Computekonfiguration wie gewünscht festlegen. Diese Konfiguration ist besonders hilfreich, wenn Sie zusätzliche Ressourcen für Ihr Modell benötigen. Workloadgröße und Computekonfiguration spielen eine wichtige Rolle bei der Bereitstellung Ihres Modells.
Bis die neue Konfiguration bereit ist, stellt die alte Konfiguration weiterhin Vorhersagedatenverkehr bereit. Während ein Update ausgeführt wird, kann kein weiteres Update durchgeführt werden. In der Serving-Benutzeroberfläche für die Bereitstellung können Sie eine in Bearbeitung ausgeführte Konfigurationsaktualisierung abbrechen, indem Sie oben rechts auf der Detailseite des Endpunkts die Option Update abbrechen auswählen. Diese Funktionalität ist nur in der Serving-Benutzeroberfläche verfügbar.
Wenn external_model
in einer Endpunktkonfiguration vorhanden ist, kann die Liste der bereitgestellten Entitäten nur ein served-entity-Objekt enthalten. Vorhandene Endpunkte mit einem external_model
-Objekt können nicht so aktualisiert werden, dass sie kein external_model
-Objekt mehr enthalten. Wenn der Endpunkt ohne external_model
-Objekt erstellt wird, können Sie ihn nicht aktualisieren, um ein external_model
-Objekt hinzuzufügen.
REST-API
Um Ihren Basismodellendpunkt zu aktualisieren, finden Sie Anforderungs- und Antwortschemadetails in der Dokumentation zur Updatekonfiguration der REST-API.
{
"name": "openai_endpoint",
"served_entities":[
{
"name": "openai_chat",
"external_model":{
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
}
MLflow Deployments SDK
Um Ihren Basismodellendpunkt zu aktualisieren, finden Sie Anforderungs- und Antwortschemadetails in der Dokumentation zur Updatekonfiguration der REST-API.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.update_endpoint(
endpoint="chat",
config={
"served_entities": [
{
"name": "chats",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chats",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
rate_limits = client.update_endpoint(
endpoint="chat",
config={
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
},
)
assert rate_limits == {
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
}
Zusätzliche Ressourcen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für