Freigeben über


Erstellen eines Foundationmodells, das Endpunkte bedient

In diesem Artikel erfahren Sie, wie Sie Modellbereitstellungsendpunkte erstellen, die Basismodelle bereitstellen und nutzen.

Mosaic AI Model Serving unterstützt die folgenden Modelle:

  • Externe Modelle. Dies sind Foundation-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 hierfür sind Foundation-Modelle wie OpenAI GPT-4 und Anthropics Claude.
  • 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, z. B. Meta-Llama-3.3-70B-Instruct und GTE-Large, stehen für die sofortige Verwendung mit Pay-per-Token-Preisen zur Verfügung. Produktionsworkloads, die Basis- oder optimierte Modelle verwenden, können mithilfe des bereitgestellten Durchsatzes mit Leistungsgarantien bereitgestellt werden.

Die Model Serving bietet die folgenden Optionen für die Erstellung von Modellbereitstellungsendpunkten:

  • Benutzeroberfläche für das Servieren
  • REST-API
  • MLflow Deployments SDK

Informationen zum Erstellen von Endpunkten, die herkömmliche ML- oder Python-Modelle bedienen, finden Sie unter Benutzerdefinierte Modell-Endpoints erstellen.

Anforderungen

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

Erstellen Sie einen Bereitstellungsendpunkt für ein Basismodell

Sie können einen Endpunkt erstellen, der fein abgestimmte Varianten von Foundation-Modellen bereitstellt, die über den bereitgestellten Durchsatz von Foundation Model-APIs verfügbar gemacht werden. Siehe Erstellen Ihres bereitgestellten Durchsatzendpunkts mithilfe der REST-API.

Für Foundation-Modelle, die mithilfe von Foundation-Modell-APIs mit Bezahlung pro Token zur Verfügung gestellt werden, stellt Databricks automatisch spezifische Endpunkte bereit, um in Ihrem Databricks-Arbeitsbereich auf die unterstützten Modelle zuzugreifen. Um darauf zuzugreifen, wählen Sie die Registerkarte Bereitstellung in der linken Seitenleiste des Arbeitsbereichs aus. Die Foundation-Modell-APIs befinden sich oben in der Endpunktlistenansicht.

Informationen zum Abfragen dieser Endpunkte finden Sie unter Verwenden von Foundation-Modellen.

Erstellen eines externen Modell-Bereitstellungsendpunkts

Im Folgenden wird beschrieben, wie Sie einen Endpunkt erstellen, der ein Foundation-Modell abfragt, das mithilfe externer Databricks-Modelle zur Verfügung gestellt wurde.

Serving-Benutzeroberfläche

  1. Geben Sie im Feld Name einen Namen für Ihren Endpunkt an.
  2. Im Abschnitt Bediente 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 Foundation-Modelle aus.
    3. Wählen Sie im Feld "Foundation-Modell auswählen" den Modellanbieter aus den unter externen Modellanbietern aufgeführten Modellanbietern aus. Das Formular wird basierend auf ihrer Modellanbieterauswahl dynamisch aktualisiert.
    4. Klicken Sie auf Bestätigen.
    5. 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.
    6. Wählen Sie die Aufgabe aus. Verfügbare Aufgaben sind Chat, Fertigstellung und Einbettungen.
    7. Wählen Sie den Namen des externen Modells aus, das Sie verwenden möchten. Die Liste der Modelle wird basierend auf ihrer Aufgabenauswahl dynamisch aktualisiert. Sehen Sie sich die verfügbaren externen Modelle an.
  3. Klicken Sie auf Erstellen. Die Seite Bedienendpunkte wird angezeigt, wobei der Bedienendpunkt-Zustand als „Nicht bereit“ angezeigt wird.

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",
}

Modellbereitstellungsendpunkte aktualisieren

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. Die Größe der Arbeitslast und die Konfiguration der Berechnungen spielen eine entscheidende Rolle bei der Zuteilung von Ressourcen für die Ausführung 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 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

Informationen zum Aktualisieren Ihres Endpunkts finden Sie in der Update-Konfigurationsdokumentation der REST-API für Details zu Anforderungs- und Antwortschemata.

{
  "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

Informationen zum Aktualisieren Ihres Endpunkts finden Sie in der REST-API-Update-Konfigurationsdokumentation für Details zum Anforderungs- und Antwortschema.

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