Externa modeller i Mosaic AI Model Serving
Viktigt!
Kodexemplen i den här artikeln visar användningen av CRUD-API:et public preview MLflow Deployments.
Den här artikeln beskriver externa modeller i Mosaic AI Model Serving, inklusive den stödda modellen providers och dess begränsningar.
Vad är externa modeller?
Viktigt!
Nu kan du konfigurera Mosaic AI Gateway på modell som betjänar slutpunkter som hanterar externa modeller. AI Gateway ger styrnings-, övervaknings- och produktionsberedskap till den här modellen som betjänar slutpunkter. Se Mosaic AI Gateway.
Externa modeller är tredjepartsmodeller som finns utanför Databricks. Med hjälp av modellservering kan du med externa modeller effektivisera användningen och hanteringen av olika stora språkmodeller (LLM) providers, till exempel OpenAI och Anthropic, inom en organisation. Du kan också använda Mosaic AI Model Serving som leverantör för att hantera anpassade modeller, som erbjuder hastighetsbegränsningar för dessa slutpunkter. Som en del av det här stödet erbjuder Model Serving ett högnivågränssnitt som förenklar interaktionen med dessa tjänster genom att tillhandahålla en enhetlig slutpunkt för att hantera specifika LLM-relaterade begäranden.
Dessutom tillhandahåller Azure Databricks-stöd för externa modeller centraliserad hantering av autentiseringsuppgifter. Genom att lagra API-nycklar på en säker plats kan organisationer förbättra sin säkerhetsstatus genom att minimera exponeringen av känsliga API-nycklar i hela systemet. Det hjälper också till att förhindra att dessa nycklar exponeras i kod eller kräver att slutanvändarna hanterar nycklar på ett säkert sätt.
Se Självstudie: Skapa externa modellslutpunkter för att fråga OpenAI-modeller för stegvis vägledning om hur du skapar och frågar modeller som stöds av dessa slutpunkter med hjälp av SDK för MLflow-distributioner. Se följande guider för instruktioner om hur du använder användargränssnittet för servering och REST-API:et:
Krav
- API-nyckel- eller autentiseringsfält för modellprovidern.
- Databricks-arbetsyta i regioner som stöds av externa modeller.
Modell providers
Externa modeller i Model Serving är utformade för att stödja en mängd olika modeller providers. En provider representerar källan till maskininlärningsmodellerna, till exempel OpenAI, Anthropic och så vidare. Varje provider har sina specifika egenskaper och konfigurationer som är inkapslade inom external_model
fältet för den externa modellens slutpunktskonfiguration.
Följande providers stöds:
- openai: För modeller som erbjuds av OpenAI och Azure-integreringarna för Azure OpenAI och Azure OpenAI med AAD.
- antropiska: För modeller som erbjuds av antropiska.
- cohere: För modeller som erbjuds av Cohere.
- amazon-bedrock: För modeller som erbjuds av Amazon Bedrock.
- google-cloud-vertex-ai: För modeller som erbjuds av Google Cloud Vertex AI.
- databricks-model-serving: För Mosaic AI Model Serving-slutpunkter med kompatibla scheman. Se Slutpunktskonfiguration.
Kontakta ditt Databricks-kontoteam om du vill begära support för en leverantör som inte finns med här.
Modeller som stöds
Den modell du väljer påverkar direkt resultatet av de svar som du get från API-anropen. Välj därför en modell som passar dina krav för användningsfall. För att generera konversationssvar kan du till exempel välja en chattmodell. För att generera inbäddningar av text kan du däremot välja en inbäddningsmodell.
Använda modeller som hanteras på Mosaic AI Model Serving-slutpunkter
Mosaic AI Model Serving-slutpunkter som leverantör stöds för slutpunktstyperna llm/v1/completions
, llm/v1/chat
och llm/v1/embeddings
. Dessa slutpunkter måste acceptera standardfrågan parameters markerad som obligatorisk, medan andra parameters kan ignoreras beroende på om slutpunkten för Mosaic AI Model Serving stöder dem eller inte.
Se POST /serving-endpoints/{name}/invocations i API-referensen för standardfråga parameters.
Dessa slutpunkter måste generera svar i följande OpenAI-format.
För slutförda uppgifter:
{
"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 chattuppgifter:
{
"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 inbäddningsuppgifter:
{
"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
}
}
Slutpunktskonfiguration
För att kunna hantera och fråga externa modeller måste du konfigurera en serverdelsslutpunkt. Se Skapa en extern modell som betjänar slutpunkten
För en extern modell som betjänar slutpunkten måste du inkludera fältet external_model
och dess parameters i avsnittet served_entities
i slutpunktskonfigurationen. Om du konfigurerar flera externa modeller i en serverslutpunkt måste du ange en traffic_config
för att definiera trafikdirigeringsprocenten för varje extern modell.
Fältet external_model
definierar den modell som slutpunkten vidarebefordrar begäranden till. När du anger en modell är det viktigt att providern stöder den modell som du begär. Till exempel stöder openai
som leverantör modeller som text-embedding-ada-002
, men andra providers kanske inte gör det. Om modellen inte stöds av providern returnerar Databricks ett HTTP 4xx-fel när begäranden dirigeras till modellen.
I table nedan sammanfattas fältet external_model
parameters. Se POST /api/2.0/serving-endpoints för slutpunktskonfiguration parameters.
Parameter | Beskrivningar |
---|---|
name |
Namnet på den modell som ska användas. Till exempel gpt-3.5-turbo för OpenAI:s GPT-3.5-Turbo modell. |
provider |
Anger namnet på providern för den här modellen. Det här strängvärdet måste motsvara en extern modellprovider som stöds. Till exempel openai för OpenAI:s GPT-3.5 modeller. |
task |
Uppgiften motsvarar den typ av språkmodellinteraktion du önskar. Uppgifter som stöds är "llm/v1/completions", "llm/v1/chat", "llm/v1/embeddings". |
<provider>_config |
Innehåller ytterligare konfigurationsinformation som krävs för modellen. Detta inkluderar att ange API-bas-URL:en och API-nyckeln. Se Konfigurera providern för en slutpunkt. |
Följande är ett exempel på hur du skapar en extern modellslutpunkt med hjälp av API:et create_endpoint()
. I det här exemplet vidarebefordras en begäran som skickas till slutpunkten för slutförande till modellen claude-2
som tillhandahålls av anthropic
.
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}}"
}
}
}
]
}
)
Konfigurera providern för en slutpunkt
När du skapar en slutpunkt måste du ange de konfigurationer som krävs för den angivna modellprovidern. Följande avsnitt sammanfattar den tillgängliga slutpunktskonfigurationen parameters för varje modellprovider.
Kommentar
Databricks krypterar och lagrar de angivna credentials på ett säkert sätt för varje modellprovider. Dessa credentials tas bort automatiskt när deras associerade slutpunkter tas bort.
OpenAI
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
openai_api_key |
Den hemliga nyckelreferensen för Azure Databricks för en OpenAI API-nyckel med hjälp av OpenAI-tjänsten. Om du föredrar att klistra in DIN API-nyckel direkt kan du läsa openai_api_key_plaintext . |
Du måste ange en API-nyckel med något av följande fält: openai_api_key eller openai_api_key_plaintext . |
|
openai_api_key_plaintext |
OpenAI API-nyckeln med hjälp av OpenAI-tjänsten som tillhandahålls som en klartextsträng. Om du föredrar att referera till din nyckel med Hjälp av Azure Databricks-hemligheter kan du läsa openai_api_key . |
Du måste ange en API-nyckel med något av följande fält: openai_api_key eller openai_api_key_plaintext måste anges. |
|
openai_api_type |
Ett valfritt fält för att ange vilken typ av OpenAI API som ska användas. | Nej | openai |
openai_api_base |
Bas-URL:en för OpenAI-API:et. | Nej | https://api.openai.com/v1 |
openai_api_version |
Ett valfritt fält för att ange OpenAI API-versionen. | Nej | |
openai_organization |
Ett valfritt fält för att ange organisationen i OpenAI. | Nej |
Sammanstängd
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
cohere_api_key |
Den hemliga nyckelreferensen för Azure Databricks för en cohere API-nyckel. Om du föredrar att klistra in DIN API-nyckel direkt kan du läsa cohere_api_key_plaintext . |
Du måste ange en API-nyckel med något av följande fält: cohere_api_key eller cohere_api_key_plaintext . |
|
cohere_api_key_plaintext |
Cohere API-nyckeln tillhandahålls som en klartextsträng. Om du föredrar att referera till din nyckel med Hjälp av Azure Databricks-hemligheter kan du läsa cohere_api_key . |
Du måste ange en API-nyckel med något av följande fält: cohere_api_key eller cohere_api_key_plaintext . |
|
cohere_api_base |
Bas-URL:en för cohere-tjänsten. | Nej |
Anthropic
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
anthropic_api_key |
Den hemliga nyckelreferensen för Azure Databricks för en antropisk API-nyckel. Om du föredrar att klistra in DIN API-nyckel direkt kan du läsa anthropic_api_key_plaintext . |
Du måste ange en API-nyckel med något av följande fält: anthropic_api_key eller anthropic_api_key_plaintext . |
|
anthropic_api_key_plaintext |
Den antropiska API-nyckeln som tillhandahålls som en klartextsträng. Om du föredrar att referera till din nyckel med Hjälp av Azure Databricks-hemligheter kan du läsa anthropic_api_key . |
Du måste ange en API-nyckel med något av följande fält: anthropic_api_key eller anthropic_api_key_plaintext . |
Azure OpenAI
Azure OpenAI har distinkta funktioner jämfört med den direkta OpenAI-tjänsten. En översikt finns i jämförelsedokumentationen.
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
openai_api_key |
Den hemliga nyckelreferensen för Azure Databricks för en OpenAI API-nyckel med hjälp av Azure-tjänsten. Om du föredrar att klistra in DIN API-nyckel direkt kan du läsa openai_api_key_plaintext . |
Du måste ange en API-nyckel med något av följande fält: openai_api_key eller openai_api_key_plaintext . |
|
openai_api_key_plaintext |
OpenAI API-nyckeln med hjälp av Azure-tjänsten som tillhandahålls som en klartextsträng. Om du föredrar att referera till din nyckel med Hjälp av Azure Databricks-hemligheter kan du läsa openai_api_key . |
Du måste ange en API-nyckel med något av följande fält: openai_api_key eller openai_api_key_plaintext . |
|
openai_api_type |
Används azure för validering av åtkomsttoken. |
Ja | |
openai_api_base |
Bas-URL:en för Azure OpenAI API-tjänsten som tillhandahålls av Azure. | Ja | |
openai_api_version |
Den version av Azure OpenAI-tjänsten som ska utnyttjas, som anges av ett datum. | Ja | |
openai_deployment_name |
Namnet på distributionsresursen för Azure OpenAI-tjänsten. | Ja | |
openai_organization |
Ett valfritt fält för att ange organisationen i OpenAI. | Nej |
Om du använder Azure OpenAI med Microsoft Entra-ID använder du följande parameters i slutpunktskonfigurationen.
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
microsoft_entra_tenant_id |
Klientorganisations-ID för Microsoft Entra-ID-autentisering. | Ja | |
microsoft_entra_client_id |
Klient-ID för Microsoft Entra-ID-autentisering. | Ja | |
microsoft_entra_client_secret |
Den hemliga nyckelreferensen för Azure Databricks för en klienthemlighet som används för Microsoft Entra-ID-autentisering. Om du föredrar att klistra in klienthemligheten direkt kan du läsa microsoft_entra_client_secret_plaintext . |
Du måste ange en API-nyckel med något av följande fält: microsoft_entra_client_secret eller microsoft_entra_client_secret_plaintext . |
|
microsoft_entra_client_secret_plaintext |
Klienthemligheten som används för Microsoft Entra ID-autentisering tillhandahålls som en klartextsträng. Om du föredrar att referera till din nyckel med Hjälp av Azure Databricks-hemligheter kan du läsa microsoft_entra_client_secret . |
Du måste ange en API-nyckel med något av följande fält: microsoft_entra_client_secret eller microsoft_entra_client_secret_plaintext . |
|
openai_api_type |
Används azuread för autentisering med Microsoft Entra-ID. |
Ja | |
openai_api_base |
Bas-URL:en för Azure OpenAI API-tjänsten som tillhandahålls av Azure. | Ja | |
openai_api_version |
Den version av Azure OpenAI-tjänsten som ska utnyttjas, som anges av ett datum. | Ja | |
openai_deployment_name |
Namnet på distributionsresursen för Azure OpenAI-tjänsten. | Ja | |
openai_organization |
Ett valfritt fält för att ange organisationen i OpenAI. | Nej |
I följande exempel visas hur du skapar en slutpunkt med Azure OpenAI:
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 | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
private_key |
Hemlig nyckelreferens för Azure Databricks för en privat nyckel för tjänstkontot som har åtkomst till Google Cloud Vertex AI-tjänsten. Se Metodtips för att hantera tjänstkontonycklar. Om du föredrar att klistra in DIN API-nyckel direkt kan du läsa private_key_plaintext . |
Du måste ange en API-nyckel med något av följande fält: private_key eller private_key_plaintext . |
|
private_key_plaintext |
Den privata nyckeln för tjänstkontot som har åtkomst till Google Cloud Vertex AI-tjänsten tillhandahålls som en klartexthemlighet. Se Metodtips för att hantera tjänstkontonycklar. Om du föredrar att referera till din nyckel med Hjälp av Azure Databricks-hemligheter kan du läsa private_key . |
Du måste ange en API-nyckel med något av följande fält: private_key eller private_key_plaintext . |
|
region |
Det här är regionen för Google Cloud Vertex AI-tjänsten. Mer information finns i regioner som stöds. Vissa modeller är endast tillgängliga i specifika regioner. | Ja | |
project_id |
Det här är Google Cloud-projekt-ID:t som tjänstkontot är associerat med. | Ja |
Amazon Berggrund
Om du vill använda Amazon Bedrock som en extern modellleverantör måste kunderna se till att Bedrock är aktiverat i den angivna AWS-regionen och att det angivna AWS-nyckelparet har rätt behörighet att interagera med Bedrock-tjänster. Mer information finns i AWS-identitets- och åtkomsthantering.
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
aws_region |
Den AWS-region som ska användas. Berggrund måste aktiveras där. | Ja | |
aws_access_key_id |
Den hemliga nyckelreferensen för Azure Databricks för ett AWS-åtkomstnyckel-ID med behörighet att interagera med Bedrock-tjänster. Om du föredrar att klistra in DIN API-nyckel direkt kan du läsa aws_access_key_id_plaintext . |
Du måste ange en API-nyckel med något av följande fält: aws_access_key_id eller aws_access_key_id_plaintext . |
|
aws_access_key_id_plaintext |
Ett AWS-åtkomstnyckel-ID med behörighet att interagera med Bedrock-tjänster som tillhandahålls som en klartextsträng. Om du föredrar att referera till din nyckel med Hjälp av Azure Databricks-hemligheter kan du läsa aws_access_key_id . |
Du måste ange en API-nyckel med något av följande fält: aws_access_key_id eller aws_access_key_id_plaintext . |
|
aws_secret_access_key |
Den hemliga nyckelreferensen för Azure Databricks för en AWS-hemlig åtkomstnyckel i kombination med åtkomstnyckelns ID, med behörighet att interagera med Bedrock-tjänster. Om du föredrar att klistra in DIN API-nyckel direkt kan du läsa aws_secret_access_key_plaintext . |
Du måste ange en API-nyckel med något av följande fält: aws_secret_access_key eller aws_secret_access_key_plaintext . |
|
aws_secret_access_key_plaintext |
En AWS-hemlig åtkomstnyckel i kombination med åtkomstnyckelns ID, med behörighet att interagera med Bedrock-tjänster som tillhandahålls som en klartextsträng. Om du föredrar att referera till din nyckel med Hjälp av Azure Databricks-hemligheter kan du läsa aws_secret_access_key . |
Du måste ange en API-nyckel med något av följande fält: aws_secret_access_key eller aws_secret_access_key_plaintext . |
|
bedrock_provider |
Den underliggande leverantören i Amazon Bedrock. Stöd för values (skiftlägesokänslig) är: Antropisk, Cohere, AI21Labs, Amazon | Ja |
I följande exempel visas hur du skapar en slutpunkt med Amazon Bedrock med hjälp av åtkomstnycklar.
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",
},
}
}
]
},
)
Om det finns AWS-behörighetsproblem rekommenderar Databricks att du verifierar credentials direkt med Amazon Bedrock API.
AI21 Labs
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
ai21labs_api_key |
Den hemliga nyckelreferensen för Azure Databricks för en API-nyckel för AI21 Labs. Om du föredrar att klistra in DIN API-nyckel direkt kan du läsa ai21labs_api_key_plaintext . |
Du måste ange en API-nyckel med något av följande fält: ai21labs_api_key eller ai21labs_api_key_plaintext . |
|
ai21labs_api_key_plaintext |
En API-nyckel för AI21 Labs som tillhandahålls som en klartextsträng. Om du föredrar att referera till din nyckel med Hjälp av Azure Databricks-hemligheter kan du läsa ai21labs_api_key . |
Du måste ange en API-nyckel med något av följande fält: ai21labs_api_key eller ai21labs_api_key_plaintext . |
Konfigurera AI Gateway på en slutpunkt
Du kan också konfigurera slutpunkten för att aktivera Mosaic AI Gateway-funktioner , till exempel hastighetsbegränsning, användningsspårning och skyddsräcken.
Se Konfigurera AI Gateway på modell som betjänar slutpunkter.
Fråga en extern modellslutpunkt
När du har skapat en extern modellslutpunkt är den redo att ta emot trafik från användare.
Du kan skicka bedömningsbegäranden till slutpunkten med hjälp av OpenAI-klienten, REST-API:et eller SDK:n för MLflow-distributioner.
- Ta en titt på standardfråga parameters för en poängförfrågan i POST /serving-endpoints/{name}/invocations.
- Fråga foundationmodeller
I följande exempel efterfrågas slutförandemodellen claude-2
som hanteras av Anthropic med hjälp av OpenAI-klienten. Om du vill använda OpenAI-klienten fyller du i model
fältet med namnet på den modell som betjänar slutpunkten som är värd för den modell som du vill fråga efter.
I det här exemplet används en tidigare skapad slutpunkt, anthropic-completions-endpoint
, som konfigurerats för åtkomst till externa modeller från den antropiska modellprovidern. Se hur du skapar externa modellslutpunkter.
Se stödda modeller för ytterligare modeller som du kan fråga och deras providers.
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)
Förväntat utdatasvarsformat:
{
"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
}
}
Ytterligare fråga parameters
Du kan skicka ytterligare parameters som stöds av slutpunktens leverantör som en del av din sökfråga.
Till exempel:
-
logit_bias
(stöds av OpenAI, Cohere). -
top_k
(stöds av Anthropic, Cohere). -
frequency_penalty
(stöds av OpenAI, Cohere). -
presence_penalty
(stöds av OpenAI, Cohere). -
stream
(stöds av OpenAI, Anthropic, Cohere, Amazon Bedrock for Anthropic). Detta är endast tillgängligt för chatt- och slutförandebegäranden.
Stöd för nätverksanslutningskonfigurationer för externa modeller
Stöd för nätverksanslutningskonfigurationer (NCC) för externa modeller, inklusive azure private link, finns för närvarande i privat förhandsversion. Kontakta ditt Databricks-kontoteam för att delta i förhandsversionen.
Begränsningar
Beroende på vilken extern modell du väljer kan konfigurationen leda till att dina data bearbetas utanför regionen where dina data har sitt ursprung. Se Gränser och regioner för modellservering.