Freigeben über


Erstellen von Bereitstellungsendpunkten für generative KI-Modelle

In diesem Artikel erfahren Sie, wie Sie Model Serving-Endpunkte für generative KI-Modelle bereitstellen.

Mosaic AI Model Serving unterstützt die folgenden Modelle:

  • Modernste offene Foundation-Modelle, die von Foundation Model-APIs zur 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. Hierbei handelt es sich um generative 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 Modelle für generative KI 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

Sie können einen Endpunkt erstellen, der fein abgestimmten Varianten von Foundation-Modellen dient, die mithilfe von Foundation Model-APIs bereitgestellten Durchsatz zur Verfügung gestellt werden. Siehe Erstellen Ihres bereitgestellten Durchsatzendpunkts mithilfe der REST-API.

Für Foundation-Modelle, die mithilfe von Foundation-Modell-APIs per Token zur Verfügung gestellt werden, stellt Databricks automatisch bestimmte Endpunkte für den Zugriff auf die unterstützten Modelle in Ihrem Databricks-Arbeitsbereich bereit. Um darauf zuzugreifen, wählen Sie die Registerkarte Dient in der linken Randleiste des Arbeitsbereichs aus. Die Foundation-Modell-APIs befinden sich oben in der Endpunktlistenansicht.

Weitere Informationen zum Abfragen dieser Endpunkte finden Sie unter Query Abfragen von Basismodellen und externen Modellen.

Erstellen eines Bereitstellungsendpunkts für ein externes Modell

Im Folgenden wird beschrieben, wie Sie einen Endpunkt erstellen, der ein generative KI-Modell bedient, das über Databricks externe Modelle zur Verfügung gestellt wird.

Serving-Benutzeroberfläche

  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 externe Modelle 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 externe Modellendpunkte 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. Eine schrittweise Anleitung finden Sie im Tutorial: Erstellen externer Modellendpunkte zum Abfragen von OpenAI-Modellen.

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 Mosaic AI Model Serving.


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 von Model Serving-Endpunkten

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

Weitere Informationen zum Aktualisieren des Endpunkts für Ihr Basismodell oder Ihr externes Modell finden Sie in den Details zu Anforderungs- und Antwortschema 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

Weitere Informationen zum Aktualisieren des Endpunkts für Ihr Basismodell oder Ihr externes Modell finden Sie in den Details zu Anforderungs- und Antwortschema 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