Delen via


Basismodel maken voor eindpunten

In dit artikel leert u hoe u modellen maakt die eindpunten leveren die basismodellen dienen.

Databricks Model Serving ondersteunt de volgende basismodellen:

  • State-of-the-art open modellen die beschikbaar worden gesteld door Foundation Model-API's. Deze modellen zijn gecureerde basismodelarchitecturen die geoptimaliseerde deductie ondersteunen. Basismodellen, zoals Llama-2-70B-chat, BGE-Large en Mistral-7B zijn beschikbaar voor direct gebruik met prijzen voor betalen per token . Productieworkloads, met behulp van basismodellen of nauwkeurig afgestemde modellen, kunnen worden geïmplementeerd met prestatiegaranties met behulp van ingerichte doorvoer.
  • Externe modellen. Dit zijn modellen die buiten Databricks worden gehost. Eindpunten die externe modellen dienen, kunnen centraal worden beheerd en klanten kunnen frequentielimieten en toegangsbeheer voor hen vaststellen. Voorbeelden hiervan zijn basismodellen zoals GpT-4 van OpenAI, Claude van Antropic en andere.

Model serving biedt de volgende opties voor het maken van een eindpunt voor het model:

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

Zie Aangepaste modellen maken die eindpunten leveren voor eindpunten voor het maken van eindpunten voor traditionele ML- of Python-modellen.

Eisen

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

Een basismodel maken voor eindpunt

Hieronder wordt beschreven hoe u een eindpunt maakt dat een basismodel gebruikt dat beschikbaar wordt gemaakt met behulp van externe Databricks-modellen. Zie Uw ingerichte doorvoereindpunt maken met behulp van de REST API's voor eindpunten die zijn afgestemd op de modellen die beschikbaar worden gemaakt met behulp van Foundation Model-API's.

Gebruikersinterface bedienen

  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 Extern model.
    3. Selecteer de modelprovider die u wilt gebruiken.
    4. Klik op Bevestigen
    5. Geef de naam op van het externe model dat u wilt gebruiken. Het formulier wordt dynamisch bijgewerkt op basis van uw selectie. Bekijk de beschikbare externe modellen.
    6. Selecteer het taaktype. Beschikbare taken zijn chat-, voltooiings- en insluitingen.
    7. Geef de configuratiedetails op voor toegang tot de geselecteerde modelprovider. Dit is meestal het geheim dat verwijst naar het persoonlijke toegangstoken dat u wilt gebruiken voor toegang tot dit model.
  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

Belangrijk

De REST API-parameters voor het maken van service-eindpunten die basismodellen dienen, bevinden zich in openbare preview.

In het volgende voorbeeld wordt een eindpunt gemaakt dat de eerste versie van het text-embedding-ada-002 model van OpenAI gebruikt.

Zie POST /api/2.0/serving-endpoints voor eindpuntconfiguratieparameters.

{
  "name": "openai_endpoint",
  "config":{
    "served_entities": [
      {
        "name": "openai_embeddings",
        "external_model":{
          "name": "text-embedding-ada-002",
          "provider": "openai",
          "task": "llm/v1/embeddings",
          "openai_config":{
            "openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
          }
        }
      }
    ]
  },
  "rate_limits": [
    {
      "calls": 100,
      "key": "user",
      "renewal_period": "minute"
    }
  ],
  "tags": [
    {
      "key": "team",
      "value": "gen-ai"
    }
  ]
}

Hier volgt een voorbeeld van een antwoord.

{
  "name": "openai_endpoint",
  "creator": "user@email.com",
  "creation_timestamp": 1699617587000,
  "last_updated_timestamp": 1699617587000,
  "state": {
    "ready": "READY"
  },
  "config": {
    "served_entities": [
      {
        "name": "openai_embeddings",
        "external_model": {
          "provider": "openai",
          "name": "text-embedding-ada-002",
          "task": "llm/v1/embeddings",
          "openai_config": {
            "openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
          }
        },
        "state": {
          "deployment": "DEPLOYMENT_READY",
          "deployment_state_message": ""
        },
        "creator": "user@email.com",
        "creation_timestamp": 1699617587000
      }
  ],
    "traffic_config": {
      "routes": [
        {
          "served_model_name": "openai_embeddings",
          "traffic_percentage": 100
        }
      ]
    },
    "config_version": 1
  },
  "tags": [
    {
      "key": "team",
      "value": "gen-ai"
    }
  ],
  "id": "69962db6b9db47c4a8a222d2ac79d7f8",
  "permission_level": "CAN_MANAGE",
  "route_optimized": false
}

Mlflow deployments SDK

Hieronder wordt een eindpunt gemaakt voor insluitingen met OpenAI text-embedding-ada-002.

Voor basismodeleindpunten moet u API-sleutels opgeven voor de modelprovider die u wilt gebruiken. Zie POST /api/2.0/serving-endpoints in de REST API voor details van het aanvraag- en antwoordschema.

U kunt ook eindpunten maken voor voltooiingen en chattaken, zoals opgegeven in het task veld in de external_model sectie van de configuratie. Zie Externe modellen in Databricks Model Serving voor ondersteunde modellen en providers voor elke taak.


from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
    name="chat",
    config={
        "served_entities": [
            {
                "name": "completions",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{secrets/scope/key}}",
                    },
                },
            }
        ],
    },
)
assert endpoint == {
    "name": "chat",
    "creator": "alice@company.com",
    "creation_timestamp": 0,
    "last_updated_timestamp": 0,
    "state": {...},
    "config": {...},
    "tags": [...],
    "id": "88fd3f75a0d24b0380ddc40484d7a31b",
}

Een basismodeleindpunt bijwerken

Nadat u een modeleindpunt hebt ingeschakeld, kunt u de rekenconfiguratie naar wens instellen. 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. In de gebruikersinterface van De server kunt u een actieve configuratie-update annuleren door de update annuleren in de rechterbovenhoek van de detailpagina van het eindpunt te selecteren. Deze functionaliteit is alleen beschikbaar in de gebruikersinterface van De server.

Wanneer een external_model object aanwezig is in een eindpuntconfiguratie, kan de lijst met weergegeven entiteiten slechts één served_entity-object hebben. Bestaande eindpunten met een external_model kunnen niet worden bijgewerkt zodat ze external_modelgeen . Als het eindpunt zonder een external_modelis gemaakt, kunt u het niet bijwerken om een external_model.

Rest API

Als u het eindpunt van het basismodel wilt bijwerken, raadpleegt u de configuratiedocumentatie voor de REST API-update voor details van het aanvraag- en antwoordschema.

{
  "name": "openai_endpoint",
  "served_entities":[
    {
      "name": "openai_chat",
      "external_model":{
        "name": "gpt-4",
        "provider": "openai",
        "task": "llm/v1/chat",
        "openai_config":{
          "openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
        }
      }
    }
  ]
}

Mlflow deployments SDK

Als u het eindpunt van het basismodel wilt bijwerken, raadpleegt u de configuratiedocumentatie voor de REST API-update voor details van het aanvraag- en antwoordschema.

from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.update_endpoint(
    endpoint="chat",
    config={
        "served_entities": [
            {
                "name": "chats",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{secrets/scope/key}}",
                    },
                },
            }
        ],
    },
)
assert endpoint == {
    "name": "chats",
    "creator": "alice@company.com",
    "creation_timestamp": 0,
    "last_updated_timestamp": 0,
    "state": {...},
    "config": {...},
    "tags": [...],
    "id": "88fd3f75a0d24b0380ddc40484d7a31b",
  }

rate_limits = client.update_endpoint(
    endpoint="chat",
    config={
        "rate_limits": [
            {
                "key": "user",
                "renewal_period": "minute",
                "calls": 10,
            }
        ],
    },
)
assert rate_limits == {
    "rate_limits": [
        {
            "key": "user",
            "renewal_period": "minute",
            "calls": 10,
        }
    ],
}

Aanvullende bronnen