Externa modeller i Databricks-modellservering
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 Databricks Model Serving, inklusive modellprovidrar som stöds och begränsningar.
Vad är externa modeller?
Externa modeller är tredjepartsmodeller som finns utanför Databricks. Med hjälp av modellservering kan externa modeller effektivisera användningen och hanteringen av olika LLM-leverantörer (large language model), till exempel OpenAI och Anthropic, inom en organisation. Du kan också använda Databricks 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 för modellprovidern.
- Databricks-arbetsyta i regioner som stöds av externa modeller.
Modellprovidrar
Externa modeller i Model Serving är utformade för att stödja en mängd olika modellprovidrar. 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 leverantörer 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.
- ai21labs: För modeller som erbjuds av AI21Labs.
- google-cloud-vertex-ai: För modeller som erbjuds av Google Cloud Vertex AI.
- databricks-model-serving: För Databricks-modell som betjänar 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 du får 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.
Tabellen nedan visar en icke-fullständig lista över modeller som stöds och motsvarande slutpunktstyper. Modellassociationer som anges nedan kan användas som en användbar guide när du konfigurerar en slutpunkt för alla nyligen släppta modelltyper när de blir tillgängliga med en viss provider. Kunderna ansvarar för att säkerställa efterlevnaden av tillämpliga modelllicenser.
Kommentar
Med den snabba utvecklingen av LLM:er finns det ingen garanti för att listan är uppdaterad hela tiden.
Modellprovider | 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** | *Kommandot * command-light-nightly * kommandoljus * kommando-nattetid |
* 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-modellservering | Databricks-serverslutpunkt | Databricks-serverslutpunkt | Databricks-serverslutpunkt |
Amazon Berggrund | Antropisk: * claude-instant-v1 * claude-v1 * claude-v2 Sammanstå: * 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 |
Antropisk: * 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-ljus * j2-ultra |
||
Google Cloud Vertex AI | text-bison | * chat-bison * gemini-pro |
textembedding-gecko |
**
Modellprovidern stöder finjusterade slutförande- och chattmodeller. Om du vill köra frågor mot en finjusterad modell fyller du i name
konfigurationsfältet external model
med namnet på din finjusterade modell.
† Modellprovidern stöder anpassade kompletteringsmodeller.
Använda modeller som hanteras på Databricks Model Serving-slutpunkter
Databricks-modell som betjänar slutpunkter som provider stöds för typerna llm/v1/completions
, llm/v1/chat
och llm/v1/embeddings
slutpunkt. De här slutpunkterna måste acceptera standardfrågeparametrarna som markerats som obligatoriska, medan andra parametrar kan ignoreras beroende på om Databricks Model Serving-slutpunkten stöder dem eller inte.
Se POST /serving-endpoints/{name}/invocations i API-referensen för standardfrågeparametrar.
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 anpassade modell som betjänar slutpunkter
För en extern modell som betjänar slutpunkten måste du inkludera external_model
fältet och dess parametrar i served_entities
avsnittet i slutpunktskonfigurationen.
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, openai
som en leverantör stöder modeller som text-embedding-ada-002
, men andra leverantörer kanske inte. Om modellen inte stöds av providern returnerar Databricks ett HTTP 4xx-fel när begäranden dirigeras till modellen.
Tabellen nedan sammanfattar external_model
fältparametrarna. Se POST /api/2.0/serving-endpoints för slutpunktskonfigurationsparametrar .
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. I följande avsnitt sammanfattas de tillgängliga slutpunktskonfigurationsparametrarna för varje modellprovider.
OpenAI
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
openai_api_key |
API-nyckeln för OpenAI-tjänsten. | Ja | |
openai_api_type |
Ett valfritt fält för att ange vilken typ av OpenAI API som ska användas. | Nej | |
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 |
API-nyckeln för cohere-tjänsten. | Ja |
Anthropic
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
anthropic_api_key |
API-nyckeln för den antropiska tjänsten. | Ja |
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 |
API-nyckeln för Azure OpenAI-tjänsten. | Ja | |
openai_api_type |
Justera den här parametern så att den representerar det rekommenderade valideringsprotokollet för säkerhetsåtkomst. För validering av åtkomsttoken använder du azure . För autentisering med Azure Active Directory (Azure AD) använder du, azuread . |
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 |
Det här är den privata nyckeln för tjänstkontot som har åtkomst till Google Cloud Vertex AI-tjänsten. Se Metodtips för att hantera tjänstkontonycklar. | Ja | |
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 |
Ett AWS-åtkomstnyckel-ID med behörighet att interagera med Bedrock-tjänster. | Ja | |
aws_secret_access_key |
En AWS-hemlig åtkomstnyckel i kombination med åtkomstnyckelns ID med behörighet att interagera med Bedrock-tjänster. | Ja | |
bedrock_provider |
Den underliggande leverantören i Amazon Bedrock. Värden som stöds (skiftlägesokänsliga) är: Antropiska, cohere, AI21Labs, Amazon | Ja |
I följande exempel visas hur du skapar en slutpunkt med Amazon Bedrock.
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 autentiseringsuppgifterna direkt med Amazon Bedrock-API:et.
AI21 Labs
Konfigurationsparameter | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
ai21labs_api_key |
Det här är API-nyckeln för AI21 Labs-tjänsten. | Ja |
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.
- Se standardfrågeparametrarna för en bedömningsbegäran i POST /serving-endpoints/{name}/invocations.
- Frågegrundsmodeller
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 Modeller som stöds för ytterligare modeller som du kan köra frågor mot och deras leverantörer.
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ågeparametrar
Du kan skicka eventuella ytterligare parametrar som stöds av slutpunktens provider som en del av din frå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.
Begränsningar
Beroende på vilken extern modell du väljer kan konfigurationen leda till att dina data bearbetas utanför den region där dina data har sitt ursprung.
Se Gränser och regioner för modellservering.
Ytterligare resurser
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för