API’s voor foundationmodellen met ingerichte doorvoercapaciteit op aanvraag

Deze pagina laat zien hoe u modellen kunt uitrollen met behulp van Foundation Model API's met on-demand ingerichte doorvoer.

Wat is ingerichte doorvoercapaciteit op aanvraag?

Wanneer u een ingerichte doorvoermodel voor eindpunten in Azure Databricks maakt, wijst u toegewezen deductiecapaciteit toe om een consistente doorvoer te garanderen voor het basismodel dat u wilt leveren. Eindpunten voor het aanbieden van basismodellen kunnen worden ingericht in gedeelten van modeleenheden. Met het aantal modeleenheden dat u toewijst, kunt u exact de doorvoer aanschaffen die nodig is om uw AI-productietoepassing betrouwbaar te ondersteunen.

On-demand provisioned throughput kent geen tijdelijke verplichting. Je betaalt voor de capaciteit die je toewijst en kunt die op elk moment wijzigen of verwijderen.

Zie Ondersteunde basismodellen in Model Serving voor een lijst met ondersteunde modelarchitecturen voor ingerichte doorvoereindpunten.

Als u geen toegewezen capaciteit nodig hebt, raadt Databricks prioriteit betalen per token aan voor Foundation Model-API's.

Eisen

Raadpleeg Vereisten.

Databricks raadt aan de basismodellen te gebruiken die vooraf zijn geïnstalleerd in Unity Catalog. U vindt deze modellen onder de catalogus system in het schema ai (system.ai).

Notitie

Als uw organisatie basismodelmachtigingen voor Unity Catalog gebruikt om de toegang tot modellen te beperken, moeten ingerichte doorvoereindpunten voor niet-toegestane modellen handmatig worden verwijderd.

Een basismodel implementeren:

  1. Navigeer naar system.ai in Catalog Explorer.
  2. Klik op de naam van het model dat u wilt implementeren.
  3. Klik op de modelpagina op de knop Dit model inzetten.
  4. De pagina Een service-eindpunt maken wordt weergegeven. Zie Uw ingerichte doorvoereindpunt maken met behulp van de gebruikersinterface.

Notitie

Als u een Meta Llama-model wilt implementeren vanuit system.ai in Unity Catalog, moet u de toepasselijke Instruct-versie kiezen. Basisversies van de Meta Llama-modellen worden niet ondersteund voor implementatie vanuit system.ai in Unity Catalog. Zie Foundation-modellen die worden gehost op Databricks en de variantenvan het ondersteunde Meta Llama-model.

Uw ingerichte doorvoereindpunt maken met behulp van de gebruikersinterface

Nadat het vastgelegde model zich in Unity Catalog bevindt, maakt u een geconfigureerd doorvoer-serveeindpunt aan de hand van de volgende stappen:

  1. Navigeer naar de bedieningsinterface in uw werkruimte.
  2. Selecteer Maak een service-eindpunt.
  3. Selecteer in het veld Entity uw model in Unity Catalog. Voor in aanmerking komende modellen toont de gebruikersinterface van de bediende entiteit het scherm Geconfigureerde doorvoer.
  4. In de vervolgkeuzelijst Maximaal kunt u de maximale verwerkingscapaciteit in tokens per seconde voor uw eindpunt configureren.
    1. Ingerichte doorvoereindpunten worden automatisch geschaald, zodat u Wijzigen kunt selecteren om het minimale aantal tokens per seconde te bekijken waar uw eindpunt naar kan worden afgeschaald.

Geconfigureerde doorvoer

Uw ingerichte doorvoereindpunt maken met behulp van de REST API

Het REST API-verzoek om een provisioned throughput endpoint te creëren, hangt af van of het foundationmodel capaciteit meet in doorvoerbanden of modeleenheden. Om te bepalen welke maatregel voor uw model geldt, raadpleeg Modeleenheden in ingerichte doorvoer.

Als u de voorkeur geeft aan Python, kunt u ook een eindpunt maken met behulp van de MLflow Deployment SDK.

Het volgende voorbeeld creëert een eindpunt voor een funderingsmodel dat doorvoerbanden gebruikt. Voor deze modellen moet je de min_provisioned_throughput en max_provisioned_throughput velden in je verzoek specificeren. Zie Ingerichte doorvoer in stappenom het geschikte bereik van ingerichte doorvoer voor uw model te identificeren.

import requests
import json

# Set the name of the MLflow endpoint
endpoint_name = "prov-throughput-endpoint"

