Externe Modelle in der Databricks-Modellbereitstellung

Wichtig

Die Codebeispiele in diesem Artikel veranschaulichen die Verwendung der öffentliche Vorschau der CRUD-API für MLflow-Bereitstellungen.

In diesem Artikel werden externe Modelle in der Databricks-Modellbereitstellung beschrieben, einschließlich der unterstützten Modellanbieter und Einschränkungen.

Was sind externe Modelle?

Externe Modelle sind Drittanbietermodelle, die außerhalb von Databricks gehostet werden. Mithilfe der Modellbereitstellung können Sie die Verwendung und Verwaltung verschiedener LLM-Anbieter (Large Language Model) wie OpenAI und Anthropic innerhalb einer Organisation mit externen Modellen optimieren. Sie können auch die Databricks-Bereitstellung als Anbieter verwenden, um benutzerdefinierte Modelle zu bedienen, die Quotengrenzen für diese Endpunkte bieten. Im Rahmen dieser Unterstützung bietet die Modellbereitstellung eine allgemeine Schnittstelle, die die Interaktion mit diesen Diensten vereinfacht, indem ein einheitlicher Endpunkt zur Behandlung bestimmter LLM-bezogener Anforderungen bereitgestellt wird.

Darüber hinaus bietet die Azure Databricks-Unterstützung für externe Modelle eine zentralisierte Verwaltung von Anmeldeinformationen. Durch das Speichern von API-Schlüsseln an einem sicheren Ort können Organisationen ihren Sicherheitsstatus verbessern, da sie die Gefährdung vertraulicher API-Schlüssel im gesamten System minimieren. Außerdem können Sie verhindern, dass diese Schlüssel innerhalb von Code verfügbar sind oder dass Endbenutzer*innen Schlüssel sicher verwalten müssen.

Im Tutorial: Erstellen externer Modellendpunkte zum Abfragen von OpenAI-Modellen finden Sie Schrittanleitungen zur Erstellung externer Modellendpunkte und zum Abfragen unterstützter Modelle, die von diesen Endpunkten bereitgestellt werden, mithilfe des Bereitstellungs-SDK von MLflow. Anweisungen zur Verwendung der Benutzeroberfläche und der REST-API für die Bereitstellung finden Sie in den folgenden Leitfäden:

Anforderungen

Modellanbieter

Externe Modelle in der Modellbereitstellung wurden entwickelt, um eine Vielzahl von Modellanbietern zu unterstützen. Ein Anbieter stellt die Quelle der Machine Learning-Modelle dar, z. B. OpenAI, Anthropic usw. Jeder Anbieter weist spezifische Merkmale und Konfigurationen auf, die im external_model-Felds der Konfiguration des externen Modellendpunkts festgehalten sind.

Die folgenden Anbieter werden unterstützt:

  • openai: Für Modelle, die von OpenAI und den Azure-Integrationen für Azure OpenAI und Azure OpenAI mit AAD angeboten werden.
  • anthropic: Für Modelle von Anthropic.
  • cohere: Für Modelle von Cohere.
  • amazon-bedrock: Für Modelle, die von Amazon Bedrock angeboten werden.
  • ai21labs: Für Modelle von AI21Labs.
  • google-cloud-vertex-ai: Für Modelle, die von Google Cloud Vertex AI angeboten werden.
  • databricks-model-serving: Für Databricks-Modellbereitstellungsendpunkte mit kompatiblen Schemas. Siehe Endpunktkonfiguration.

Wenden Sie sich an Ihr Databricks-Kontoteam, um Support für einen Anbieter anzufordern, der hier nicht aufgeführt ist.

Unterstützte Modelle

Das gewählte Modell wirkt sich direkt auf die Ergebnisse der Antworten aus den API-Aufrufen aus. Wählen Sie daher ein Modell aus, das den Anforderungen Ihres Anwendungsfalls entspricht. Zum Generieren von Unterhaltungsantworten können Sie beispielsweise ein Chatmodell auswählen. Entsprechend können Sie zum Generieren von Einbettungen von Text ein Einbettungsmodell auswählen.

