Condividi tramite


Creare endpoint di gestione del modello di base

Questo articolo illustra come creare endpoint di gestione dei modelli che servono i modelli di base.

Databricks Model Serving supporta i modelli di base seguenti:

  • Modelli aperti all'avanguardia resi disponibili dalle API del modello foundation. Questi modelli sono architetture di modelli di base curate che supportano l'inferenza ottimizzata. I modelli di base, come Llama-2-70B-chat, BGE-Large e Mistral-7B sono disponibili per un uso immediato con prezzi con pagamento per token . I carichi di lavoro di produzione, che usano modelli di base o ottimizzati, possono essere distribuiti con garanzie di prestazioni usando la velocità effettiva con provisioning.
  • Modelli esterni. Si tratta di modelli ospitati all'esterno di Databricks. Gli endpoint che servono modelli esterni possono essere regolati centralmente e i clienti possono stabilire limiti di velocità e controllo di accesso per loro. Alcuni esempi includono modelli di base come GPT-4 di OpenAI, Claude di Anthropic e altri.

La gestione dei modelli offre le opzioni seguenti per la creazione di endpoint del modello:

  • Interfaccia utente di servizio
  • REST API
  • MLflow Deployments SDK

Per la creazione di endpoint che servono modelli di Machine Learning o Python tradizionali, vedere Creare endpoint di gestione di modelli personalizzati.

Requisiti

import mlflow.deployments

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

Creare un endpoint di gestione di un modello di base

Di seguito viene descritto come creare un endpoint che gestisce un modello di base reso disponibile usando i modelli esterni di Databricks. Per gli endpoint che servono varianti ottimizzate dei modelli resi disponibili usando le API del modello di base, vedere Creare l'endpoint della velocità effettiva con provisioning usando l'API REST.

Interfaccia utente di gestione

  1. Nel campo Nome specificare un nome per l'endpoint.
  2. Nella sezione Entità servite
    1. Fare clic nel campo Entità per aprire il modulo Seleziona entità servita.
    2. Selezionare Modello esterno.
    3. Selezionare il provider di modelli da usare.
    4. Fare clic su Conferma
    5. Specificare il nome del modello esterno da usare. Il modulo viene aggiornato dinamicamente in base alla selezione. Vedere i modelli esterni disponibili.
    6. Selezionare il tipo di attività. Le attività disponibili sono chat, completamenti e incorporamenti.
    7. Specificare i dettagli di configurazione per l'accesso al provider di modelli selezionato. Si tratta in genere del segreto che fa riferimento al token di accesso personale da usare per l'accesso a questo modello.
  3. Fai clic su Crea. La pagina Gestione degli endpoint viene visualizzata con Lo stato dell'endpoint di servizio visualizzato come Non pronto.

Creare un endpoint di gestione del modello

API REST

Importante

I parametri dell'API REST per la creazione di endpoint che servono i modelli di base sono disponibili in anteprima pubblica.

Nell'esempio seguente viene creato un endpoint che gestisce la prima versione del text-embedding-ada-002 modello fornito da OpenAI.

Vedere POST /api/2.0/serving-endpoints per i parametri di configurazione degli endpoint.

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

Di seguito è riportata una risposta di esempio.

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

Sdk per le distribuzioni mlflow

Di seguito viene creato un endpoint per gli incorporamenti con OpenAI text-embedding-ada-002.

Per gli endpoint del modello di base, è necessario specificare le chiavi API per il provider di modelli che si vuole usare. Per informazioni dettagliate sullo schema di richiesta e risposta, vedere POST /api/2.0/serving-endpoints nell'API REST.

È anche possibile creare endpoint per i completamenti e le attività di chat, come specificato dal task campo nella external_model sezione della configurazione. Vedere Modelli esterni in Databricks Model Serving per i modelli e i provider supportati per ogni attività.


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

Aggiornare un endpoint del modello di base

Dopo aver abilitato un endpoint del modello, è possibile impostare la configurazione di calcolo in base alle esigenze. Questa configurazione è particolarmente utile se sono necessarie risorse aggiuntive per il modello. Le dimensioni del carico di lavoro e la configurazione di calcolo svolgono un ruolo chiave nelle risorse allocate per gestire il modello.

Fino a quando la nuova configurazione non è pronta, la configurazione precedente continua a gestire il traffico di stima. Mentre è in corso un aggiornamento, non è possibile eseguire un altro aggiornamento. Nell'interfaccia utente di gestione è possibile annullare un aggiornamento della configurazione in corso selezionando Annulla aggiornamento nella parte superiore destra della pagina dei dettagli dell'endpoint. Questa funzionalità è disponibile solo nell'interfaccia utente Di servizio.

Quando un oggetto external_model è presente in una configurazione dell'endpoint, l'elenco delle entità servite può avere un solo oggetto served_entity. Gli endpoint esistenti con un external_model oggetto non possono essere aggiornati per non avere più un oggetto external_model. Se l'endpoint viene creato senza , external_modelnon è possibile aggiornarlo per aggiungere un oggetto external_model.

API REST

Per aggiornare l'endpoint del modello di base, vedere la documentazione sulla configurazione dell'aggiornamento dell'API REST per informazioni dettagliate sullo schema di richiesta e risposta.

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

Sdk per le distribuzioni mlflow

Per aggiornare l'endpoint del modello di base, vedere la documentazione sulla configurazione dell'aggiornamento dell'API REST per informazioni dettagliate sullo schema di richiesta e risposta.

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

Risorse aggiuntive