Externí modely ve službě Databricks Model Serving

Důležité

Příklady kódu v tomto článku ukazují použití rozhraní CRUD API pro nasazení MLflow ve verzi Public Preview .

Tento článek popisuje externí modely ve službě Databricks Model Serving, včetně podporovaných poskytovatelů modelů a omezení.

Co jsou externí modely?

Externí modely jsou modely třetích stran hostované mimo Databricks. Podporované službou Model Obsluha, externí modely umožňují zjednodušit používání a správu různých poskytovatelů velkých jazykových modelů (LLM), jako jsou OpenAI a Anthropic, v rámci organizace. Model Databricks, který slouží jako poskytovatel, můžete použít také k poskytování vlastních modelů, které nabízejí omezení rychlosti pro tyto koncové body. V rámci této podpory nabízí služba Model Serving rozhraní vysoké úrovně, které zjednodušuje interakci s těmito službami tím, že poskytuje jednotný koncový bod pro zpracování konkrétních požadavků souvisejících s LLM.

Kromě toho podpora Azure Databricks pro externí modely poskytuje centralizovanou správu přihlašovacích údajů. Uložením klíčů rozhraní API do jednoho zabezpečeného umístění můžou organizace zlepšit stav zabezpečení minimalizací vystavení citlivých klíčů rozhraní API v celém systému. Pomáhá také zabránit zveřejnění těchto klíčů v kódu nebo vyžadovat, aby koncoví uživatelé mohli bezpečně spravovat klíče.

Viz kurz: Vytvoření koncových bodů externího modelu pro dotazování modelů OpenAI pro podrobné pokyny k vytvoření koncového bodu externího modelu a dotazování podporovaných modelů obsluhovaných těmito koncovými body pomocí sady SDK pro nasazení MLflow. Pokyny k používání uživatelského rozhraní obsluhy a rozhraní REST API najdete v následujících příručkách:

Požadavky

  • Klíč rozhraní API pro zprostředkovatele modelu.
  • Pracovní prostor Databricks v podporovaných oblastech externích modelů

Poskytovatelé modelů

Externí modely ve službě Model Serving jsou navržené tak, aby podporovaly různé poskytovatele modelů. Poskytovatel představuje zdroj modelů strojového učení, jako jsou OpenAI, Anthropic atd. Každý poskytovatel má své specifické vlastnosti a konfigurace, které jsou zapouzdřeny v external_model poli konfigurace koncového bodu externího modelu.

Podporují se následující poskytovatelé:

Pokud chcete požádat o podporu poskytovatele, který tu není uvedený, obraťte se na svůj tým účtů Databricks.

Podporované modely

Model, který zvolíte, přímo ovlivňuje výsledky odpovědí, které získáte z volání rozhraní API. Proto zvolte model, který vyhovuje vašim požadavkům na případ použití. Například pro generování konverzačních odpovědí můžete zvolit model chatu. Naopak pro generování vkládání textu můžete zvolit model vkládání.

Následující tabulka obsahuje seznam podporovaných modelů a odpovídajících typů koncových bodů, které nejsou vyčerpávající. Přidružení modelů uvedená níže se dají použít jako užitečný průvodce při konfiguraci koncového bodu pro všechny nově vydané typy modelů, jakmile budou dostupné u daného poskytovatele. Zákazníci zodpovídají za zajištění dodržování předpisů s příslušnými licencemi modelu.

Poznámka:

Díky rychlému vývoji LLM není zaručeno, že je tento seznam neustále aktuální.

Zprostředkovatel modelů llm/v1/completions llm/v1/chat llm/v1/embeddings
OpenAI** * gpt-3.5-turbo-instruct
* babbage-002
* davinci-002
* gpt-3.5-turbo
* gpt-4
* gpt-3.5-turbo-0125
* gpt-3.5-turbo-1106
* gpt-4-0125-preview
* gpt-4-turbo-preview
* gpt-4-1106-preview
* gpt-4-vision-preview
* gpt-4-1106-vision-preview
* text-embedding-ada-002
* text-embedding-3-large
* text-embedding-3-small
Azure OpenAI** * text-davinci-003
* gpt-35-turbo-instruct
* gpt-35-turbo
* gpt-35-turbo-16k
* gpt-4
* gpt-4-32k
* text-embedding-ada-002
* text-embedding-3-large
* text-embedding-3-small
Anthropic * claude-1
* claude-1.3-100k
* claude-2
* claude-2.1
* claude-2.0
* claude-instant-1.2
* claude-3-opus-20240229
* claude-3-sonnet-20240229
* claude-2.1
* claude-2.0
* claude-instant-1.2
Cohere** *Příkaz
* command-light-nightly
* command-light
* příkaz-noční
* embed-english-v2.0
* embed-multilingual-v2.0
* embed-english-light-v2.0
* embed-english-v3.0
* embed-english-light-v3.0
* embed-multilingual-v3.0
* embed-multilingual-light-v3.0
Obsluha modelu Databricks Koncový bod obsluhy Databricks Koncový bod obsluhy Databricks Koncový bod obsluhy Databricks
Amazon Bedrock Anthropic:

* claude-instant-v1
* claude-v1
* claude-v2

Cohere:

* command-text-v14
* command-text-v14:7:4k
* command-light-text-v14
* command-light-text-v14:7:4k

Testovací prostředí AI21:

* j2-grande-instruct
* j2-jumbo-instruct
* j2-mid
* j2-mid-v1
* j2-ultra j2-ultra-v1
Anthropic:

* claude-instant-v1:2:100k
* claude-v2
* claude-v2:0:18k
* claude-v2:0:100k
* claude-v2:1
* claude-v2:1:18k
* claude-v2:1:200k
* claude-3-sonnet-20240229-v1:0
Amazon:

* titan-embed-text-v1
* titan-embed-g1-text-02
* titan-embed-text-v1:2:8k
Cvičení AI21† * j2-mid
* j2-light
* j2-ultra
Vrchol Google Cloud AI text-bison * chat-bison
* gemini-pro
textembedding-gecko

** Poskytovatel modelů podporuje jemně vyladěné dokončování a chatovací modely. Pokud chcete dotazovat jemně vyladěný model, vyplňte name pole external model konfigurace názvem jemně vyladěného modelu.

† Poskytovatel modelu podporuje vlastní modely dokončování.

Použití modelů obsluhujících koncové body Služby modelů Databricks

Koncové body služby Databricks Model Obsluhující jako poskytovatele jsou podporované pro llm/v1/completionsllm/v1/chattypy koncových bodů a , a llm/v1/embeddings to. Tyto koncové body musí přijmout standardní parametry dotazu označené jako povinné, zatímco jiné parametry se můžou ignorovat v závislosti na tom, jestli je koncový bod služby Databricks Model Serving podporuje.

Standardní parametry dotazu najdete v tématu POST /serving-endpoints/{name}/invocations v referenčních informacích k rozhraní API.

Tyto koncové body musí vytvářet odpovědi v následujícím formátu OpenAI.

Úkoly dokončení:

