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 ondersteunde modelproviders en -beperkingen.

Wat zijn externe modellen?

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.

Modelproviders

Externe modellen in Model Serving zijn ontworpen ter ondersteuning van verschillende modelproviders. 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.
  • ai21labs: Voor modellen die worden aangeboden door AI21Labs.
  • 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 krijgt 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.

De onderstaande tabel bevat een niet-volledige lijst met ondersteunde modellen en bijbehorende eindpunttypen. Modelkoppelingen die hieronder worden vermeld, kunnen worden gebruikt als een nuttige handleiding bij het configureren van een eindpunt voor nieuw uitgebrachte modeltypen zodra ze beschikbaar komen bij een bepaalde provider. Klanten zijn verantwoordelijk voor het garanderen van naleving van toepasselijke modellicenties.

Notitie

Met de snelle ontwikkeling van LLM's is er geen garantie dat deze lijst altijd up-to-date is.

Modelprovider 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-4o
* gpt-4o-2024-05-13
* 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
* tekst-insluiten-ada-002
* tekst-insluiten-3-groot
* tekst-insluiten-3-klein
Azure OpenAI** * text-davinci-003
* gpt-35-turbo-instruct
* gpt-35-turbo
* gpt-35-turbo-16k
* gpt-4
* gpt-4-32k
* tekst-insluiten-ada-002
* tekst-insluiten-3-groot
* tekst-insluiten-3-klein
Anthropic * claude-1
* claude-1.3-100k
* claude-2
* claude-2.1
* claude-2.0
* claude-instant-1.2
* claude-3-haiku-20240307
* claude-3-opus-20240229
* claude-3-sonnet-20240229
* claude-2.1
* claude-2.0
* claude-instant-1.2
Cohere** *bevelen
* command-light-nightly
* command-light
* command-nightly
* embed-english-v2.0
* embed-meertalige-v2.0
* embed-english-light-v2.0
* embed-english-v3.0
* embed-english-light-v3.0
* embed-meertalige-v3.0
* embed-meertalige-light-v3.0
Mozaïek AI-model bedienen Databricks-eindpunt voor de server Databricks-eindpunt voor de server Databricks-eindpunt voor de server
Amazon Bedrock Antropisch:

* claude-instant-v1
* claude-v1
* claude-v2

Cohere:

* 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
Antropisch:

* 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
Amazone:

* titan-embed-text-v1
* titan-embed-g1-text-02
* titan-embed-text-v1:2:8k
AI21 Labs† * j2-mid
* j2-light
* j2-ultra
Google Cloud Vertex AI tekst-bison * chat-bison
* gemini-pro
textembedding-gecko

** Modelprovider ondersteunt nauwkeurig afgestemde voltooiings- en chatmodellen. Als u een query wilt uitvoeren op een nauwkeurig afgestemd model, vult u het name veld van de external model configuratie in met de naam van uw nauwkeurig afgestemde model.

† Modelprovider ondersteunt aangepaste voltooiingsmodellen.

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 standaardqueryparameters accepteren die zijn gemarkeerd als vereist, terwijl andere parameters mogelijk worden genegeerd, afhankelijk van of het eindpunt Van het Mozaïek AI-model dienen deze ondersteunt.

Zie POST /serving-endpoints/{name}/aanroepen in de API-verwijzing voor standaardqueryparameters.

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 external_model veld en de bijbehorende parameters opnemen in de served_entities sectie 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. Als provider ondersteunt bijvoorbeeld openai 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.

De onderstaande tabel bevat een overzicht van de external_model veldparameters. Zie POST /api/2.0/serving-endpoints voor eindpuntconfiguratieparameters.

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

Meerdere externe modellen leveren aan een eindpunt

U kunt ook meerdere externe modellen configureren in een dienend eindpunt zolang ze allemaal hetzelfde taaktype hebben en elk model een uniek namemodel heeft. In het onderstaande voorbeeld wordt een dienend eindpunt gemaakt dat 50% van het verkeer gpt-4 door OpenAI routeert en de resterende 50% door claude-3-opus-20240229 Antropic.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

client.create_endpoint(
    name="mix-chat-endpoint",
    config={
        "served_entities": [
            {
                "name": "served_model_name_1",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}"
                    }
                }
            },
            {
                "name": "served_model_name_2",
                "external_model": {
                    "name": "claude-3-opus-20240229",
                    "provider": "anthropic",
                    "task": "llm/v1/chat",
                    "anthropic_config": {
                        "anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
                    }
                }
            }
        ],
        "traffic_config": {
            "routes": [
                {"served_model_name": "served_model_name_1", "traffic_percentage": 50},
                {"served_model_name": "served_model_name_2", "traffic_percentage": 50}
            ]
        },
    }
)

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 configuratieparameters voor eindpunten voor elke modelprovider.

OpenAI

Configuratieparameter Beschrijving Vereist Standaardinstelling
openai_api_key De API-sleutel voor de OpenAI-service. Ja
openai_api_type Een optioneel veld om het type OpenAI-API op te geven dat moet worden gebruikt. Nee
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 API-sleutel voor de Cohere-service. Ja

Anthropic

Configuratieparameter Beschrijving Vereist Standaardinstelling
anthropic_api_key De API-sleutel voor de Antropische service. Ja

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 API-sleutel voor de Azure OpenAI-service. Ja
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 eindpuntconfiguratie.

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 Het clientgeheim voor Microsoft Entra ID-verificatie. Ja
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 Dit is de persoonlijke sleutel voor het serviceaccount dat toegang heeft tot de Google Cloud Vertex AI-service. Zie aanbevolen procedures voor het beheren van serviceaccountsleutels. Ja
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 Een AWS-toegangssleutel-id met machtigingen voor interactie met Bedrock-services. Ja
aws_secret_access_key Een AWS-geheime toegangssleutel die is gekoppeld aan de toegangssleutel-id, met machtigingen voor interactie met Bedrock-services. Ja
bedrock_provider De onderliggende provider in Amazon Bedrock. Ondersteunde waarden (niet hoofdlettergevoelig) zijn: Antropisch, Cohere, AI21Labs, Amazon Ja

In het volgende voorbeeld ziet u hoe u een eindpunt maakt met 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",
                    },
                }
            }
        ]
    },
)

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

AI21 Labs

Configuratieparameter Beschrijving Vereist Standaardinstelling
ai21labs_api_key Dit is de API-sleutel voor de AI21 Labs-service. Ja

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 hun 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 queryparameters

U kunt eventuele aanvullende parameters doorgeven die worden ondersteund door de provider van het eindpunt als onderdeel van uw 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.

Beperkingen

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

Als u ervoor kiest om meerdere externe modellen in een dienend eindpunt te configureren, moeten alle externe modellen hetzelfde taaktype hebben en moet elk model een uniek namemodel hebben. U kunt niet zowel externe modellen als niet-externe modellen in hetzelfde servereindpunt hebben.

Aanvullende bronnen