Aangepaste model-service-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 het maken van eindpunten:

  • De ondersteunende gebruikersinterface
  • REST-API
  • MLflow Deployments SDK

Zie Basismodel maken voor eindpunten die eindpunten dienen voor generatieve AI-basismodellen.

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 maakt.
  • 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

Zie Machtigingen beheren voor het eindpunt van uw model voor eindpunten om inzicht te krijgen in opties voor toegangsbeheer voor het model dat eindpunten bedient.

U kunt ook omgevingsvariabelen toevoegen om referenties op te slaan voor het leveren van modellen. Zie Toegang tot resources configureren vanuit model voor eindpunten

Een eindpunt maken

Gebruikersinterface bedienen

U kunt een eindpunt maken voor het leveren van modellen met de gebruikersinterface van De server .

  1. Klik op Serveren in de zijbalk om de gebruikersinterface van de server weer te geven.

  2. Klik op Een service-eindpunt maken.

    Deelvenster Voor modelweergave in de Databricks-gebruikersinterface

Voor modellen die zijn geregistreerd in het werkruimtemodelregister of -modellen in Unity Catalog:

  1. Geef in het veld Naam een naam op voor uw eindpunt.

  2. In de sectie Geserveerde entiteiten

    1. Klik in het veld Entiteit om het formulier Voor de entiteit selecteren te openen.
    2. Selecteer het type model dat u wilt gebruiken. Het formulier wordt dynamisch bijgewerkt op basis van uw selectie.
    3. Selecteer welk model en welke modelversie u wilt gebruiken.
    4. Selecteer het percentage verkeer dat u naar uw geleverd model wilt routeren.
    5. 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.
    6. Selecteer onder Compute Scale-out de grootte van de rekenschaal die overeenkomt met het aantal aanvragen dat dit geleverd model tegelijkertijd kan verwerken. Dit getal moet ongeveer gelijk zijn aan de uitvoeringstijd van het QPS x-model.
      1. De beschikbare grootten zijn klein voor 0-4 aanvragen, gemiddeld 8-16 aanvragen en groot voor 16-64 aanvragen.
    7. Geef op of het eindpunt moet worden geschaald naar nul wanneer het niet in gebruik is.
  3. Klik op Create. De pagina Eindpunten voor het serveren wordt weergegeven met de status Van het servereindpunt die wordt weergegeven als Niet gereed.

    Een eindpunt voor het leveren van een model maken

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 fungeert voor de eerste versie van het ads1 model dat is geregistreerd in het 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": "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"
    }
  ]
}

Hier volgt een voorbeeld van een antwoord. De status van config_update het eindpunt is NOT_UPDATING en het aangeboden model heeft een READY status.

{
  "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
}

Mlflow deployments SDK

MLflow-implementaties bieden 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.


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
                }
            ]
        }
    }
)

U kunt ook het volgende doen:

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, neemt u het veld in uw eindpuntconfiguratie op tijdens het workload_type maken van het eindpunt of als een update voor de eindpuntconfiguratie met behulp van de API. Als u uw eindpunt wilt configureren voor GPU-workloads met de gebruikersinterface van de server , selecteert u het gewenste GPU-type in de vervolgkeuzelijst Compute-type .

{
  "served_entities": [{
    "name": "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-workload GPU-exemplaar 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 actieve update annuleren vanuit de gebruikersinterface van De server.

Gebruikersinterface bedienen

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 een paar workloadgrootten en automatisch schalen wordt automatisch geconfigureerd binnen de workloadgrootte.
  • 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 in de rechterbovenhoek van de detailpagina van het eindpunt de update annuleren te selecteren. Deze functionaliteit is alleen beschikbaar in de gebruikersinterface van De server.

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": "workspace-model-endpoint",
  "config":{
    "served_entities": [
      {
        "name": "ads-entity"
        "entity_name": "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

Notebook-voorbeelden

De volgende notebooks bevatten verschillende geregistreerde Databricks-modellen die u kunt gebruiken om aan de slag te gaan met eindpunten voor modellen.

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 op basis van een van de voorbeelden, registreert u het in het MLflow-modelregister en volgt u vervolgens de stappen voor de ui-werkstroom voor het leveren van modellen.

Een scikit-learn-model trainen en registreren voor model met notebook

Notebook downloaden

Een HuggingFace-model trainen en registreren voor modelleringsnotitieblok

Notebook downloaden