Die folgende Tabelle enthält eine nicht vollständige Liste der unterstützten Modelle und entsprechenden Endpunkttypen. Modellzuordnungen, die unten aufgeführt sind, können als hilfreiche Anleitung beim Konfigurieren eines Endpunkts für alle neu veröffentlichten Modelltypen, sobald sie für einen bestimmten Anbieter verfügbar sind, verwendet werden. Kunden sind dafür verantwortlich, die Einhaltung anwendbarer Modelllizenzen sicherzustellen.

Hinweis

Angesichts der rasanten Entwicklung von LLMs kann nicht garantiert werden, dass diese Liste immer auf dem neuesten Stand ist.

Modellanbieter llm/v1/completions llm/v1/chat llm/v1/embeddings
OpenAI** * gpt-3.5-turbo-instruct
* babbage-002
* davinci-002
* gpt-3.5-turbo
* gpt-4
* gpt-3.5-turbo-0125
* gpt-3.5-turbo-1106
* gpt-4-0125-preview
* gpt-4-turbo-preview
* gpt-4-1106-preview
* gpt-4-vision-preview
* gpt-4-1106-vision-preview
* text-embedding-ada-002
* text-embedding-3-large
* text-embedding-3-small
Azure OpenAI** * text-davinci-003
* gpt-35-turbo-instruct
* gpt-35-turbo
* gpt-35-turbo-16k
* gpt-4
* gpt-4-32k
* text-embedding-ada-002
* text-embedding-3-large
* text-embedding-3-small
Anthropic * claude-1
* claude-1.3-100k
* claude-2
* claude-2.1
* claude-2.0
* claude-instant-1.2
* claude-3-opus-20240229
* claude-3-sonnet-20240229
* claude-2.1
* claude-2.0
* claude-instant-1.2
Cohere** * command
* command-light-nightly
* command-light
* command-nightly
* embed-english-v2.0
* embed-multilingual-v2.0
* embed-english-light-v2.0
* embed-english-v3.0
* embed-english-light-v3.0
* embed-multilingual-v3.0
* embed-multilingual-light-v3.0
Databricks-Modellbereitstellung Databricks-Bereitstellungsendpunkt Databricks-Bereitstellungsendpunkt Databricks-Bereitstellungsendpunkt
Amazon Bedrock Anthropic:

* claude-instant-v1
* claude-v1
* claude-v2

Cohere:

* command-text-v14
* command-text-v14:7:4k
* command-light-text-v14
* command-light-text-v14:7:4k

AI21 Labs:

* j2-grande-instruct
* j2-jumbo-instruct
* j2-mid
* j2-mid-v1
* j2-ultra j2-ultra-v1
Anthropic:

* claude-instant-v1:2:100k
* claude-v2
* claude-v2:0:18k
* claude-v2:0:100k
* claude-v2:1
* claude-v2:1:18k
* claude-v2:1:200k
* claude-3-sonnet-20240229-v1:0
Amazon:

* titan-embed-text-v1
* titan-embed-g1-text-02
* titan-embed-text-v1:2:8k
AI21 Labs† * j2-mid
* j2-light
* j2-ultra
Google Cloud Vertex AI text-bison * chat-bison
* gemini-pro
textembedding-gecko

** Der Modellanbieter unterstützt die optimierten Vervollständigungs- und Chatmodelle. Um ein optimiertes Modell abzufragen, füllen Sie das name-Feld der external model-Konfiguration mit dem Namen Ihres optimierten Modells auf.

† Modellanbieter unterstützt benutzerdefinierte Vervollständigungsmodelle.

Verwenden von Modellen, die auf Databricks-Modellbereitstellungsendpunkten bereitgestellt werden

Databricks-Modellbereitstellungsendpunkte als Anbieter, wird für die Endpunkttypen llm/v1/completions, llm/v1/chat und llm/v1/embeddings unterstützt. Diese Endpunkte müssen die als erforderlich markierten Standardabfrageparameter akzeptieren, während andere Parameter möglicherweise ignoriert werden, je nachdem, ob der Databricks-Modellbereitstellungsendpunkt sie unterstützt.

