Külső modellek a Databricks-modellkiszolgálóban

Fontos

A cikkben szereplő kód példák a nyilvános előzetes verziójú MLflow deployments CRUD API használatát mutatják be.

Ez a cikk a Databricks modellkiszolgáló külső modelljeit ismerteti, beleértve a támogatott modellszolgáltatókat és korlátozásokat.

Mik azok a külső modellek?

A külső modellek a Databricksen kívül üzemeltetett külső modellek. A Model Serving által támogatott külső modellek lehetővé teszik a különböző nagy nyelvi modellek (LLM) szolgáltatók, például az OpenAI és az antropikus használatának és felügyeletének egyszerűsítését egy szervezeten belül. A Databricks Model Serve szolgáltatóként is használható egyéni modellek kiszolgálására, amelyek sebességkorlátokat kínálnak ezekre a végpontokra. Ennek a támogatásnak a részeként a Modellszolgáltatás egy magas szintű felületet kínál, amely leegyszerűsíti a szolgáltatásokkal való interakciót azáltal, hogy egységes végpontot biztosít az adott LLM-hez kapcsolódó kérések kezeléséhez.

Emellett a külső modellek Azure Databricks-támogatása központosított hitelesítő adatok kezelését is biztosítja. Az API-kulcsok biztonságos helyen való tárolásával a szervezetek növelhetik a biztonsági helyzetüket azáltal, hogy minimalizálják a rendszer bizalmas API-kulcsainak kitettségét. Emellett segít megelőzni ezeknek a kulcsoknak a kódban való felfedését, vagy azt, hogy a végfelhasználók biztonságosan kezeljék a kulcsokat.

Tekintse meg az oktatóanyagot: Külső modellvégpontok létrehozása OpenAI-modellek lekérdezéséhez részletes útmutatást nyújt a külső modellvégpontok létrehozásához és a végpontok által az MLflow Deployments SDK használatával kiszolgált támogatott modellek lekérdezéséhez. A kiszolgáló felhasználói felület és a REST API használatára vonatkozó útmutatásért tekintse meg az alábbi útmutatókat:

Követelmények

Modellszolgáltatók

A Modellkiszolgáló külső modelljei számos modellszolgáltatót támogatnak. A szolgáltató képviseli a gépi tanulási modellek forrását, például az OpenAI-t, az antropikust stb. Minden szolgáltató rendelkezik a külső modell végpontkonfigurációjának mezőjébe ágyazott external_model sajátos tulajdonságokkal és konfigurációkkal.

A következő szolgáltatók támogatottak:

  • openai: Az OpenAI által kínált modellekhez, valamint az Azure OpenAI és az Azure OpenAI azure-integrációihoz az AAD-vel.
  • antropikus: Az antropikus által kínált modellekhez.
  • cohere: A Cohere által kínált modellekhez.
  • amazon-bedrock: Az Amazon Bedrock által kínált modellekhez.
  • ai21labs: Az AI21Labs által kínált modellekhez.
  • google-cloud-vertex-ai: A Google Cloud Vertex AI által kínált modellekhez.
  • databricks-model-service: Kompatibilis sémákkal rendelkező Databricks-modell végpontjaihoz. Lásd: Végpontkonfiguráció.

Ha támogatást szeretne kérni az itt nem szereplő szolgáltatóhoz, forduljon a Databricks-fiók csapatához.

Támogatott modellek

A választott modell közvetlenül befolyásolja az API-hívásokból kapott válaszok eredményeit. Ezért válasszon egy olyan modellt, amely megfelel a használati eset követelményeinek. A beszélgetési válaszok létrehozásához például kiválaszthatja a csevegési modellt. Ezzel szemben a szövegbeágyazások létrehozásához kiválaszthatja a beágyazási modellt.

Az alábbi táblázat a támogatott modellek és a kapcsolódó végponttípusok nem teljes listáját mutatja be. Az alább felsorolt modelltársítások hasznos útmutatóként használhatók az újonnan kiadott modelltípusok végpontjának konfigurálásához, amint elérhetővé válnak egy adott szolgáltatónál. Az ügyfelek felelősek az alkalmazandó modelllicencek megfelelőségének biztosításáért.

Feljegyzés

Az LLM-ek gyors fejlődésével nincs garancia arra, hogy ez a lista mindig naprakész.

Modellszolgáltató llm/v1/completions llm/v1/chat llm/v1/beágyazások
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** *Parancs
* parancs-light-nightly
* parancs-light
* parancs-éjszakai
* beágyazás-angol-v2.0
* beágyazás-többnyelvű-v2.0
* embed-english-light-v2.0
* beágyazás-angol-v3.0
* embed-english-light-v3.0
* beágyazás-többnyelvű-v3.0
* beágyazás-többnyelvű-light-v3.0
Databricks-modell kiszolgálása Végpontot kiszolgáló Databricks Végpontot kiszolgáló Databricks Végpontot kiszolgáló Databricks
Amazon Bedrock Antropikus:

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

Közösen:

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

AI21 Labs:

* j2-grande-instruct
* j2-jumbo-utasítás
* j2-mid
* j2-mid-v1
* j2-ultra j2-ultra-v1
Antropikus:

* 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
AI21 Labs† * j2-mid
* j2-light
* j2-ultra
Google Cloud Vertex AI text-bison * chat-bölény
* gemini-pro
textembedding-gecko

** A modellszolgáltató támogatja a finomhangolt befejezési és csevegési modelleket. Egy finomhangolt modell lekérdezéséhez töltse ki a nameexternal model konfiguráció mezőjét a finomhangolt modell nevével.

† modellszolgáltató támogatja az egyéni befejezési modelleket.

Databricks-modellkiszolgáló végpontokon kiszolgált modellek használata

A Databricks-modell a végpontokat szolgáltatóként szolgálja ki, és llm/v1/embeddings a llm/v1/completionsvégponttípusok llm/v1/chatis támogatottak. Ezeknek a végpontoknak el kell fogadniuk a kötelezőként megjelölt szabványos lekérdezési paramétereket, míg más paraméterek figyelmen kívül hagyhatók attól függően, hogy a Databricks modellszolgáltatás végpontja támogatja-e őket.

A szabványos lekérdezési paramétereket az API-referencia post /serving-endpoints/{name}/invocations című témakörében tekintheti meg.

Ezeknek a végpontoknak a következő OpenAI formátumban kell válaszokat előállítaniuk.

Befejezési feladatok esetén:

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

Csevegési feladatok esetén:

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

Beágyazási feladatok eseté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
  }
}

Végpontkonfiguráció

Külső modellek kiszolgálásához és lekérdezéséhez konfigurálnia kell egy kiszolgálóvégpontot. Lásd: Végpontokat kiszolgáló egyéni modell létrehozása

A végpontot kiszolgáló külső modell esetében a végpontkonfiguráció szakaszában meg kell adnia a external_model mezőt és annak served_entities paramétereit.

A external_model mező határozza meg azt a modellt, amelyre a végpont továbbítja a kéréseket. A modell megadásakor kritikus fontosságú, hogy a szolgáltató támogatja a kért modellt. Például, openai mivel a szolgáltató támogatja az olyan modelleket, mint text-embedding-ada-002a , de más szolgáltatók nem. Ha a modellt a szolgáltató nem támogatja, a Databricks HTTP 4xx-es hibát ad vissza a kérések adott modellhez való átirányításakor.

Az alábbi táblázat összefoglalja a external_model mezőparamétereket. A végpontkonfigurációs paraméterekről lásd: POST /api/2.0/serving-endpoints.

Paraméter Leírások
name A használni kívánt modell neve. Például az gpt-3.5-turbo OpenAI GPT-3.5-Turbo modelljéhez.
provider Megadja a modell szolgáltatójának nevét. Ennek a sztringértéknek egy támogatott külső modellszolgáltatónak kell lennie. Például az openai OpenAI modelljeihez GPT-3.5 .
task A feladat megfelel a kívánt nyelvmodell-interakció típusának. A támogatott tevékenységek a következők: "llm/v1/completions", "llm/v1/chat", "llm/v1/embeddings".
<provider>_config A modellhez szükséges további konfigurációs adatokat tartalmazza. Ez magában foglalja az API-alap URL-címének és az API-kulcsnak a megadását. Lásd: A szolgáltató konfigurálása végponthoz.

Az alábbi példa egy külső modellvégpont API-val történő létrehozására create_endpoint() mutat be példát. Ebben a példában a rendszer a befejezési végpontnak küldött kérést továbbítja a claude-2 megadott modellnek anthropic.

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

A szolgáltató konfigurálása végponthoz

Végpont létrehozásakor meg kell adnia a megadott modellszolgáltatóhoz szükséges konfigurációkat. Az alábbi szakaszok összefoglalják az egyes modellszolgáltatókhoz elérhető végpontkonfigurációs paramétereket.

OpenAI

Konfigurációs paraméter Leírás Kötelező Alapértelmezett
openai_api_key Az OpenAI szolgáltatás API-kulcsa. Igen
openai_api_type Nem kötelező mező a használni kívánt OpenAI API típusának megadásához. Nem
openai_api_base Az OpenAI API alap URL-címe. Nem https://api.openai.com/v1
openai_api_version Nem kötelező mező az OpenAI API-verzió megadásához. Nem
openai_organization Nem kötelező mező a szervezet OpenAI-ban való megadásához. Nem

Összetartó

Konfigurációs paraméter Leírás Kötelező Alapértelmezett
cohere_api_key A Cohere szolgáltatás API-kulcsa. Igen

Anthropic

Konfigurációs paraméter Leírás Kötelező Alapértelmezett
anthropic_api_key Az antropikus szolgáltatás API-kulcsa. Igen

Azure OpenAI

Az Azure OpenAI a közvetlen OpenAI szolgáltatáshoz képest eltérő funkciókkal rendelkezik. Áttekintésért tekintse meg az összehasonlító dokumentációt.

