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
- API-Schlüssel für den Modellanbieter.
- Databricks-Arbeitsbereich in für externe Modelle unterstützten Regionen.
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.
- Weitere Informationen zu den Standardabfrageparametern für eine Bewertungsanforderung finden Sie unter POST /serving-endpoints/{name}/invocations.
- Abfragen von Foundation-Modellen
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.