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_model
externe 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/completions
typen , llm/v1/chat
en 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 name
model 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.
- Zie de standaardqueryparameters voor een scoreaanvraag in POST /serving-endpoints/{name}/aanroepen.
- Basismodellen opvragen
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-endpoint
geconfigureerd 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 name
model hebben. U kunt niet zowel externe modellen als niet-externe modellen in hetzelfde servereindpunt hebben.
Aanvullende bronnen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor