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_scope
majd 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-instruct
szá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-instruct
haszná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
}
]