Megosztás a következőn keresztül:


Oktatóanyag: Külső modellvégpontok létrehozása OpenAI-modellek lekérdezéséhez

Ez a cikk részletes útmutatást nyújt egy külső modellvégpont konfigurálásához és lekérdezéséhez, amely OpenAI-modelleket szolgál ki a befejezésekhez, csevegésekhez és beágyazásokhoz az MLflow Deployments SDK használatával. További információ a külső modellekről.

Ha a feladat elvégzéséhez a Kiszolgáló felhasználói felületét szeretné használni, tekintse meg a külső modell kiszolgálóvégpontjának létrehozását.

Követelmények

  • Databricks Runtime 13.0 ML vagy újabb.
  • MLflow 2.9 vagy újabb.
  • OpenAI API-kulcsok.
  • Telepítse a Databricks CLI 0.205-ös vagy újabb verzióját.

(Nem kötelező) 0. lépés: Az OpenAI API-kulcs tárolása a Databricks Titkos kulcsok parancssori felületével

Az API-kulcsokat egyszerű szöveges sztringekként is megadhatja a 3. lépésben, vagy az Azure Databricks Titkos kulcsok használatával.

Az OpenAI API-kulcs titkos kulcsként való tárolásához használhatja a Databricks Titkos kulcsok parancssori felületét (0.205-ös vagy újabb verzió). A REST API-t titkos kódokhoz is használhatja.

Az alábbiakban létrejön a titkos kulcs neve, my_openai_secret_scopemajd a titkos kulcs openai_api_key ebben a hatókörben.

databricks secrets create-scope my_openai_secret_scope
databricks secrets put-secret my_openai_secret_scope openai_api_key

1. lépés: Az MLflow telepítése külső modellek támogatásával

Az alábbiak segítségével telepítsen egy MLflow-verziót külső modellek támogatásával:

%pip install mlflow[genai]>=2.9.0

2. lépés: Külső modellvégpont létrehozása és kezelése

Fontos

Az ebben a szakaszban szereplő kód példák a nyilvános előzetes verziójú MLflow deployments CRUD SDK használatát mutatják be.

Ha külső modellvégpontot szeretne létrehozni egy nagy nyelvi modellhez (LLM), használja az create_endpoint() MLflow Deployments SDK metódusát. Külső modellvégpontokat is létrehozhat a kiszolgáló felhasználói felületén.

Az alábbi kódrészlet létrehoz egy befejezési végpontot az OpenAI gpt-3.5-turbo-instructszámára, a served_entities konfiguráció szakaszában megadott módon. A végpont esetében mindenképpen töltse ki az name openai_api_key egyes mezők egyedi értékeit.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")
client.create_endpoint(
    name="openai-completions-endpoint",
    config={
        "served_entities": [{
            "name": "openai-completions",
            "external_model": {
                "name": "gpt-3.5-turbo-instruct",
                "provider": "openai",
                "task": "llm/v1/completions",
                "openai_config": {
                    "openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}"
                }
            }
        }]
    }
)

Az alábbi kódrészlet bemutatja, hogyan adhat meg az OpenAI API-kulcsot egyszerű szöveges sztringként, hogy alternatív módon hozza létre ugyanazt a befejezési végpontot, mint fent.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")
client.create_endpoint(
    name="openai-completions-endpoint",
    config={
        "served_entities": [{
            "name": "openai-completions",
            "external_model": {
                "name": "gpt-3.5-turbo-instruct",
                "provider": "openai",
                "task": "llm/v1/completions",
                "openai_config": {
                    "openai_api_key_plaintext": "sk-yourApiKey"
                }
            }
        }]
    }
)

Ha Azure OpenAI-t használ, a konfiguráció szakaszában megadhatja az Azure OpenAI üzembehelyezési nevét, végpont openai_config URL-címét és API-verzióját is.

