Aangepaste modelondersteunings-eindpunten maken
In dit artikel wordt beschreven hoe u model voor eindpunten maakt die aangepaste modellen leveren met behulp van Databricks Model Serving.
Model Serving biedt de volgende opties voor endpoint-aanmaak:
- De ondersteunende gebruikersinterface
- REST-API
- MLflow Deployments SDK
Zie Basismodel maken voor eindpuntenvoor het maken van eindpunten die gebruikmaken van generatieve AI-modellen.
Eisen
- Uw werkruimte moet zich in een ondersteunde regio bevinden.
- Als u aangepaste bibliotheken of bibliotheken van een privéspiegelserver met uw model gebruikt, raadpleegt u Aangepaste Python-bibliotheken gebruiken met Model Serving voordat u het modeleindpunt aanmaakt.
- Voor het maken van eindpunten met behulp van de MLflow Deployments SDK moet u de MLflow Deployment-client installeren. Voer de volgende opdracht uit om deze te installeren:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Toegangsbeheer
U kunt ook omgevingsvariabelen toevoegen om referenties op te slaan voor het leveren van modellen. Zie Toegang tot middelen configureren vanaf modelservereindpunten
Een eindpunt maken
UI leveren
U kunt een eindpunt maken voor modellenservering met de Serving-gebruikersinterface.
Klik op Serveren in de zijbalk om de gebruikersinterface van de server weer te geven.
Klik op Een service-eindpunt maken.
Voor modellen die zijn geregistreerd in het werkruimtemodelregister of -modellen in Unity Catalog:
Geef in het veld Naam een naam op voor uw eindpunt.
In de sectie Geserveerde entiteiten
- Klik in het veld Entiteit om het formulier Bediende entiteit selecteren te openen.
- Selecteer het type model dat u wilt bedienen. Het formulier wordt dynamisch bijgewerkt op basis van uw selectie.
- Selecteer welk model en welke modelversie u wilt gebruiken.
- Selecteer het percentage verkeer dat u naar uw geleverd model wilt routeren.
- Selecteer welke grootte rekenkracht u wilt gebruiken. U kunt CPU- of GPU-berekeningen gebruiken voor uw workloads. Zie GPU-workloadtypen voor meer informatie over beschikbare GPU-berekeningen.
- Selecteer welke grootte rekenkracht u wilt gebruiken. U kunt CPU- of GPU-berekeningen gebruiken voor uw workloads. Zie GPU-workloadtypen voor meer informatie over beschikbare GPU-berekeningen.
- Selecteer onder Compute Scale-outde grootte van de rekenschaal die overeenkomt met het aantal aanvragen dat dit gediende model tegelijk kan verwerken. Dit getal moet ongeveer gelijk zijn aan de uitvoeringstijd van het QPS x-model.
- De beschikbare grootten zijn klein voor 0-4 aanvragen, gemiddeld 8-16 aanvragen en groot voor 16-64 aanvragen.
- Geef op of het eindpunt moet worden geschaald naar nul wanneer het niet in gebruik is.
- Onder Geavanceerde configuratiekunt u omgevingsvariabelen toevoegen om verbinding te maken met resources vanaf uw eindpunt of het DataFrame- van uw functiezoeklogboek vastleggen in de deductietabel van het eindpunt. Voor het vastleggen van de DataFrame voor kenmerkopzoeking is MLflow 2.14.0 of hoger vereist.
Klik op Create. De pagina Serverende eindpunten wordt weergegeven met de status van het servereindpunt als Niet gereed.
REST-API
U kunt eindpunten maken met behulp van de REST API. Zie POST /api/2.0/serving-endpoints voor eindpuntconfiguratieparameters.
In het volgende voorbeeld wordt een eindpunt gemaakt dat de eerste versie van het ads1
-model gebruikt dat is geregistreerd in het Unity Catalog-modelregister. Als u een model uit Unity Catalog wilt opgeven, geeft u de volledige modelnaam op, inclusief bovenliggende catalogus en schema, zoals catalog.schema.example-model
.
POST /api/2.0/serving-endpoints
{
"name": "uc-model-endpoint",
"config":
{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "catalog.schema.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"
}
]
}
Hier volgt een voorbeeld van een antwoord. De status van het eindpunt config_update
is NOT_UPDATING
en het geserveerde model heeft een READY
status.
{
"name": "uc-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": "catalog.schema.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": "catalog.schema.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
}
MLflow Deployments SDK
MLflow Deployments biedt een API voor het maken, bijwerken en verwijderen van taken. De API's voor deze taken accepteren dezelfde parameters als de REST API voor het leveren van eindpunten. Zie POST /api/2.0/serving-endpoints voor eindpuntconfiguratieparameters.
In het volgende voorbeeld wordt een eindpunt gemaakt dat fungeert voor de derde versie van het my-ads-model
-model dat is geregistreerd in het Unity Catalog-modelregister. U moet de volledige modelnaam opgeven, inclusief hoofdcatalogus en schema, zoals catalog.schema.example-model
.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.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
}
]
}
}
)
U kunt ook het volgende doen:
- Configureer uw eindpunt voor meerdere modellen.
- Configureer uw eindpunt voor routeoptimalisatie.
- Deductietabellen inschakelen om automatisch binnenkomende aanvragen en uitgaande antwoorden vast te leggen voor uw model voor eindpunten.
- Als u inferentietabellen hebt ingeschakeld op uw eindpunt, kunt u uw feature-lookup DataFrame registreren in de inferentietabel.
GPU-workloadtypen
GPU-implementatie is compatibel met de volgende pakketversies:
- Pytorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 - 2.13.0
- MLflow 2.4.0 en hoger
Als u uw modellen wilt implementeren met GPU's, moet u het veld workload_type
in de eindpuntconfiguratie opnemen tijdens het maken van eindpunt of als een update voor eindpuntconfiguratie met behulp van de API. Als u uw eindpunt wilt configureren voor GPU-workloads met de Bedieningsinterface van, selecteert u het gewenste GPU-type in de vervolgkeuzelijst voor rekentype.
{
"served_entities": [{
"entity_name": "catalog.schema.ads1",
"entity_version": "2",
"workload_type": "GPU_LARGE",
"workload_size": "Small",
"scale_to_zero_enabled": false,
}]
}
De volgende tabel bevat een overzicht van de beschikbare ondersteunde GPU-workloadtypen.
Type GPU-werkbelasting | GPU-instantie | GPU-geheugen |
---|---|---|
GPU_SMALL |
1xT4 | 16 GB |
GPU_LARGE |
1xA100 | 80 GB |
GPU_LARGE_2 |
2xA100 | 160 GB |
Een aangepast modeleindpunt wijzigen
Nadat u een aangepast modeleindpunt hebt ingeschakeld, kunt u de rekenconfiguratie naar wens bijwerken. Deze configuratie is met name handig als u aanvullende resources nodig hebt voor uw model. Workloadgrootte en rekenconfiguratie spelen een belangrijke rol in de resources die worden toegewezen voor het leveren van uw model.
Totdat de nieuwe configuratie gereed is, blijft de oude configuratie voorspellingsverkeer leveren. Hoewel er een update wordt uitgevoerd, kan er geen andere update worden uitgevoerd. U kunt echter een lopende update annuleren vanuit de Serving-gebruikersinterface.
UI leveren
Nadat u een modeleindpunt hebt ingeschakeld, selecteert u Eindpunt bewerken om de rekenconfiguratie van uw eindpunt te wijzigen.
U kunt het volgende doen:
- Kies uit enkele workloadgrootten en autoscaling wordt binnen de workloadgrootte geconfigureerd.
- Geef op of uw eindpunt omlaag moet worden geschaald naar nul wanneer dit niet wordt gebruikt.
- Wijzig het percentage verkeer om naar uw aangeboden model te routeren.
U kunt een actieve configuratie-update annuleren door Update annuleren te selecteren in de rechterbovenhoek van de detailpagina van het eindpunt. Deze functionaliteit is alleen beschikbaar in de Serving-gebruikersinterface.
REST-API
Hier volgt een voorbeeld van een update van de eindpuntconfiguratie met behulp van de REST API. Zie 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
}
]
}
}
}
MLflow Deployments SDK
De MLflow Deployments SDK gebruikt dezelfde parameters als de REST API. Zie PUT /api/2.0/serving-endpoints/{name}/config voor details van het aanvraag- en antwoordschema.
In het volgende codevoorbeeld wordt een model uit het Unity Catalog-modelregister gebruikt:
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
}
]
}
}
)
Een modeleindpunt scoren
Als u uw model wilt beoordelen, verzendt u aanvragen naar het eindpunt van het model.
Aanvullende bronnen
- Beheer het leveren van eindpunten voor modellen.
- Externe modellen in Mosaic AI Model Serving.
- Als u liever Python gebruikt, kunt u de Databricks real-time serving Python SDK gebruiken.
Notebook-voorbeelden
De volgende notebooks bevatten verschillende geregistreerde Databricks-modellen die u kunt gebruiken om aan de slag te gaan met eindpunten voor modellen. Zie Zelfstudie: Een aangepast model implementeren en er query's op uitvoerenvoor meer voorbeelden.
De modelvoorbeelden kunnen in de werkruimte worden geïmporteerd door de aanwijzingen in Een notebook importeren te volgen. Nadat u een model hebt gekozen en gemaakt van een van de voorbeelden, registreert u dit in de Unity Catalogen volgt u vervolgens de stappen van de UI-werkstroom voor het implementeren van modellen.