# Name of the registered MLflow model
model_name = "ml.llm-catalog.foundation-model"

# Get the latest version of the MLflow model
model_version = 3

# Get the API endpoint and token for the current notebook context
API_ROOT = "<YOUR-API-URL>"
API_TOKEN = "<YOUR-API-TOKEN>"

headers = {"Content-Type": "text/json", "Authorization": f"Bearer {API_TOKEN}"}

optimizable_info = requests.get(
  url=f"{API_ROOT}/api/2.0/serving-endpoints/get-model-optimization-info/{model_name}/{model_version}",
  headers=headers).json()

if 'optimizable' not in optimizable_info or not optimizable_info['optimizable']:
  raise ValueError("Model is not eligible for provisioned throughput")

chunk_size = optimizable_info['throughput_chunk_size']

# Minimum desired provisioned throughput
min_provisioned_throughput = 2 * chunk_size

# Maximum desired provisioned throughput
max_provisioned_throughput = 3 * chunk_size

# Send the POST request to create the serving endpoint
data = {
  "name": endpoint_name,
  "config": {
    "served_entities": [
      {
        "entity_name": model_name,
        "entity_version": model_version,
        "min_provisioned_throughput": min_provisioned_throughput,
        "max_provisioned_throughput": max_provisioned_throughput,
      }
    ]
  },
}

response = requests.post(
  url=f"{API_ROOT}/api/2.0/serving-endpoints", json=data, headers=headers
)

print(json.dumps(response.json(), indent=4))

Het volgende voorbeeld creëert een eindpunt voor een funderingsmodel dat modeleenheden gebruikt. Voor deze modellen specificeer je het provisioned_model_units veld in je verzoek en stuur je het POST-verzoek naar het /api/2.0/serving-endpoints/pt eindpunt.

import requests
import json

# Set the name of the provisioned throughput endpoint
endpoint_name = "prov-throughput-endpoint"

# Name of the foundation model
model_name = "system.ai.gpt-oss-120b"

# Get the latest version of the foundation model
model_version = 1

# Get the API endpoint and token for the current notebook context
API_ROOT = "<YOUR-API-URL>"
API_TOKEN = "<YOUR-API-TOKEN>"

headers = {"Content-Type": "text/json", "Authorization": f"Bearer {API_TOKEN}"}

optimizable_info = requests.get(
  url=f"{API_ROOT}/api/2.0/serving-endpoints/get-model-optimization-info/{model_name}/{model_version}",
  headers=headers).json()

if 'optimizable' not in optimizable_info or not optimizable_info['optimizable']:
  raise ValueError("Model is not eligible for provisioned throughput")

chunk_size = optimizable_info['model_unit_chunk_size']

# Desired provisioned throughput
desired_model_units = 2 * chunk_size

# Send the POST request to create the serving endpoint
data = {
  "name": endpoint_name,
  "config": {
    "served_entities": [
      {
        "entity_name": model_name,
        "entity_version": model_version,
        "provisioned_model_units": desired_model_units,
      }
    ]
  },
}

response = requests.post(
  url=f"{API_ROOT}/api/2.0/serving-endpoints/pt", json=data, headers=headers
)

print(json.dumps(response.json(), indent=4))

Logaritmische kans voor chatvoltooiingstaken

Voor chatvoltooiingstaken kunt u de parameter logprobs gebruiken om de logkans aan te geven van het bemonsteren van een token in het kader van het proces voor het genereren van een groot taalmodel. U kunt logprobs gebruiken voor verschillende scenario's, waaronder classificatie, beoordeling van model onzekerheid en het uitvoeren van metrische evaluatiegegevens. Zie de API voor voltooiingen van chats voor parameterdetails.

toegewezen doorvoer in gradaties ophalen

Voorziene doorvoer is beschikbaar in eenheden van tokens per seconde, waarbij de specifieke eenheden per model variëren. Om het geschikte bereik voor uw behoeften te identificeren, raadt Databricks aan om de API voor modeloptimalisatie-informatie binnen het platform te gebruiken.

GET api/2.0/serving-endpoints/get-model-optimization-info/{registered_model_name}/{version}

Hier volgt een voorbeeldantwoord van de API:

{
  "optimizable": true,
  "model_type": "llama",
  "throughput_chunk_size": 1580
}

Beperking

  • Modelimplementatie kan mislukken vanwege problemen met GPU-capaciteit, wat resulteert in een time-out tijdens het maken of bijwerken van het eindpunt. Neem contact op met uw Databricks-accountteam om het probleem op te lossen.