Sdílet prostřednictvím


Vytvoření základního modelu obsluhující koncové body

V tomto článku se dozvíte, jak vytvořit model obsluhující koncové body, které obsluhují základní modely.

Služba Databricks Model Serving podporuje následující základní modely:

  • Nejmodernější otevřené modely, které zpřístupnilo rozhraní API základních modelů. Tyto modely jsou kurátorované základní architektury modelů, které podporují optimalizované odvozování. Základní modely, jako je Llama-2-70B-chat, BGE-Large a Mistral-7B, jsou k dispozici pro okamžité použití s cenami plateb za token . Produkční úlohy, které používají základní nebo jemně vyladěné modely, je možné nasadit s zárukami výkonu pomocí zřízené propustnosti.
  • Externí modely. Jedná se o modely hostované mimo Databricks. Koncové body, které obsluhují externí modely, se dají centrálně řídit a zákazníci pro ně můžou stanovit omezení rychlosti a řízení přístupu. Mezi příklady patří základní modely, jako je GPT-4 OpenAI, Anthropic Clauda a další.

Obsluha modelu poskytuje následující možnosti pro vytváření koncových bodů obsluhy modelu:

  • Uživatelské rozhraní obsluhy
  • REST API
  • Sada SDK pro nasazení MLflow

Vytváření koncových bodů, které obsluhují tradiční modely ML nebo Pythonu, najdete v tématu Vytvoření vlastního modelu obsluhující koncové body.

Požadavky

import mlflow.deployments

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

Vytvoření základního modelu obsluhujícího koncový bod

Následující článek popisuje, jak vytvořit koncový bod, který obsluhuje základní model zpřístupněný pomocí externích modelů Databricks. Koncové body, které obsluhují jemně vyladěné varianty modelů zpřístupněných pomocí rozhraní API pro základní modely, najdete v tématu Vytvoření zřízeného koncového bodu propustnosti pomocí rozhraní REST API.

Obsluha uživatelského rozhraní

  1. Do pole Název zadejte název vašeho koncového bodu.
  2. V části Obsluhované entity
    1. Kliknutím do pole Entita otevřete formulář obsluhované entity Select.
    2. Vyberte Externí model.
    3. Vyberte poskytovatele modelu, kterého chcete použít.
    4. Klikněte na Potvrdit.
    5. Zadejte název externího modelu, který chcete použít. Formulář se dynamicky aktualizuje na základě vašeho výběru. Podívejte se na dostupné externí modely.
    6. Vyberte typ úkolu. Dostupné úkoly jsou chat, dokončení a vkládání.
    7. Zadejte podrobnosti konfigurace pro přístup k vybranému poskytovateli modelu. Obvykle se jedná o tajný kód, který odkazuje na token patu , který má koncový bod použít pro přístup k tomuto modelu.
  3. Klikněte na Vytvořit. Stránka Obslužné koncové body se zobrazí se stavemobsluhy koncového bodu, který je zobrazený jako Nepřipravený.

Vytvoření koncového bodu obsluhy modelu

Rozhraní REST API

Důležité

Parametry rozhraní REST API pro vytváření koncových bodů obsluhy, které obsluhují základní modely, jsou ve verzi Public Preview.

Následující příklad vytvoří koncový bod, který obsluhuje první verzi text-embedding-ada-002 modelu, který poskytuje OpenAI.

Parametry konfigurace koncového bodu najdete v tématu POST /api/2.0/serving-endpoints .

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

Následuje příklad odpovědi.

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

Sada SDK pro nasazení Mlflow

Následující kód vytvoří koncový bod pro vkládání pomocí OpenAI text-embedding-ada-002.

U koncových bodů základního modelu musíte zadat klíče rozhraní API pro poskytovatele modelu, kterého chcete použít. Podrobnosti o schématu požadavků a odpovědí najdete v tématu POST /api/2.0/serving-endpoints v rozhraní REST API.

Můžete také vytvořit koncové body pro dokončení a úlohy chatu podle task pole v external_model části konfigurace. Podívejte se na externí modely v Databricks Model Obsluha podporovaných modelů a poskytovatelů pro jednotlivé úlohy.


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

Aktualizace koncového bodu základního modelu

Po povolení koncového bodu modelu můžete podle potřeby nastavit konfiguraci výpočetních prostředků. Tato konfigurace je užitečná zejména v případě, že potřebujete další prostředky pro váš model. Velikost úloh a konfigurace výpočetních prostředků hrají klíčovou roli v tom, jaké prostředky se přidělují pro poskytování modelu.

Dokud nebude nová konfigurace připravená, stará konfigurace bude dál obsluhovat predikční provoz. Zatímco probíhá aktualizace, nelze provést jinou aktualizaci. V uživatelském rozhraní obsluhy můžete probíhající aktualizaci konfigurace zrušit výběrem možnosti Zrušit aktualizaci v pravém horním rohu stránky podrobností koncového bodu. Tato funkce je k dispozici pouze v uživatelském rozhraní obsluhy.

external_model Pokud se nachází v konfiguraci koncového bodu, seznam obsluhovaných entit může mít pouze jeden served_entity objekt. Stávající koncové body s existujícími external_model koncovými body nelze aktualizovat, aby již neměly .external_model Pokud je koncový bod vytvořen bez an external_model, nemůžete ho aktualizovat a přidat .external_model

Rozhraní REST API

Informace o aktualizaci koncového bodu základního modelu najdete v dokumentaci ke konfiguraci aktualizace rozhraní REST API pro podrobnosti schématu požadavků a odpovědí.

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

Sada SDK pro nasazení Mlflow

Informace o aktualizaci koncového bodu základního modelu najdete v dokumentaci ke konfiguraci aktualizace rozhraní REST API pro podrobnosti schématu požadavků a odpovědí.

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

Další materiály