Konfigurációs paraméter Leírás Kötelező Alapértelmezett
openai_api_key Az Azure OpenAI szolgáltatás API-kulcsa. Igen
openai_api_type Módosítsa ezt a paramétert az előnyben részesített biztonsági hozzáférés érvényesítési protokolljának megfelelően. A hozzáférési jogkivonat érvényesítéséhez használja a következőt azure: . Az Azure Active Directory (Azure AD) használatával történő hitelesítéshez használja a azureadkövetkezőt: . Igen
openai_api_base Az Azure által biztosított Azure OpenAI API szolgáltatás alap URL-címe. Igen
openai_api_version Az Azure OpenAI szolgáltatás kihasználandó verziója, dátum szerint megadva. Igen
openai_deployment_name Az Azure OpenAI szolgáltatás üzembehelyezési erőforrásának neve. Igen
openai_organization Nem kötelező mező a szervezet OpenAI-ban való megadásához. Nem

Az alábbi példa bemutatja, hogyan hozhat létre végpontot az Azure OpenAI-val:

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

Google Cloud Vertex AI

Konfigurációs paraméter Leírás Kötelező Alapértelmezett
private_key Ez annak a szolgáltatásfióknak a titkos kulcsa, amely hozzáfér a Google Cloud Vertex AI szolgáltatáshoz. Tekintse meg a szolgáltatásfiókkulcsok kezelésének ajánlott eljárásait. Igen
region Ez a Google Cloud Vertex AI szolgáltatás régiója. További részletekért tekintse meg a támogatott régiókat . Egyes modellek csak bizonyos régiókban érhetők el. Igen
project_id Ez a Google Cloud-projektazonosító, amelyhez a szolgáltatásfiók társítva van. Igen

Amazon Bedrock

Az Amazon Bedrock külső modellszolgáltatóként való használatához az ügyfeleknek meg kell győződni arról, hogy a Bedrock engedélyezve van a megadott AWS-régióban, és a megadott AWS-kulcspár megfelelő engedélyekkel rendelkezik a Bedrock-szolgáltatások használatához. További információ: AWS Identity and Access Management.

Konfigurációs paraméter Leírás Kötelező Alapértelmezett
aws_region A használni kívánt AWS-régió. A bedrockot ott kell engedélyezni. Igen
aws_access_key_id Az AWS hozzáférési kulcsazonosítója a Bedrock-szolgáltatások használatához szükséges engedélyekkel. Igen
aws_secret_access_key A hozzáférési kulcs azonosítójával párosított AWS titkos hozzáférési kulcs, amely a Bedrock-szolgáltatásokkal való interakcióra vonatkozó engedélyekkel rendelkezik. Igen
bedrock_provider Az Amazon Bedrock mögöttes szolgáltatója. Támogatott értékek (a kis- és nagybetűk nem érzékenyek) közé tartoznak: Antropikus, Cohere, AI21Labs, Amazon Igen

Az alábbi példa bemutatja, hogyan hozhat létre végpontot az Amazon Bedrock használatával.

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

Ha AWS-engedélyekkel kapcsolatos problémák merülnek fel, a Databricks azt javasolja, hogy közvetlenül az Amazon Bedrock API-val ellenőrizze a hitelesítő adatokat.

AI21 Labs

Konfigurációs paraméter Leírás Kötelező Alapértelmezett
ai21labs_api_key Ez az AI21 Labs szolgáltatás API-kulcsa. Igen

Külső modellvégpont lekérdezése

Miután létrehozott egy külső modellvégpontot, készen áll a felhasználóktól érkező forgalom fogadására.

Pontozási kéréseket küldhet a végpontnak az OpenAI-ügyfél, a REST API vagy az MLflow Deployments SDK használatával.

Az alábbi példa lekérdezi az claude-2 Anthropic által üzemeltetett befejezési modellt az OpenAI-ügyfél használatával. Az OpenAI-ügyfél használatához töltse ki a model mezőt a lekérdezni kívánt modellt futtató végpontot kiszolgáló modell nevével.

Ez a példa egy korábban létrehozott végpontot használ, anthropic-completions-endpointamely az antropikus modellszolgáltatótól származó külső modellek eléréséhez van konfigurálva. Tekintse meg, hogyan hozhat létre külső modellvégpontokat.

További lekérdezhető modellek és azok szolgáltatóinak támogatott modelljei .

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)

Várt kimeneti válaszformátum:

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

További lekérdezési paraméterek

A lekérdezés részeként átadhat minden további paramétert, amelyet a végpont szolgáltatója támogat.

Példa:

  • logit_bias (az OpenAI és a Cohere támogatja).
  • top_k (támogatja az antropikus, Cohere).
  • frequency_penalty (az OpenAI és a Cohere támogatja).
  • presence_penalty (az OpenAI és a Cohere támogatja).
  • stream (támogatja: OpenAI, Anthropic, Cohere, Amazon Bedrock for Anthropic). Ez csak csevegési és befejezési kérelmek esetén érhető el.

Korlátozások

A választott külső modelltől függően előfordulhat, hogy a konfiguráció miatt az adatok feldolgozása azon a régión kívül történik, ahonnan az adatok származnak.

Lásd: Modellmegjelenítési korlátok és régiók.

További erőforrások