Delen via


Externe modellen in Mozaïek AI Model Serving

Belangrijk

In de codevoorbeelden in dit artikel wordt het gebruik van de CRUD-API voor openbare preview-implementaties van MLflow gedemonstreerd.

In dit artikel worden externe modellen in Mosaic AI Model Serving beschreven, inclusief het ondersteunde model providers en beperkingen.

Wat zijn externe modellen?

Belangrijk

U kunt Nu Mozaïek AI Gateway configureren op model voor eindpunten die externe modellen bedienen. AI Gateway zorgt voor governance, bewaking en productiegereedheid voor dit model voor eindpunten. Zie Mozaïek AI Gateway.

Externe modellen zijn externe modellen die buiten Databricks worden gehost. Met externe modellen die worden ondersteund door Model Serving, kunt u het gebruik en beheer van verschillende LLM-providers(Large Language Model), zoals OpenAI en Antropisch, binnen een organisatie stroomlijnen. U kunt Ook Mozaïek AI-model dienen als provider om aangepaste modellen te bedienen, die frequentielimieten bieden voor deze eindpunten. Als onderdeel van deze ondersteuning biedt Model Serving een interface op hoog niveau die de interactie met deze services vereenvoudigt door een geïntegreerd eindpunt te bieden voor het afhandelen van specifieke LLM-gerelateerde aanvragen.

Daarnaast biedt azure Databricks-ondersteuning voor externe modellen gecentraliseerd referentiebeheer. Door API-sleutels op één veilige locatie op te slaan, kunnen organisaties hun beveiligingspostuur verbeteren door de blootstelling van gevoelige API-sleutels in het hele systeem te minimaliseren. Het helpt ook om te voorkomen dat deze sleutels in code worden weergegeven of dat eindgebruikers sleutels veilig moeten beheren.

Zie Zelfstudie: Externe modeleindpunten maken om query's uit te voeren op OpenAI-modellen voor stapsgewijze richtlijnen voor het maken van eindpunten voor extern model en het uitvoeren van query's op ondersteunde modellen die door deze eindpunten worden geleverd met behulp van de MLflow Deployments SDK. Raadpleeg de volgende handleidingen voor instructies over het gebruik van de Gebruikersinterface van De Server en de REST API:

Eisen

  • API-sleutel- of verificatievelden voor de modelprovider.
  • Databricks-werkruimte in ondersteunde regio's voor externe modellen.

model providers

Externe modellen in Model Serving zijn ontworpen ter ondersteuning van verschillende modellen providers. Een provider vertegenwoordigt de bron van de machine learning-modellen, zoals OpenAI, Antropisch, enzovoort. Elke provider heeft de specifieke kenmerken en configuraties die zijn ingekapseld binnen het veld van de configuratie van het external_modelexterne modeleindpunt.

De volgende providers worden ondersteund:

  • openai: Voor modellen die worden aangeboden door OpenAI en de Azure-integraties voor Azure OpenAI en Azure OpenAI met AAD.
  • antropisch: Voor modellen die worden aangeboden door Antropisch.
  • cohere: Voor modellen die door Cohere worden aangeboden.
  • amazon-bedrock: Voor modellen aangeboden door Amazon Bedrock.
  • google-cloud-hoekpunt-ai: Voor modellen die worden aangeboden door Google Cloud Vertex AI.
  • databricks-model-serving: Voor Mozaïek AI Model Serve-eindpunten met compatibele schema's. Zie Eindpuntconfiguratie.

Als u ondersteuning wilt aanvragen voor een provider die hier niet wordt vermeld, neemt u contact op met uw Databricks-accountteam.

Ondersteunde modellen

Het model dat u kiest, is rechtstreeks van invloed op de resultaten van de antwoorden die u get van de API-aanroepen. Kies daarom een model dat past bij uw use-casevereisten. Voor het genereren van gespreksreacties kunt u bijvoorbeeld een chatmodel kiezen. Voor het genereren van insluitingen van tekst kunt u daarentegen een insluitmodel kiezen.

Zie ondersteunde modellen.

Modellen gebruiken die worden geleverd op Mozaïek AI Model Serving-eindpunten