Weitere Informationen zu Standardabfrageparametern finden Sie unter POST /serving-endpoints/{name}/invocations in der API-Referenz.

Diese Endpunkte müssen Antworten im folgenden OpenAI-Format erzeugen.

Für Abschlussaufgaben:

{
"id": "123", # Not Required
"model": "test_databricks_model",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

Für Chataufgaben:

{
  "id": "123", # Not Required
  "model": "test_chat_model",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "finish_reason": "stop"
  },
  {
    "index": 1,
    "message": {
      "role": "human",
      "content": "\n\nWhat is the weather in San Francisco?",
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Für Einbettungsaufgaben:

{
  "data": [
    {
      "embedding": [
       0.0023064255,
        -0.009327292,
        .... # (1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    },
    {
      "embedding": [
        0.0023064255,
        -0.009327292,
        .... #(1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    }
  ],
  "model": "test_embedding_model",
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Endpunktkonfiguration

Um externe Modelle zu bedienen und abzufragen, müssen Sie einen Bereitstellungsendpunkt konfigurieren. Weitere Informationen finden Sie unter Erstellen von benutzerdefinierten Model Serving-Endpunkten.

Für einen externen Modellbereitstellungsendpunkt müssen Sie das Feld external_model und dessen Parameter im Abschnitt served_entities der Endpunktkonfiguration einschließen.

Das Feld external_model definiert das Modell, an das dieser Endpunkt Anforderungen weiterleitet. Bei der Angabe eines Modells ist es wichtig, dass der Anbieter das angeforderte Modell unterstützt. Beispielsweise unterstützt openai als Anbieter Modelle wie text-embedding-ada-002, aber andere Anbieter möglicherweise nicht. Wenn das Modell vom Anbieter nicht unterstützt wird, gibt Databricks beim Versuch, Anforderungen an dieses Modell weiterzuleiten, einen HTTP 4xx-Fehler zurück.

In der folgenden Tabelle sind die Parameter für das Feld external_model zusammengefasst. Weitere Informationen zu Endpunktkonfigurationsparametern finden Sie unter POST /api/2.0/serving-endpoints.

Parameter Beschreibungen
name Der Name des zu verwendenden Modells. Beispiel : gpt-3.5-turbo für das OpenAI GPT-3.5-Turbo-Modell.
provider Gibt den Namen des Anbieters für dieses Modell an. Dieser Zeichenfolgenwert muss einem unterstützten externen Modellanbieterentsprechen. Beispiel: openai für OpenAI GPT-3.5-Modelle.
task Die Aufgabe entspricht dem Typ der von Ihnen gewünschten Sprachmodellinteraktion. Unterstützte Aufgaben sind „llm/v1/completions”, „llm/v1/chat”, „llm/v1/embeddings”.
<provider>_config Enthält alle zusätzlichen Konfigurationsdetails, die für das Modell erforderlich sind. Diese umfassen die API-Basis-URL und den API-Schlüssel. Siehe Konfigurieren des Anbieters für einen Endpunkt.

Im Folgenden sehen Sie ein Beispiel zum Erstellen eines externen Modellendpunkts mithilfe der create_endpoint()-API. In diesem Beispiel wird eine an den Abschlussendpunkt gesendete Anforderung an das von anthropic bereitgestellte claude-2-Modell weitergeleitet.

import mlflow.deployments

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

client.create_endpoint(
    name="anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "claude-2",
                    "provider": "anthropic",
                    "task": "llm/v1/completions",
                    "anthropic_config": {
                        "anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
                    }
                }
            }
        ]
    }
)

Konfigurieren des Anbieters für einen Endpunkt

Wenn Sie einen Endpunkt erstellen, müssen Sie die erforderlichen Konfigurationen für den angegebenen Modellanbieter angeben. In den folgenden Abschnitten werden die verfügbaren Endpunktkonfigurationsparameter für jeden Modellanbieter zusammengefasst.

OpenAI

Konfigurationsparameter Beschreibung Erforderlich Standard
openai_api_key Der API-Schlüssel für den OpenAI-Dienst. Ja
openai_api_type Ein optionales Feld, um den Typ der zu verwendenden OpenAI-API anzugeben. Nein
openai_api_base Die Basis-URL für die OpenAI-API. Nein https://api.openai.com/v1
openai_api_version Ein optionales Feld zum Angeben der OpenAI-API-Version. Nein
openai_organization Ein optionales Feld zum Angeben der Organisation in OpenAI. Nein

Cohere

Konfigurationsparameter Beschreibung Erforderlich Standard
cohere_api_key Der API-Schlüssel für den Cohere-Dienst. Ja

Anthropic

Konfigurationsparameter Beschreibung Erforderlich Standard
anthropic_api_key Der API-Schlüssel für den Anthropic-Dienst. Ja

Azure OpenAI

Azure OpenAI verfügt im Vergleich zum direkten OpenAI-Service über bestimmte Funktionen. Eine Übersicht finden Sie in der Vergleichsdokumentation.

Konfigurationsparameter Beschreibung Erforderlich Standard
openai_api_key Der API-Schlüssel für den Azure OpenAI-Dienst. Ja
openai_api_type Passen Sie diesen Parameter an, um das bevorzugte Sicherheitszugriffs-Überprüfungsprotokoll darzustellen. Verwenden Sie azure für die Überprüfung des Zugriffstokens. Verwenden Sie azuread für die Authentifizierung mit Azure Active Directory (Azure AD). Ja
openai_api_base Die Basis-URL für den Azure OpenAI-API-Dienst, der von Azure bereitgestellt wird. Ja
openai_api_version Die Version des zu verwendenden Azure OpenAI-Diensts, angegeben nach einem Datum. Ja
openai_deployment_name Der Name der Bereitstellungsressource für den Azure OpenAI-Dienst. Ja
openai_organization Ein optionales Feld zum Angeben der Organisation in OpenAI. Nein

Im folgenden Beispiel wird das Erstellen eines Endpunkts mit Azure OpenAI veranschaulicht:

client.create_endpoint(
    name="openai-chat-endpoint",
    config={
        "served_entities": [{
            "external_model": {
                "name": "gpt-3.5-turbo",
                "provider": "openai",
                "task": "llm/v1/chat",
                "openai_config": {
                    "openai_api_type": "azure",
                    "openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}",
                    "openai_api_base": "https://my-azure-openai-endpoint.openai.azure.com",
                    "openai_deployment_name": "my-gpt-35-turbo-deployment",
                    "openai_api_version": "2023-05-15"
                }
            }
        }]
    }
)

Google Cloud Vertex AI

Konfigurationsparameter Beschreibung Erforderlich Standard
private_key Dies ist der private Schlüssel für das Dienstkonto, das Zugriff auf den Google Cloud Vertex AI-Dienst hat. Weitere Informationen finden Sie unter Best Practices für die Verwaltung von Dienstkontoschlüsseln. Ja
region Dies ist die Region für den Google Cloud Vertex AI-Dienst. Weitere Informationen finden Sie im Artikel zu den unterstützten Regionen. Einige Modelle sind nur in bestimmten Regionen verfügbar. Ja
project_id Dies ist die Google Cloud-Projekt-ID, der das Dienstkonto zugeordnet ist. Ja

Amazon Bedrock

Um Amazon Bedrock als externen Modellanbieter zu verwenden, müssen Kunden/Kundinnen sicherstellen, dass Bedrock in der angegebenen AWS-Region aktiviert ist und dass das angegebene AWS-Schlüsselpaar über die entsprechenden Berechtigungen für die Interaktion mit Bedrock-Diensten verfügt. Weitere Informationen finden Sie unter AWS Identitäts- und Zugriffsverwaltung.

Konfigurationsparameter Beschreibung Erforderlich Standard
aws_region Die zu verwendende AWS-Region. Dort muss Bedrock aktiviert sein. Ja
aws_access_key_id Eine AWS-Zugriffsschlüssel-ID mit Berechtigungen für die Interaktion mit Bedrock-Diensten. Ja
aws_secret_access_key Ein geheimer AWS-Zugriffsschlüssel, der mit der Zugriffsschlüssel-ID gekoppelt ist, mit Berechtigungen für die Interaktion mit Bedrock-Diensten. Ja
bedrock_provider Der zugrunde liegende Anbieter in Amazon Bedrock. Unterstützte Werte (Groß- und Kleinschreibung beachten) umfassen: Anthropic, Cohere, AI21Labs, Amazon Ja

Im folgenden Beispiel wird veranschaulicht, wie ein Endpunkt mit Amazon Bedrock erstellt wird.

client.create_endpoint(
    name="bedrock-anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "external_model": {
                    "name": "claude-v2",
                    "provider": "amazon-bedrock",
                    "task": "llm/v1/completions",
                    "amazon_bedrock_config": {
                        "aws_region": "<YOUR_AWS_REGION>",
                        "aws_access_key_id": "{{secrets/my_amazon_bedrock_secret_scope/aws_access_key_id}}",
                        "aws_secret_access_key": "{{secrets/my_amazon_bedrock_secret_scope/aws_secret_access_key}}",
                        "bedrock_provider": "anthropic",
                    },
                }
            }
        ]
    },
)

