Freigeben über


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

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

  1. Geben Sie im Feld Name einen Namen für Ihren Endpunkt an.
  2. Im Abschnitt Bereitgestellte Entitäten
    1. Wählen Sie das Feld Entität aus, um das Formular Bereitgestellte Entität auswählen zu öffnen.
    2. Wählen Sie das externe Modell aus.
    3. Wählen Sie den Modellanbieter aus, den Sie verwenden möchten.
    4. Klicken Sie auf Bestätigen.
    5. 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.
    6. Wählen Sie den Aufgabentyp aus. Verfügbare Aufgaben sind Chats, Abschlüsse und Einbettungen.
    7. 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.
  3. Klicken Sie auf Erstellen. Die Seite Bereitstellungsendpunkte wird mit dem Status „Nicht bereit“ für den Bereitstellungsendpunkt angezeigt.

Erstellen eines Modellbereitstellungsendpunkts

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