client.create_endpoint(
    name="openai-completions-endpoint",
    config={
        "served_entities": [
          {
            "name": "openai-completions",
            "external_model": {
                "name": "gpt-3.5-turbo-instruct",
                "provider": "openai",
                "task": "llm/v1/completions",
                "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"
                },
            },
          }
        ],
    },
)

Egy végpont frissítéséhez használja update_endpoint()a következőt: . Az alábbi kódrészlet bemutatja, hogyan frissítheti egy végpont sebességkorlátjait percenként 20 hívásra felhasználónként.

client.update_endpoint(
    endpoint="openai-completions-endpoint",
    config={
        "rate_limits": [
            {
                "key": "user",
                "renewal_period": "minute",
                "calls": 20
            }
        ],
    },
)

3. lépés: Kérések küldése külső modellvégpontra

Fontos

Az ebben a szakaszban szereplő kód példák az MLflow Deployments SDK metódusának predict() használatát mutatják be.

Csevegési, befejezési és beágyazási kéréseket küldhet egy külső modellvégpontnak az MLflow Deployments SDK metódusával predict() .

Az alábbi kérést az gpt-3.5-turbo-instruct OpenAI üzemelteti.

completions_response = client.predict(
    endpoint="openai-completions-endpoint",
    inputs={
        "prompt": "What is the capital of France?",
        "temperature": 0.1,
        "max_tokens": 10,
        "n": 2
    }
)
completions_response == {
    "id": "cmpl-8QW0hdtUesKmhB3a1Vel6X25j2MDJ",
    "object": "text_completion",
    "created": 1701330267,
    "model": "gpt-3.5-turbo-instruct",
    "choices": [
        {
            "text": "The capital of France is Paris.",
            "index": 0,
            "finish_reason": "stop",
            "logprobs": None
        },
        {
            "text": "Paris is the capital of France",
            "index": 1,
            "finish_reason": "stop",
            "logprobs": None
        },
    ],
    "usage": {
        "prompt_tokens": 7,
        "completion_tokens": 16,
        "total_tokens": 23
    }
}

4. lépés: Egy másik szolgáltató modelljeinek összehasonlítása

A modellszolgáltatás számos külső modellszolgáltatót támogat, többek között az Open AI-t, az antropikust, a cohere-t, az Amazon Bedrockot, a Google Cloud Vertex AI-t és sok mást. Összehasonlíthatja az LLM-eket a szolgáltatók között, így optimalizálhatja az alkalmazások pontosságát, sebességét és költségeit az AI Playground használatával.

Az alábbi példa létrehoz egy végpontot az antropikus claude-2 számára, és összehasonlítja annak válaszát egy OpenAI-t gpt-3.5-turbo-instructhasználó kérdéssel. Mindkét válasz formátuma ugyanaz, ami megkönnyíti az összehasonlítást.

Végpont létrehozása antropikus claude-2 számára

import mlflow.deployments

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

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

Az egyes végpontok válaszainak összehasonlítása


openai_response = client.predict(
    endpoint="openai-completions-endpoint",
    inputs={
        "prompt": "How is Pi calculated? Be very concise."
    }
)
anthropic_response = client.predict(
    endpoint="anthropic-completions-endpoint",
    inputs={
        "prompt": "How is Pi calculated? Be very concise."
    }
)
openai_response["choices"] == [
    {
        "text": "Pi is calculated by dividing the circumference of a circle by its diameter."
                " This constant ratio of 3.14159... is then used to represent the relationship"
                " between a circle's circumference and its diameter, regardless of the size of the"
                " circle.",
        "index": 0,
        "finish_reason": "stop",
        "logprobs": None
    }
]
anthropic_response["choices"] == [
    {
        "text": "Pi is calculated by approximating the ratio of a circle's circumference to"
                " its diameter. Common approximation methods include infinite series, infinite"
                " products, and computing the perimeters of polygons with more and more sides"
                " inscribed in or around a circle.",
        "index": 0,
        "finish_reason": "stop",
        "logprobs": None
    }
]

További erőforrások

Külső modellek a Mozaik AI-modell szolgáltatásban.