Vytvoření vlastních modelů obsluhujících koncové body
Tento článek popisuje, jak vytvořit model obsluhující koncové body, které obsluhují vlastní modely pomocí služby Databricks Model Serving.
Obsluha modelu poskytuje následující možnosti pro obsluhu vytváření koncových bodů:
- Uživatelské rozhraní obsluhy
- REST API
- Sada SDK pro nasazení MLflow
Informace o vytváření koncových bodů, které obsluhují modely generující AI, najdete v tématu Vytvoření modelu generování AI obsluhující koncové body.
Požadavky
- Váš pracovní prostor musí být v podporované oblasti.
- Pokud ve svém modelu používáte vlastní knihovny nebo knihovny ze serveru privátního zrcadlení, přečtěte si téma Použití vlastních knihoven Pythonu s obsluhou modelů před vytvořením koncového bodu modelu.
- Pokud chcete vytvářet koncové body pomocí sady SDK pro nasazení MLflow, musíte nainstalovat klienta nasazení MLflow. Pokud ho chcete nainstalovat, spusťte:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Řízení přístupu
Informace o možnostech řízení přístupu pro model obsluhující koncové body pro správu koncových bodů najdete v tématu Správa oprávnění pro koncový bod obsluhy modelu.
Můžete také přidat proměnné prostředí pro uložení přihlašovacích údajů pro obsluhu modelu. Viz Konfigurace přístupu k prostředkům z koncových bodů obsluhujících model
Vytvoření koncového bodu
Obsluha uživatelského rozhraní
Můžete vytvořit koncový bod pro model obsluhující uživatelské rozhraní.
Kliknutím na obsluhu na bočním panelu zobrazte uživatelské rozhraní obsluhy.
Klikněte na Vytvořit koncový bod obsluhy.
Pro modely zaregistrované v registru modelů pracovního prostoru nebo modely v katalogu Unity:
Do pole Název zadejte název vašeho koncového bodu.
V části Obsluhované entity
- Kliknutím do pole Entita otevřete formulář obsluhované entity Select.
- Vyberte typ modelu, který chcete použít. Formulář se dynamicky aktualizuje na základě vašeho výběru.
- Vyberte, který model a verzi modelu chcete použít.
- Vyberte procento provozu, které se má směrovat do vašeho modelu obsluhy.
- Vyberte, jakou velikost výpočetních prostředků chcete použít. Pro své úlohy můžete použít výpočetní výkon procesoru nebo GPU. Další informace o dostupných výpočetních prostředcích GPU najdete v typech úloh GPU.
- Vyberte, jakou velikost výpočetních prostředků chcete použít. Pro své úlohy můžete použít výpočetní výkon procesoru nebo GPU. Další informace o dostupných výpočetních prostředcích GPU najdete v typech úloh GPU.
- V části Horizontální navýšení kapacity výpočetních prostředků vyberte velikost škálování výpočetních prostředků, která odpovídá počtu požadavků, které tento obsluhovaný model může zpracovat současně. Toto číslo by se mělo přibližně rovnat době běhu modelu QPS x.
- Dostupné velikosti jsou malé pro 0 až 4 požadavky, středně velké 8 až 16 požadavků a velké pro požadavky 16 až 64.
- Určete, jestli se má koncový bod při použití škálovat na nulu.
Klikněte na Vytvořit. Stránka Obslužné koncové body se zobrazí se stavem obsluhy koncového bodu, který je zobrazený jako Nepřipravený.
REST API
Koncové body můžete vytvářet pomocí rozhraní REST API. Parametry konfigurace koncového bodu najdete v tématu POST /api/2.0/serving-endpoints .
Následující příklad vytvoří koncový bod, který slouží první verzi ads1
modelu zaregistrovaného v registru modelu. Pokud chcete zadat model z katalogu Unity, zadejte úplný název modelu včetně nadřazeného katalogu a schématu, catalog.schema.example-model
například .
POST /api/2.0/serving-endpoints
{
"name": "workspace-model-endpoint",
"config":
{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "my-ads-model",
"entity_version": "4",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":
{
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
},
{
"served_model_name": "my-ads-model-4",
"traffic_percentage": 20
}
]
}
},
"tags": [
{
"key": "team",
"value": "data science"
}
]
}
Následuje příklad odpovědi. Stav koncového bodu config_update
je NOT_UPDATING
a obsluha modelu je ve READY
stavu.
{
"name": "workspace-model-endpoint",
"creator": "user@email.com",
"creation_timestamp": 1700089637000,
"last_updated_timestamp": 1700089760000,
"state": {
"ready": "READY",
"config_update": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "ads-entity",
"entity_name": "my-ads-model-3",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true,
"workload_type": "CPU",
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1700089760000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "data science"
}
],
"id": "e3bd3e471d6045d6b75f384279e4b6ab",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
Sada SDK pro nasazení MLflow
Nasazení MLflow poskytuje rozhraní API pro úlohy vytváření, aktualizace a odstraňování. Rozhraní API pro tyto úlohy přijímají stejné parametry jako rozhraní REST API pro obsluhu koncových bodů. Parametry konfigurace koncového bodu najdete v tématu POST /api/2.0/serving-endpoints .
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="workspace-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
}
}
)
Můžete také:
Povolte odvozování tabulek , aby automaticky zaznamenávaly příchozí požadavky a odchozí odpovědi do modelu obsluhující koncové body.
Typy úloh GPU
Nasazení GPU je kompatibilní s následujícími verzemi balíčků:
- Pytorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 – 2.13.0
- MLflow 2.4.0 a vyšší
Pokud chcete nasadit modely pomocí GPU, zahrnují workload_type
pole v konfiguraci koncového bodu během vytváření koncového bodu nebo jako aktualizaci konfigurace koncového bodu pomocí rozhraní API. Pokud chcete nakonfigurovat koncový bod pro úlohy GPU pomocí uživatelského rozhraní obsluhy , v rozevíracím seznamu Typ výpočetního prostředí vyberte požadovaný typ GPU.
{
"served_entities": [{
"name": "ads1",
"entity_version": "2",
"workload_type": "GPU_LARGE",
"workload_size": "Small",
"scale_to_zero_enabled": false,
}]
}
Následující tabulka shrnuje podporované typy úloh GPU.
Typ úlohy GPU | Instance GPU | Paměť GPU |
---|---|---|
GPU_SMALL |
1xT4 | 16 GB |
GPU_LARGE |
1xA100 | 80 GB |
GPU_LARGE_2 |
2xA100 | 160 GB |
Úprava vlastního koncového bodu modelu
Po povolení vlastního koncového bodu modelu můžete podle potřeby aktualizovat konfiguraci výpočetních prostředků. Tato konfigurace je užitečná zejména v případě, že potřebujete další prostředky pro váš model. Velikost úloh a konfigurace výpočetních prostředků hrají klíčovou roli v tom, jaké prostředky se přidělují pro poskytování modelu.
Dokud nebude nová konfigurace připravená, stará konfigurace bude dál obsluhovat predikční provoz. Zatímco probíhá aktualizace, nelze provést jinou aktualizaci. Probíhající aktualizaci ale můžete zrušit z uživatelského rozhraní obsluhy.
Obsluha uživatelského rozhraní
Po povolení koncového bodu modelu vyberte Upravit koncový bod a upravte výpočetní konfiguraci koncového bodu.
Můžete udělat toto:
- Vyberte si z několika velikostí úloh a automatické škálování se automaticky nakonfiguruje v rámci velikosti úlohy.
- Určete, jestli se má koncový bod při použití vertikálně snížit na nulu.
- Upravte procento provozu tak, aby se směroval do vašeho obsluhovaného modelu.
Probíhající aktualizaci konfigurace můžete zrušit výběrem možnosti Zrušit aktualizaci v pravém horním rohu stránky podrobností koncového bodu. Tato funkce je k dispozici pouze v uživatelském rozhraní obsluhy.
REST API
Následuje příklad aktualizace konfigurace koncového bodu pomocí rozhraní REST API. Viz PUT /api/2.0/serving-endpoints/{name}/config.
PUT /api/2.0/serving-endpoints/{name}/config
{
"name": "unity-catalog-model-endpoint",
"config":
{
"served_entities": [
{
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "5",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":
{
"routes": [
{
"served_model_name": "my-ads-model-5",
"traffic_percentage": 100
}
]
}
}
}
Sada SDK pro nasazení MLflow
Sada SDK pro nasazení MLflow používá stejné parametry jako rozhraní REST API, viz PUT /api/2.0/serving-endpoints/{name}/config pro podrobnosti schématu požadavků a odpovědí.
Následující ukázka kódu používá model z registru modelů katalogu Unity:
import mlflow
from mlflow.deployments import get_deploy_client
mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name=f"{endpointname}",
config={
"served_entities": [
{
"entity_name": f"{catalog}.{schema}.{model_name}",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": True
}
],
"traffic_config": {
"routes": [
{
"served_model_name": f"{model_name}-1",
"traffic_percentage": 100
}
]
}
}
)
Bodování koncového bodu modelu
Pokud chcete model vyhodnotit, odešlete požadavky do koncového bodu obsluhy modelu.
- Viz Dotaz obsluhující koncové body pro vlastní modely.
- Viz modely AI generování dotazů.
Další materiály
- Správa modelů obsluhujících koncové body
- Externí modely ve službě Mosaic AI Model Serving.
- Pokud dáváte přednost použití Pythonu, můžete použít Sadu Python SDK v reálném čase v Databricks.
Příklady poznámkových bloků
Následující poznámkové bloky zahrnují různé registrované modely Databricks, které můžete použít k vytvoření a spuštění s koncovými body obsluhy modelu.
Příklady modelu je možné importovat do pracovního prostoru podle pokynů v části Import poznámkového bloku. Jakmile vyberete a vytvoříte model z některého z příkladů, zaregistrujte ho v katalogu Unity a pak postupujte podle kroků pracovního postupu uživatelského rozhraní pro obsluhu modelu.