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/chatoch 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.

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