Wenn AWS-Berechtigungsprobleme auftreten, empfiehlt Databricks, dass Sie die Anmeldeinformationen direkt mit der Amazon Bedrock-API überprüfen.

AI21 Labs

Konfigurationsparameter Beschreibung Erforderlich Standard
ai21labs_api_key Dies ist der API-Schlüssel für den AI21 Labs-Dienst. Ja

Abfragen eines externen Modellendpunkts

Nachdem Sie einen externen Modellendpunkt erstellt haben, ist er bereit, Datenverkehr von Benutzer*innen zu empfangen.

Sie können Bewertungsanforderungen mithilfe des OpenAI-Clients, der REST-API oder des MLflow-Bereitstellungs-SDKs an den Endpunkt senden.

Im folgenden Beispiel wird das von Anthropic gehostete claude-2-Abschlussmodell mithilfe des OpenAI-Clients abgefragt. Um den OpenAI-Client zu verwenden, füllen Sie das model-Feld mit dem Namen des Modellbereitstellungsendpunkts auf, der das Modell hostet, das Sie abfragen möchten.

In diesem Beispiel wird ein zuvor erstellter Endpunkt anthropic-completions-endpoint verwendet, der für den Zugriff auf externe Modelle vom Anthropic-Modellanbieter konfiguriert ist. Erfahren Sie, wie Sie externe Modellendpunkte erstellen.