Mozaïek AI-model voor eindpunten als provider wordt ondersteund voor de llm/v1/completionstypen , llm/v1/chaten llm/v1/embeddings eindpunten. Deze eindpunten moeten de standaardquery parameters accepteren, gemarkeerd als vereist, terwijl andere parameters mogelijk worden genegeerd, afhankelijk van de ondersteuning door het Mosaic AI Model Serving endpoint.

Zie POST /serving-endpoints/{name}/invocations in de API-verwijzing voor standaard query parameters.

Deze eindpunten moeten antwoorden produceren in de volgende OpenAI-indeling.

Voor voltooiingstaken:

{
"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
  }
}

Voor chattaken:

{
  "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
  }
}

Voor insluitingstaken:

{
  "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
  }
}

Eindpuntconfiguratie

Als u externe modellen wilt leveren en er query's op wilt uitvoeren, moet u een service-eindpunt configureren. Zie Een extern model maken voor eindpunt

Voor een extern model voor eindpunten moet u het veld external_model en de bijbehorende parameters opnemen in het gedeelte served_entities van de eindpuntconfiguratie. Als u meerdere externe modellen in een dienend eindpunt configureert, moet u een traffic_config waarde opgeven om het verkeersrouteringspercentage voor elk extern model te definiëren.

Het external_model veld definieert het model waarnaar dit eindpunt aanvragen doorstuurt. Wanneer u een model opgeeft, is het essentieel dat de provider het model ondersteunt dat u aanvraagt. openai als provider ondersteunt bijvoorbeeld modellen zoals text-embedding-ada-002, maar andere providers mogelijk niet. Als het model niet wordt ondersteund door de provider, retourneert Databricks een HTTP 4xx-fout bij het routeren van aanvragen naar dat model.

In de onderstaande table wordt het external_model veld parameterssamengevat. Zie POST /api/2.0/serving-endpoints voor eindpuntconfiguratie parameters.

Parameter Omschrijvingen
name De naam van het model dat moet worden gebruikt. Bijvoorbeeld voor gpt-3.5-turbo het model van GPT-3.5-Turbo OpenAI.
provider Hiermee geeft u de naam van de provider voor dit model. Deze tekenreekswaarde moet overeenkomen met een ondersteunde externe modelprovider. Bijvoorbeeld voor openai openAI-modellen GPT-3.5 .
task De taak komt overeen met het type taalmodelinteractie dat u wenst. Ondersteunde taken zijn 'llm/v1/completions', 'llm/v1/chat', 'llm/v1/embeddings'.
<provider>_config Bevat aanvullende configuratiegegevens die vereist zijn voor het model. Dit omvat het opgeven van de API-basis-URL en de API-sleutel. Zie De provider configureren voor een eindpunt.

Hier volgt een voorbeeld van het maken van een extern modeleindpunt met behulp van de create_endpoint() API. In dit voorbeeld wordt een aanvraag die naar het voltooiingseindpunt is verzonden, doorgestuurd naar het claude-2 model dat wordt geleverd door 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}}"
                    }
                }
            }
        ]
    }
)

De provider voor een eindpunt configureren

Wanneer u een eindpunt maakt, moet u de vereiste configuraties opgeven voor de opgegeven modelprovider. In de volgende secties vindt u een overzicht van de beschikbare eindpuntconfiguratie parameters voor elke modelprovider.

Notitie

Databricks versleutelt en slaat de opgegeven credentials veilig op voor elke modelprovider. Deze credentials worden automatisch verwijderd wanneer de bijbehorende eindpunten worden verwijderd.

OpenAI

