Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u programmatisch een endpoint voor modelserving configureert om meerdere modellen aan te bieden en de verdeling van het verkeer over deze modellen in te stellen.
Door meerdere modellen van één eindpunt te leveren, kunt u verkeer splitsen tussen verschillende modellen om de prestaties te vergelijken en A/B-tests te vergemakkelijken. U kunt ook verschillende versies van een model tegelijkertijd bedienen, waardoor u eenvoudiger kunt experimenteren met nieuwe versies, terwijl u de huidige versie in productie houdt.
U kunt een van de volgende modeltypen leveren op een eindpunt voor modelbediening. U kunt geen verschillende modeltypen in één eindpunt leveren. U kunt bijvoorbeeld geen aangepast model en een extern model in hetzelfde eindpunt leveren.
- Aangepaste modellen
- AI-modellen die beschikbaar worden gesteld via Foundation Model API's met geprovisioneerde doorvoer
- Externe modellen
Vereisten
Zie de Vereisten voor het maken van model-serving-endpoints.
Als u inzicht wilt krijgen in de opties voor toegangsbeheer voor model-serving-eindpunten en in richtlijnen voor best practices voor eindpuntbeheer, raadpleegt u ACL's voor serving-eindpunten.
Een eindpunt maken en de initiële verkeerssplitsing instellen
Wanneer u een model voor eindpunten maakt met behulp van de Model Serving-API of de gebruikersinterface voor modelbediening, kunt u ook de eerste splitsing van het verkeer instellen voor de modellen die u op dat eindpunt wilt gebruiken. De volgende secties bevatten voorbeelden van het instellen van de verkeerssplitsing voor meerdere aangepaste modellen of basismodellen die op een eindpunt worden geleverd.
Verschillende aangepaste modellen beschikbaar stellen via een eindpunt
In het volgende REST API-voorbeeld wordt één eindpunt gemaakt met twee aangepaste modellen in Unity Catalog en wordt het eindpuntverkeer tussen deze modellen ingesteld. De service-entiteit, currenthosts versie 1 van model-A en krijgt 90% van het eindpuntverkeer, terwijl de andere service-entiteit, challengerhosts versie 1 van model-B en 10% van het eindpuntverkeer krijgt.
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"
}
]
}
}
}
Meerdere modellen aanbieden via een eindpunt met ingerichte doorvoer
In het volgende REST API-voorbeeld wordt één Foundation Model APIs-endpoint met ingerichte doorvoercapaciteit gemaakt met twee modellen, en wordt de verkeersverdeling van het endpoint over deze modellen ingesteld. Het eindpunt met de naam multi-pt-model host versie 2 van meta_llama_v3_1_70b_instruct, die 60% van het eindpuntverkeer ontvangt, en host ook versie 3 van meta_llama_v3_1_8b_instruct, die 40% van het eindpuntverkeer ontvangt.
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"
}
]
}
}
}
Meerdere externe modellen aanbieden via 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. U kunt niet zowel externe modellen als niet-externe modellen in hetzelfde servereindpunt hebben.
In het volgende voorbeeld wordt een serving-endpoint gemaakt dat 50% van het verkeer naar gpt-4 routeert, geleverd door OpenAI, en de resterende 50% naar claude-3-opus-20240229, geleverd door 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}
]
},
}
)
De verkeerssplitsing tussen gediende modellen bijwerken
U kunt ook de verkeerssplitsing tussen gediende modellen bijwerken. In het volgende REST API-voorbeeld wordt het geleverde model, current, ingesteld om 50% van het eindpuntverkeer te verkrijgen en het andere model, challenger, om de resterende 50% van het verkeer te ontvangen.
U kunt deze update ook uitvoeren vanaf het tabblad Serving in de gebruikersinterface van Azure Databricks met behulp van de knop Bewerken.
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"
}
]
}
}
Afzonderlijke modellen achter een eindpunt opvragen
In sommige scenario's wilt u mogelijk afzonderlijke modellen achter het eindpunt opvragen.
U kunt dit doen met behulp van:
POST /serving-endpoints/{endpoint-name}/served-models/{served-model-name}/invocations
Hier wordt het specifieke beschikbaar gestelde model opgevraagd. De aanvraagindeling is hetzelfde als het uitvoeren van query's op het eindpunt. Tijdens het uitvoeren van query's op het afzonderlijke servicemodel worden de verkeersinstellingen genegeerd.
In de context van het multi-model eindpuntvoorbeeld, als alle aanvragen naar /serving-endpoints/multi-model/served-models/challenger/invocationsworden verzonden, worden alle aanvragen geleverd door het challenger aangeboden model.