{
"id": "123", # Not Required
"model": "test_databricks_model",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

Pro úkoly chatu:

{
  "id": "123", # Not Required
  "model": "test_chat_model",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "finish_reason": "stop"
  },
  {
    "index": 1,
    "message": {
      "role": "human",
      "content": "\n\nWhat is the weather in San Francisco?",
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Úlohy vkládání:

{
  "data": [
    {
      "embedding": [
       0.0023064255,
        -0.009327292,
        .... # (1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    },
    {
      "embedding": [
        0.0023064255,
        -0.009327292,
        .... #(1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    }
  ],
  "model": "test_embedding_model",
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Konfigurace koncového bodu

Pokud chcete obsluhovat a dotazovat externí modely, musíte nakonfigurovat koncový bod obsluhy. Viz Vytvoření vlastních modelů obsluhujících koncové body.

Pro externí model obsluhující koncový bod musíte zahrnout external_model pole a jeho parametry v served_entities části konfigurace koncového bodu.

Pole external_model definuje model, do kterého tento koncový bod předává požadavky. Při zadávání modelu je důležité, aby poskytovatel podporoval požadovaný model. Například jako poskytovatel podporuje modely, openai jako text-embedding-ada-002je , ale jiní poskytovatelé nemusí. Pokud zprostředkovatel model nepodporuje, vrátí Databricks chybu HTTP 4xx při pokusu o směrování požadavků na tento model.

Následující tabulka shrnuje external_model parametry pole. Parametry konfigurace koncového bodu najdete v tématu POST /api/2.0/serving-endpoints .

Parametr Popisy
name Název modelu, který se má použít. Například gpt-3.5-turbo pro model OpenAI GPT-3.5-Turbo .
provider Určuje název zprostředkovatele pro tento model. Tato hodnota řetězce musí odpovídat podporovanému externímu poskytovateli modelu. Například openai pro modely OpenAI GPT-3.5 .
task Úkol odpovídá typu interakce jazykového modelu, kterou si přejete. Podporované úkoly jsou llm/v1/completions, llm/v1/chat, llm/v1/embeddings.
<provider>_config Obsahuje všechny další podrobnosti konfigurace potřebné pro model. To zahrnuje zadání základní adresy URL rozhraní API a klíče rozhraní API. Viz Konfigurace zprostředkovatele pro koncový bod.

Následuje příklad vytvoření koncového bodu externího modelu pomocí create_endpoint() rozhraní API. V tomto příkladu se požadavek odeslaný do koncového bodu dokončení předá claude-2 do modelu, který anthropicposkytuje .

import mlflow.deployments

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

client.create_endpoint(
    name="anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "claude-2",
                    "provider": "anthropic",
                    "task": "llm/v1/completions",
                    "anthropic_config": {
                        "anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
                    }
                }
            }
        ]
    }
)

Konfigurace zprostředkovatele pro koncový bod

Při vytváření koncového bodu musíte zadat požadované konfigurace pro zadaného poskytovatele modelu. Následující části shrnují dostupné parametry konfigurace koncového bodu pro každého zprostředkovatele modelu.

OpenAI

Parametr konfigurace Popis Požaduje se Výchozí
openai_api_key Klíč rozhraní API pro službu OpenAI. Ano
openai_api_type Volitelné pole pro zadání typu rozhraní OpenAI API, které se má použít. No
openai_api_base Základní adresa URL rozhraní OpenAI API. No https://api.openai.com/v1
openai_api_version Volitelné pole pro zadání verze rozhraní API OpenAI. No
openai_organization Volitelné pole pro zadání organizace v OpenAI. No

Cohere

Parametr konfigurace Popis Požaduje se Výchozí
cohere_api_key Klíč rozhraní API pro službu Cohere. Ano

Anthropic

Parametr konfigurace Popis Požaduje se Výchozí
anthropic_api_key Klíč rozhraní API pro službu Anthropic. Ano

Azure OpenAI

Azure OpenAI má v porovnání s přímou službou OpenAI jedinečné funkce. Přehled najdete v dokumentaci k porovnání.

Parametr konfigurace Popis Požaduje se Výchozí
openai_api_key Klíč rozhraní API pro službu Azure OpenAI. Ano
openai_api_type Upravte tento parametr tak, aby představoval upřednostňovaný ověřovací protokol přístupu zabezpečení. Pro ověření přístupového tokenu použijte azure. Pro ověřování pomocí Azure Active Directory (Azure AD) použijte azuread. Ano
openai_api_base Základní adresa URL služby Azure OpenAI API, kterou poskytuje Azure. Ano
openai_api_version Verze služby Azure OpenAI, která se má využít, určená datem. Ano
openai_deployment_name Název prostředku nasazení pro službu Azure OpenAI. Ano
openai_organization Volitelné pole pro zadání organizace v OpenAI. No

Následující příklad ukazuje, jak vytvořit koncový bod pomocí Azure OpenAI:

client.create_endpoint(
    name="openai-chat-endpoint",
    config={
        "served_entities": [{
            "external_model": {
                "name": "gpt-3.5-turbo",
                "provider": "openai",
                "task": "llm/v1/chat",
                "openai_config": {
                    "openai_api_type": "azure",
                    "openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}",
                    "openai_api_base": "https://my-azure-openai-endpoint.openai.azure.com",
                    "openai_deployment_name": "my-gpt-35-turbo-deployment",
                    "openai_api_version": "2023-05-15"
                }
            }
        }]
    }
)

Vrchol Google Cloud AI

Parametr konfigurace Popis Požaduje se Výchozí
private_key Toto je privátní klíč pro účet služby, který má přístup ke službě Google Cloud Vertex AI. Přečtěte si osvědčené postupy pro správu klíčů účtu služby. Ano
region Jedná se o oblast pro službu Google Cloud Vertex AI. Další podrobnosti najdete v podporovaných oblastech . Některé modely jsou dostupné jenom v konkrétních oblastech. Ano
project_id Toto je ID projektu Google Cloud, ke kterému je účet služby přidružený. Ano

Amazon Bedrock

Pokud chcete jako externího poskytovatele modelů použít Amazon Bedrock, musí zákazníci zajistit, aby byl v zadané oblasti AWS povolený bedrock a zadaný pár klíčů AWS má příslušná oprávnění pro interakci se službami Bedrock. Další informace najdete v tématu AWS Identity and Access Management.

Parametr konfigurace Popis Požaduje se Výchozí
aws_region Oblast AWS, která se má použít. Bedrock tam musí být povolen. Ano
aws_access_key_id ID přístupového klíče AWS s oprávněními pro interakci se službami Bedrock. Ano
aws_secret_access_key Tajný přístupový klíč AWS spárovaný s ID přístupového klíče s oprávněními pro interakci se službami Bedrock. Ano
bedrock_provider Základní poskytovatel v Amazon Bedrocku. Mezi podporované hodnoty (nerozlišující malá a velká písmena) patří: Anthropic, Cohere, AI21Labs, Amazon Ano

Následující příklad ukazuje, jak vytvořit koncový bod pomocí Amazon Bedrock.

client.create_endpoint(
    name="bedrock-anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "external_model": {
                    "name": "claude-v2",
                    "provider": "amazon-bedrock",
                    "task": "llm/v1/completions",
                    "amazon_bedrock_config": {
                        "aws_region": "<YOUR_AWS_REGION>",
                        "aws_access_key_id": "{{secrets/my_amazon_bedrock_secret_scope/aws_access_key_id}}",
                        "aws_secret_access_key": "{{secrets/my_amazon_bedrock_secret_scope/aws_secret_access_key}}",
                        "bedrock_provider": "anthropic",
                    },
                }
            }
        ]
    },
)