Configuratieparameter Beschrijving Vereist Standaardinstelling
openai_api_key De naslaginformatie over de geheime sleutel van Azure Databricks voor een OpenAI-API-sleutel met behulp van de OpenAI-service. Als u uw API-sleutel liever rechtstreeks plakt, raadpleegt openai_api_key_plaintextu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: openai_api_key of openai_api_key_plaintext.
openai_api_key_plaintext De OpenAI API-sleutel met behulp van de OpenAI-service die wordt geleverd als een tekenreeks zonder opmaak. Als u liever naar uw sleutel verwijst met behulp van Azure Databricks Secrets, raadpleegt openai_api_keyu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: openai_api_key of openai_api_key_plaintext moet worden opgegeven.
openai_api_type Een optioneel veld om het type OpenAI-API op te geven dat moet worden gebruikt. Nee openai
openai_api_base De basis-URL voor de OpenAI-API. Nee https://api.openai.com/v1
openai_api_version Een optioneel veld om de OpenAI API-versie op te geven. Nee
openai_organization Een optioneel veld voor het opgeven van de organisatie in OpenAI. Nee

Cohere

Configuratieparameter Beschrijving Vereist Standaardinstelling
cohere_api_key De naslaginformatie over de geheime sleutel van Azure Databricks voor een Cohere-API-sleutel. Als u uw API-sleutel liever rechtstreeks plakt, raadpleegt cohere_api_key_plaintextu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: cohere_api_key of cohere_api_key_plaintext.
cohere_api_key_plaintext De Cohere-API-sleutel die is opgegeven als een tekenreeks zonder opmaak. Als u liever naar uw sleutel verwijst met behulp van Azure Databricks Secrets, raadpleegt cohere_api_keyu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: cohere_api_key of cohere_api_key_plaintext.
cohere_api_base De basis-URL voor de Cohere-service. Nee

Anthropic

Configuratieparameter Beschrijving Vereist Standaardinstelling
anthropic_api_key De azure Databricks-geheime sleutelreferentie voor een Lantropische API-sleutel. Als u uw API-sleutel liever rechtstreeks plakt, raadpleegt anthropic_api_key_plaintextu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: anthropic_api_key of anthropic_api_key_plaintext.
anthropic_api_key_plaintext De Antropische API-sleutel die is opgegeven als een tekenreeks zonder opmaak. Als u liever naar uw sleutel verwijst met behulp van Azure Databricks Secrets, raadpleegt anthropic_api_keyu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: anthropic_api_key of anthropic_api_key_plaintext.

Azure OpenAI

Azure OpenAI heeft verschillende functies in vergelijking met de directe OpenAI-service. Zie de vergelijkingsdocumentatie voor een overzicht.

Configuratieparameter Beschrijving Vereist Standaardinstelling
openai_api_key De naslaginformatie over de geheime sleutel van Azure Databricks voor een OpenAI-API-sleutel met behulp van de Azure-service. Als u uw API-sleutel liever rechtstreeks plakt, raadpleegt openai_api_key_plaintextu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: openai_api_key of openai_api_key_plaintext.
openai_api_key_plaintext De OpenAI API-sleutel met behulp van de Azure-service die wordt geleverd als een tekenreeks zonder opmaak. Als u liever naar uw sleutel verwijst met behulp van Azure Databricks Secrets, raadpleegt openai_api_keyu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: openai_api_key of openai_api_key_plaintext.
openai_api_type Gebruiken azure voor validatie van toegangstokens. Ja
openai_api_base De basis-URL voor de Azure OpenAI API-service die wordt geleverd door Azure. Ja
openai_api_version De versie van de Azure OpenAI-service die moet worden gebruikt, opgegeven door een datum. Ja
openai_deployment_name De naam van de implementatieresource voor de Azure OpenAI-service. Ja
openai_organization Een optioneel veld voor het opgeven van de organisatie in OpenAI. Nee

Als u Azure OpenAI gebruikt met Microsoft Entra ID, gebruikt u de volgende parameters in de configuratie van uw eindpunt.