Unter Unterstützte Modelle finden Sie weitere Modelle, die Sie abfragen können, sowie deren Anbieter.

import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

completion = client.completions.create(
  model="anthropic-completions-endpoint",
  prompt="what is databricks",
  temperature=1.0
)
print(completion)

Erwartetes Ausgabeantwortformat:

{
"id": "123", # Not Required
"model": "anthropic-completions-endpoint",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

Zusätzliche Abfrageparameter

Sie können im Rahmen Ihrer Abfrage zusätzliche Parameter übergeben, die vom Anbieter des Endpunkts unterstützt werden.

Beispiel:

  • logit_bias (unterstützt von OpenAI, Cohere).
  • top_k (unterstützt von Anthropic, Cohere).
  • frequency_penalty (unterstützt von OpenAI, Cohere).
  • presence_penalty (unterstützt von OpenAI, Cohere).
  • stream (unterstützt von OpenAI, Anthropic, Cohere, Amazon Bedrock für Anthropic). Dies ist nur für Chat- und Vervollständigungsanforderungen verfügbar.

Begrenzungen

Je nach ausgewähltem externen Modell kann ihre Konfiguration dazu führen, dass Ihre Daten außerhalb der Region, aus der Ihre Daten stammen, verarbeitet werden.

Weitere Informationen finden Sie unter Grenzwerte und Regionen für die Modellbereitstellung.

Zusätzliche Ressourcen