Pokud dojde k problémům s oprávněními AWS, databricks doporučuje ověřit přihlašovací údaje přímo pomocí rozhraní Amazon Bedrock API.

Testovací prostředí AI21

Parametr konfigurace Popis Požaduje se Výchozí
ai21labs_api_key Toto je klíč rozhraní API pro službu AI21 Labs. Ano

Dotazování na koncový bod externího modelu

Po vytvoření koncového bodu externího modelu je připravený přijímat provoz od uživatelů.

Žádosti o bodování můžete do koncového bodu odesílat pomocí klienta OpenAI, rozhraní REST API nebo sady SDK pro nasazení MLflow.

Následující příklad dotazuje claude-2 model dokončení hostovaný Anthropic pomocí klienta OpenAI. Pokud chcete použít klienta OpenAI, vyplňte model pole názvem koncového bodu obsluhujícího model, který je hostitelem modelu, který chcete dotazovat.

Tento příklad používá dříve vytvořený koncový bod nakonfigurovaný anthropic-completions-endpointpro přístup k externím modelům od poskytovatele modelu Anthropic. Podívejte se, jak vytvořit koncové body externího modelu.

Další modely, které můžete dotazovat a jejich poskytovatele, najdete v podporovaných modelech .

import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

completion = client.completions.create(
  model="anthropic-completions-endpoint",
  prompt="what is databricks",
  temperature=1.0
)
print(completion)

Očekávaný formát výstupní odpovědi:

{
"id": "123", # Not Required
"model": "anthropic-completions-endpoint",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

Další parametry dotazu

V rámci dotazu můžete předat jakékoli další parametry podporované poskytovatelem koncového bodu.

Příklad:

  • logit_bias (podporuje OpenAI, Cohere).
  • top_k (podporuje Anthropic, Cohere).
  • frequency_penalty (podporuje OpenAI, Cohere).
  • presence_penalty (podporuje OpenAI, Cohere).
  • stream (podporuje OpenAI, Anthropic, Cohere, Amazon Bedrock for Anthropic). Tato možnost je dostupná jenom pro žádosti o chat a dokončení.

Omezení

V závislosti na zvoleném externím modelu může vaše konfigurace způsobit zpracování dat mimo oblast, odkud vaše data pocházejí.

Viz Omezení a oblasti služby Model Serving.

Další materiály