Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du programmatiskt konfigurerar en modell som betjänar slutpunkten för att hantera flera modeller och trafiken som delas mellan dem.
Med flera modeller från en enda slutpunkt kan du dela trafik mellan olika modeller för att jämföra deras prestanda och underlätta A/B-testning. Du kan också hantera olika versioner av en modell samtidigt, vilket gör det enklare att experimentera med nya versioner, samtidigt som den aktuella versionen hålls i produktion.
Du kan hantera någon av följande modelltyper på en modellserverslutpunkt. Du kan inte hantera olika modelltyper i en enda slutpunkt. Du kan till exempel inte hantera en anpassad modell och en extern modell i samma slutpunkt.
- Anpassade modeller
- generativa AI-modeller som tillhandahålls via Foundation Model-API:er med provisionerad genomströmning
- Externa modeller
Krav
Se Kraven för att skapa en modell som betjänar slutpunkten.
Information om alternativ för åtkomstkontroll för modeller som betjänar slutpunkter och vägledning för bästa praxis för slutpunktshantering finns i Servering av slutpunkts-ACL:er.
Skapa en slutpunkt och ange den inledande trafikdelningen
När du skapar modell som betjänar slutpunkter med hjälp av API:et för modellservern eller användargränssnittet för modellserver kan du också ange den inledande trafikdelningen för de modeller som du vill hantera på slutpunkten. Följande avsnitt innehåller exempel på hur du ställer in trafikdelningen för flera anpassade modeller eller grundmodeller som hanteras på en slutpunkt.
Servera flera anpassade modeller på en ändpunkt
I följande REST API-exempel skapas en enda slutpunkt med två anpassade modeller i Unity Catalog och slutpunktstrafiken delas mellan dessa modeller. Den betjänade entiteten , currentär värd för version 1 av model-A och hämtar 90 % av slutpunktstrafiken, medan den andra betjänade entiteten, , challengerär värd för version 1 av model-B och hämtar 10 % av slutpunktstrafiken.
POST /api/2.0/serving-endpoints
{
"name":"multi-model"
"config":
{
"served_entities":
[
{
"name":"current",
"entity_name":"catalog.schema.model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"catalog.schema.model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":
{
"routes":
[
{
"served_model_name":"current",
"traffic_percentage":"90"
},
{
"served_model_name":"challenger",
"traffic_percentage":"10"
}
]
}
}
}
Hantera flera modeller till en etablerad dataflödesslutpunkt
I följande REST API-exempel skapas en enda slutpunkt för provisionerad genomströmning i Foundation Model APIs med två modeller, och det anges hur trafiken till slutpunkten ska fördelas mellan dessa modeller. Slutpunkten med namnet multi-pt-model, är värd för version 2 av meta_llama_v3_1_70b_instruct vilken hämtar 60 % av slutpunktstrafiken och är även värd för version 3 meta_llama_v3_1_8b_instruct av vilken hämtar 40 % av slutpunktstrafiken.
POST /api/2.0/serving-endpoints
{
"name":"multi-pt-model"
"config":
{
"served_entities":
[
{
"name":"meta_llama_v3_1_70b_instruct",
"entity_name":"system.ai.meta_llama_v3_1_70b_instruct",
"entity_version":"4",
"min_provisioned_throughput":0,
"max_provisioned_throughput":2400
},
{
"name":"meta_llama_v3_1_8b_instruct",
"entity_name":"system.ai.meta_llama_v3_1_8b_instruct",
"entity_version":"4",
"min_provisioned_throughput":0,
"max_provisioned_throughput":1240
}
],
"traffic_config":
{
"routes":
[
{
"served_model_name":"meta_llama_v3_1_8b_instruct",
"traffic_percentage":"60"
},
{
"served_model_name":"meta_llama_v3_1_70b_instruct",
"traffic_percentage":"40"
}
]
}
}
}
Hantera flera externa modeller till en slutpunkt
Du kan också konfigurera flera externa modeller i en serverslutpunkt så länge de alla har samma aktivitetstyp och varje modell har en unik name. Du kan inte ha både externa modeller och icke-externa modeller i samma serveringsslutpunkt.
I följande exempel skapas en serverslutpunkt som dirigerar 50 % av trafiken till gpt-4 som tillhandahålls av OpenAI och de återstående 50 % som claude-3-opus-20240229 tillhandahålls av Anthropic.
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}
]
},
}
)
Uppdatera trafikdelningen mellan betjänade modeller
Du kan också uppdatera trafikdelningen mellan betjänade modeller. I följande REST API-exempel anges den betjänade modellen, current, för att hämta 50% av slutpunktstrafiken och den andra modellen, challenger, för att få de återstående 50% av trafiken.
Du kan också göra den här uppdateringen från fliken Serving i Azure Databricks-användargränssnittet med hjälp av konfigurationsknappen Edit.
PUT /api/2.0/serving-endpoints/{name}/config
{
"served_entities":
[
{
"name":"current",
"entity_name":"catalog.schema.model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"catalog.schema.model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":
{
"routes":
[
{
"served_model_name":"current",
"traffic_percentage":"50"
},
{
"served_model_name":"challenger",
"traffic_percentage":"50"
}
]
}
}
Fråga efter enskilda modeller bakom en slutpunkt
I vissa scenarier kanske du vill köra frågor mot enskilda modeller bakom slutpunkten.
Du kan göra det med hjälp av:
POST /serving-endpoints/{endpoint-name}/served-models/{served-model-name}/invocations
Här görs en förfrågan mot den specifika modellen som används. Formatet för begäran är detsamma som när du frågar ändpunkten. När du frågar den enskilda serverade modellen ignoreras trafikinställningarna.
I samband med slutpunktsexemplet för multi-model, om alla begäranden skickas till /serving-endpoints/multi-model/served-models/challenger/invocations, betjänas alla begäranden av modellen som betjänas av challenger.