Configuratieparameter Beschrijving Vereist Standaardinstelling
microsoft_entra_tenant_id De tenant-id voor Microsoft Entra ID-verificatie. Ja
microsoft_entra_client_id De client-id voor Microsoft Entra ID-verificatie. Ja
microsoft_entra_client_secret De azure Databricks-geheime sleutelreferentie voor een clientgeheim dat wordt gebruikt voor Microsoft Entra ID-verificatie. Als u uw clientgeheim liever rechtstreeks plakt, raadpleegt microsoft_entra_client_secret_plaintextu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: microsoft_entra_client_secret of microsoft_entra_client_secret_plaintext.
microsoft_entra_client_secret_plaintext Het clientgeheim dat wordt gebruikt voor Verificatie met Microsoft Entra-id's die als een tekenreeks zonder opmaak is opgegeven. Als u liever naar uw sleutel verwijst met behulp van Azure Databricks Secrets, raadpleegt microsoft_entra_client_secretu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: microsoft_entra_client_secret of microsoft_entra_client_secret_plaintext.
openai_api_type Gebruiken azuread voor verificatie met behulp van Microsoft Entra-id. Ja
openai_api_base De basis-URL voor de Azure OpenAI API-service die wordt geleverd door Azure. Ja
openai_api_version De versie van de Azure OpenAI-service die moet worden gebruikt, opgegeven door een datum. Ja
openai_deployment_name De naam van de implementatieresource voor de Azure OpenAI-service. Ja
openai_organization Een optioneel veld voor het opgeven van de organisatie in OpenAI. Nee

In het volgende voorbeeld ziet u hoe u een eindpunt maakt met 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

Configuratieparameter Beschrijving Vereist Standaardinstelling
private_key De naslaginformatie over de geheime sleutel van Azure Databricks voor een persoonlijke sleutel voor het serviceaccount dat toegang heeft tot de Google Cloud Vertex AI-service. Zie aanbevolen procedures voor het beheren van serviceaccountsleutels. Als u uw API-sleutel liever rechtstreeks plakt, raadpleegt private_key_plaintextu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: private_key of private_key_plaintext.
private_key_plaintext De persoonlijke sleutel voor het serviceaccount dat toegang heeft tot de Google Cloud Vertex AI-service die wordt geleverd als een geheim zonder tekst. Zie aanbevolen procedures voor het beheren van serviceaccountsleutels. Als u liever naar uw sleutel verwijst met behulp van Azure Databricks Secrets, raadpleegt private_keyu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: private_key of private_key_plaintext.
region Dit is de regio voor de Google Cloud Vertex AI-service. Zie ondersteunde regio's voor meer informatie. Sommige modellen zijn alleen beschikbaar in specifieke regio's. Ja
project_id Dit is de Google Cloud-project-id waaraan het serviceaccount is gekoppeld. Ja

Amazon Bedrock

Als u Amazon Bedrock als externe modelprovider wilt gebruiken, moeten klanten ervoor zorgen dat Bedrock is ingeschakeld in de opgegeven AWS-regio en hebben het opgegeven AWS-sleutelpaar de juiste machtigingen om te communiceren met Bedrock-services. Zie AWS Identity and Access Management voor meer informatie.

Configuratieparameter Beschrijving Vereist Standaardinstelling
aws_region De AWS-regio die moet worden gebruikt. Bedrock moet daar ingeschakeld zijn. Ja
aws_access_key_id De naslaginformatie over de geheime sleutel van Azure Databricks voor een AWS-toegangssleutel met machtigingen voor interactie met Bedrock-services. Als u uw API-sleutel liever rechtstreeks plakt, raadpleegt aws_access_key_id_plaintextu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: aws_access_key_id of aws_access_key_id_plaintext.
aws_access_key_id_plaintext Een AWS-toegangssleutel-id met machtigingen voor interactie met Bedrock-services die worden geleverd als een tekenreeks zonder opmaak. Als u liever naar uw sleutel verwijst met behulp van Azure Databricks Secrets, raadpleegt aws_access_key_idu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: aws_access_key_id of aws_access_key_id_plaintext.
aws_secret_access_key De azure Databricks-geheime sleutelreferentie voor een AWS-toegangssleutel die is gekoppeld aan de toegangssleutel-id, met machtigingen voor interactie met Bedrock-services. Als u uw API-sleutel liever rechtstreeks plakt, raadpleegt aws_secret_access_key_plaintextu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: aws_secret_access_key of aws_secret_access_key_plaintext.
aws_secret_access_key_plaintext Een AWS-geheime toegangssleutel die is gekoppeld aan de toegangssleutel-id, met machtigingen voor interactie met Bedrock-services die worden geleverd als een tekenreeks zonder opmaak. Als u liever naar uw sleutel verwijst met behulp van Azure Databricks Secrets, raadpleegt aws_secret_access_keyu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: aws_secret_access_key of aws_secret_access_key_plaintext.
bedrock_provider De onderliggende provider in Amazon Bedrock. Ondersteunde values (onafhankelijk van hoofdletters) zijn: Anthropic, Cohere, AI21Labs, Amazon Ja

In het volgende voorbeeld ziet u hoe u een eindpunt maakt met Amazon Bedrock met behulp van toegangssleutels.

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",
                    },
                }
            }
        ]
    },
)

Als er problemen zijn met AWS-machtigingen, raadt Databricks u aan om de credentials rechtstreeks te verifiëren met de Amazon Bedrock-API.

AI21 Labs

Configuratieparameter Beschrijving Vereist Standaardinstelling
ai21labs_api_key De naslaginformatie over de geheime sleutel van Azure Databricks voor een AI21 Labs-API-sleutel. Als u uw API-sleutel liever rechtstreeks plakt, raadpleegt ai21labs_api_key_plaintextu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: ai21labs_api_key of ai21labs_api_key_plaintext.
ai21labs_api_key_plaintext Een AI21 Labs-API-sleutel die is opgegeven als een tekenreeks zonder opmaak. Als u liever naar uw sleutel verwijst met behulp van Azure Databricks Secrets, raadpleegt ai21labs_api_keyu . U moet een API-sleutel opgeven met behulp van een van de volgende velden: ai21labs_api_key of ai21labs_api_key_plaintext.

AI Gateway configureren op een eindpunt

U kunt uw eindpunt ook configureren om Mozaïek AI Gateway-functies in te schakelen, zoals snelheidsbeperking, gebruikstracering en kaders.

Zie AI Gateway configureren op model voor eindpunten.

Een query uitvoeren op een extern modeleindpunt

Nadat u een extern modeleindpunt hebt gemaakt, is het klaar om verkeer van gebruikers te ontvangen.

U kunt scoreaanvragen verzenden naar het eindpunt met behulp van de OpenAI-client, de REST API of de MLflow Deployments SDK.

In het volgende voorbeeld wordt een query uitgevoerd op het claude-2 voltooiingsmodel dat wordt gehost door Antropic met behulp van de OpenAI-client. Als u de OpenAI-client wilt gebruiken, vult u het model veld in met de naam van het model dat als host fungeert voor het model dat u wilt opvragen.

In dit voorbeeld wordt een eerder gemaakt eindpunt gebruikt, anthropic-completions-endpointgeconfigureerd voor toegang tot externe modellen van de provider van het Antropische model. Zie hoe u externe modeleindpunten maakt.

Zie Ondersteunde modellen voor aanvullende modellen die u kunt opvragen en de bijbehorende 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)

Verwachte uitvoerantwoordindeling:

{
"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
  }
}

Aanvullende query parameters

U kunt alle extra parameters doorgeven die door de provider van het eindpunt worden ondersteund als onderdeel van de query.

Voorbeeld:

  • logit_bias (ondersteund door OpenAI, Cohere).
  • top_k (ondersteund door Antropisch, Cohere).
  • frequency_penalty (ondersteund door OpenAI, Cohere).
  • presence_penalty (ondersteund door OpenAI, Cohere).
  • stream (ondersteund door OpenAI, Antropicus, Cohere, Amazon Bedrock for Antropic). Dit is alleen beschikbaar voor chat- en voltooiingsaanvragen.

Ondersteuning voor netwerkconnectiviteitsconfiguraties voor externe modellen

Ondersteuning voor netwerkconnectiviteitsconfiguraties (NCC's) voor externe modellen, waaronder Azure Private Link, bevindt zich momenteel in private preview. Neem contact op met uw Databricks-accountteam om deel te nemen aan de preview.

Beperkingen

Afhankelijk van het externe model dat u kiest, kan uw configuratie ertoe leiden dat uw gegevens buiten de regio worden verwerkt where uw gegevens afkomstig zijn. Zie Limieten en regio's voor modelbediening.

Aanvullende bronnen