Dela via


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.

Se modeller som stöds.

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

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.

Ytterligare resurser