Delen via


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 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 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 credentials 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 register van het werkruimtemodel of in 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 van de weergegeven entiteit Select te openen.
    2. Select het type model dat u wilt dienen. Het formulier wordt dynamisch bijgewerkt op basis van uw selectie.
    3. Select welk model en versie van het model u wilt aanbieden.
    4. Select het percentage verkeer dat moet worden gerouteerd naar uw geleverd model.
    5. Select welk formaat berekeningscapaciteit te gebruiken. U kunt CPU- of GPU-berekeningen gebruiken voor uw workloads. Zie GPU-workloadtypen voor meer informatie over beschikbare GPU-berekeningen.
    6. Select welk formaat berekeningscapaciteit te gebruiken. U kunt CPU- of GPU-berekeningen gebruiken voor uw workloads. Zie GPU-workloadtypen voor meer informatie over beschikbare GPU-berekeningen.
    7. Onder compute scale-out, select de grootte van de rekenschaal die overeenkomt met het aantal aanvragen dat dit gediende model kan verwerken tegelijkertijd. 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.
    8. 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 eindpuntconfiguratie parameters.

In het volgende voorbeeld wordt een eindpunt gemaakt dat fungeert voor de eerste versie van het ads1-model dat is geregistreerd in het unity-Catalog modelregister. Als u een model van Unity Catalogwilt opgeven, vermeld dan de volledige modelnaam, inclusief de bovenliggende catalog 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 config_update het eindpunt is NOT_UPDATING en het aangeboden 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, update 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 eindpuntconfiguratie parameters.

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 bovenliggende catalog 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:

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 workload_type veld in de eindpuntconfiguratie opnemen tijdens het maken van eindpunt of als eindpuntconfiguratie update met behulp van de API. Als u uw eindpunt wilt configureren voor GPU-workloads met de De gebruikersinterface van bedienen, select u het gewenste GPU-type uit de vervolgkeuzelijst Compute-type.

{
  "served_entities": [{
    "entity_name": "catalog.schema.ads1",
    "entity_version": "2",
    "workload_type": "GPU_LARGE",
    "workload_size": "Small",
    "scale_to_zero_enabled": false,
  }]
}

In de volgende table worden de beschikbare GPU-workloadtypen samengevat die worden ondersteund.

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 update. 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. Terwijl er een update in uitvoering is, kan er geen tweede update worden gemaakt. U kunt echter een lopende update annuleren vanuit de gebruikersinterface van de server.

Gebruikersinterface bedienen

Nadat u een modeleindpunt hebt ingeschakeld, selecteindpunt 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 update in de rechterbovenhoek van de detailpagina van het eindpunt te selecteren. Deze functionaliteit is alleen beschikbaar in de gebruikersinterface van De server.

REST-API

Hier volgt een eindpuntconfiguratie update voorbeeld 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 maakt gebruik van dezelfde parameters als de REST API. Zie PUT /api/2.0/serving-endpoints/{name}/config voor schema details van aanvragen en antwoorden.

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 get aan de slag te gaan met modellen die eindpunten leveren. 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 op basis van een van de voorbeelden, registreer het in Unity Catalogen volg vervolgens de stappen in de UI-workflow voor het serveren van modellen.

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

Get notitieboek

Een HuggingFace-model trainen en registreren voor modelleringsnotitieblok

Get notitieboek