Mosaic AI Model Serving での外部モデル
[アーティクル] 2025/02/07
2 人の共同作成者
フィードバック
この記事の内容
外部モデルとは
要件
モデル プロバイダー
サポートされているモデル
エンドポイントの構成
エンドポイントのプロバイダーを構成する
エンドポイントでの AI Gateway の構成
外部モデル エンドポイントにクエリを実行する
外部モデルのネットワーク接続構成のサポート
制限事項
その他のリソース
さらに 7 個を表示
重要
この記事のコード例では、パブリック プレビュー の MLflow Deployments CRUD API の使用方法を示します。
この記事では、Mosaic AI Model Serving での外部モデルについて説明します。これには、サポートされているモデル プロバイダーと制限事項が含まれます。
重要
外部モデルを提供するモデル サービング エンドポイントで Mosaic AI Gateway を設定できるようになりました。 AI Gateway は、これらのモデル サービング エンドポイントに、ガバナンス、監視、および本番環境の準備機能を提供します。 「Mosaic AI Gateway 」を参照してください。
外部モデルは、Databricks の外部でホストされているサードパーティ モデルです。 Model Serving でサポートされている外部モデルを使用すると、組織内のさまざまな大規模言語モデル (LLM) プロバイダー (OpenAI や Anthropic など) の使用と管理を効率化できます。 プロバイダーとして Mosaic AI Model Serving を使ってカスタム モデルを提供することもでき、これによりそれらのエンドポイントにレート制限が提供されます。 このサポートの一環として、Model Serving では、特定の LLM 関連の要求を処理する統合エンドポイントを提供することで、これらのサービスとの対話を簡略化する高度なインターフェイスが提供されます。
さらに、外部モデルに対する Azure Databricks のサポートにより、一元的な資格情報管理が提供されます。 API キーを 1 つの安全な場所に格納することで、組織はシステム全体で機密性の高い API キーの公開を最小限に抑えることで、セキュリティ体制を強化できます。 また、コード内でこれらのキーを公開したり、エンド ユーザーにキーの安全な管理を要求したりするのを防ぐのにも役立ちます。
MLflow Deployments SDK を使用した外部モデル エンドポイントの作成と、それらのエンドポイントによって提供されるサポート対象モデルへのクエリ実行に関するステップ バイ ステップのガイダンスについては、「チュートリアル: 外部モデル エンドポイントを作成して OpenAI モデルにクエリを実行する 」をご参照ください。 Serving UI と REST API の使用方法の手順については、次のガイドをご参照ください。
Model Serving の外部モデルは、さまざまなモデル プロバイダーをサポートするように設計されています。 プロバイダーは、OpenAI、Anthropic などの機械学習モデルのソースを表します。 各プロバイダーには、external_model
の フィールド内にカプセル化された特定の特性と構成があります。
次のプロバイダーがサポートされています。
openai : OpenAI および Azure OpenAI と Azure OpenAI と AAD の Azure 統合によって提供されるモデルの場合。
anthropic : Anthropic によって提供されるモデルの場合。
cohere : Cohere によって提供されるモデルの場合。
amazon-bedrock : Amazon Bedrock によって提供されるモデルの場合。
google-cloud-vertex-ai : Google Cloud Vertex AI によって提供されるモデルの場合。
databricks-model-serving : 互換性のあるスキーマを使う Mosaic AI Model Serving エンドポイントの場合。 「エンドポイントの構成 」を参照してください。
ここに一覧表示されていないプロバイダーのサポートを要求する場合は、Databricks アカウント チームにお問い合わせください。
選択したモデルは、API 呼び出しから取得した応答の結果に直接影響します。 そのため、ユース ケースの要件に合ったモデルを選択します。 たとえば、会話型の応答を生成する場合、チャット モデルを選択できます。 逆に、テキストの埋め込みを生成する場合は、埋め込みモデルを選択できます。
のサポートモデル を参照してください。
Mosaic AI Model Serving エンドポイントで提供されるモデルを使用する
プロバイダーとしての Mosaic AI Model Serving エンドポイント は、llm/v1/completions
、llm/v1/chat
、llm/v1/embeddings
の各エンドポイントの種類でサポートされています。 これらのエンドポイントは、必須としてマークされている標準クエリ パラメーターを受け入れる必要があります。一方、他のパラメーターは、Mosaic AI Model Serving エンドポイントでサポートされているかどうかに応じて、無視される場合があります。
標準クエリ パラメーターについては、API リファレンスの POST /serving-endpoints/{name}/invocations を参照してください。
これらのエンドポイントは、次の OpenAI 形式で応答を生成する必要があります。
入力候補タスクの場合:
{
"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
}
}
チャット タスクの場合:
{
"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
}
}
埋め込みタスクの場合:
{
"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
}
}
外部モデルを提供してクエリを実行するには、サービス エンドポイントを構成する必要があります。 「外部モデル提供エンドポイントを作成する 」を参照してください
外部 Model Serving エンドポイントの場合は、external_model
フィールドとそのパラメーターを、エンドポイント構成の served_entities
セクションに含める必要があります。 Serving エンドポイントで複数の外部モデルを構成する 場合は、traffic_config
を指定して、各外部モデルのトラフィック ルーティングの割合を定義する必要があります。
external_model
フィールドには、このエンドポイントからの要求の転送先となるモデルが定義されます。 モデルを指定する場合、要求するモデルがプロバイダーによってサポートされていることが重要です。 たとえば、プロバイダーとしての openai
では text-embedding-ada-002
などのモデルがサポートされますが、他のプロバイダーではサポートされない場合があります。 モデルがプロバイダーによってサポートされていない場合、そのモデルに要求をルーティングしようとすると、Databricks から HTTP 4xx エラーが返されます。
次の表は、external_model
フィールド パラメーターをまとめたものです。 エンドポイントの構成パラメーターについては、POST /api/2.0/serving-endpoints を参照してください。
テーブルを展開する
パラメーター
説明
name
使用するモデルの名前。 たとえば、OpenAI の gpt-3.5-turbo
モデルの場合は GPT-3.5-Turbo
です。
provider
このモデルのプロバイダーの名前が指定されます。 この文字列値は、サポートされている外部モデル プロバイダー に対応している必要があります。 たとえば、OpenAI の openai
モデルの場合は GPT-3.5
です。
task
タスクは、必要な言語モデルの対話の種類に対応します。 サポートされているタスクは、"llm/v1/completions"、"llm/v1/chat"、"llm/v1/embeddings" です。
<provider>_config
モデルに必要な追加の構成の詳細が含まれています。 これには、API ベース URL と API キーの指定が含まれます。 「エンドポイントのプロバイダーを構成する 」を参照してください。
create_endpoint()
API を使用して外部モデル エンドポイントを作成する例を以下に示します。 この例では、入力候補エンドポイントに送信された要求は、claude-2
によって提供される 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}}"
}
}
}
]
}
)
エンドポイントを作成するときは、指定されたモデル プロバイダーに必要な構成を指定する必要があります。 次のセクションでは、各モデル プロバイダーで使用できるエンドポイント構成パラメーターの概要を示します。
注意
Databricks は、各モデル プロバイダー向けに指定された資格情報を暗号化し、安全に格納します。 これらの資格情報は、関連付けられているエンドポイントが削除されると自動的に削除されます。
テーブルを展開する
構成パラメーター
説明
必要
Default
openai_api_key
OpenAI サービスを使用する OpenAI API キーの Azure Databricks 秘密鍵参照。 API キーを直接貼り付ける場合は、openai_api_key_plaintext
を参照してください。
openai_api_key
または openai_api_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
openai_api_key_plaintext
OpenAI サービスを使用する OpenAI API キー。プレーンテキスト文字列として指定します。 Azure Databricks シークレットを使用してキーを参照する場合は、openai_api_key
を参照してください。
次のいずれかのフィールドを使用して API キーを指定する必要があります (openai_api_key
または openai_api_key_plaintext
を指定する必要があります)。
openai_api_type
使用する OpenAI API の種類を指定する省略可能なフィールド。
いいえ
openai
openai_api_base
OpenAI API のベース URL。
いいえ
https://api.openai.com/v1
openai_api_version
OpenAI API バージョンを指定する省略可能なフィールド。
いいえ
openai_organization
OpenAI で組織を指定する省略可能なフィールド。
いいえ
テーブルを展開する
構成パラメーター
説明
必要
Default
cohere_api_key
Cohere API キーの Azure Databricks 秘密鍵参照。 API キーを直接貼り付ける場合は、cohere_api_key_plaintext
を参照してください。
cohere_api_key
または cohere_api_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
cohere_api_key_plaintext
プレーンテキスト文字列として指定される Cohere API キー。 Azure Databricks シークレットを使用してキーを参照する場合は、cohere_api_key
を参照してください。
cohere_api_key
または cohere_api_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
cohere_api_base
Cohere サービスのベース URL。
いいえ
テーブルを展開する
構成パラメーター
説明
必要
Default
anthropic_api_key
Anthropic API キーの Azure Databricks 秘密鍵参照。 API キーを直接貼り付ける場合は、anthropic_api_key_plaintext
を参照してください。
anthropic_api_key
または anthropic_api_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
anthropic_api_key_plaintext
プレーンテキスト文字列として指定される Anthropic API キー。 Azure Databricks シークレットを使用してキーを参照する場合は、anthropic_api_key
を参照してください。
anthropic_api_key
または anthropic_api_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
Azure OpenAI には、直接の OpenAI サービスと比較して異なる機能があります。 概要については、比較に関するドキュメント を参照してください。
テーブルを展開する
構成パラメーター
説明
必要
Default
openai_api_key
Azure サービスを使用する OpenAI API キーの Azure Databricks 秘密鍵参照。 API キーを直接貼り付ける場合は、openai_api_key_plaintext
を参照してください。
openai_api_key
または openai_api_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
openai_api_key_plaintext
Azure サービスを使用する OpenAI API キー。プレーンテキスト文字列として指定します。 Azure Databricks シークレットを使用してキーを参照する場合は、openai_api_key
を参照してください。
openai_api_key
または openai_api_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
openai_api_type
アクセス トークンの検証には azure
を使用します。
はい
openai_api_base
Azure によって提供される Azure OpenAI API サービスのベース URL。
はい
openai_api_version
日付で指定された、利用する Azure OpenAI サービスのバージョン。
はい
openai_deployment_name
Azure OpenAI サービスのデプロイ リソースの名前。
はい
openai_organization
OpenAI で組織を指定する省略可能なフィールド。
いいえ
Microsoft Entra ID で Azure OpenAI を使っている場合は、エンドポイント構成で次のパラメーターを使用します。
テーブルを展開する
構成パラメーター
説明
必要
Default
microsoft_entra_tenant_id
Microsoft Entra ID 認証のテナント ID。
はい
microsoft_entra_client_id
Microsoft Entra ID 認証のクライアント ID。
はい
microsoft_entra_client_secret
Microsoft Entra ID 認証に使用されるクライアント シークレットの Azure Databricks 秘密鍵参照。 API キーを直接貼り付ける場合は、microsoft_entra_client_secret_plaintext
を参照してください。
microsoft_entra_client_secret
または microsoft_entra_client_secret_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
microsoft_entra_client_secret_plaintext
Microsoft Entra ID 認証に使用するクライアント シークレット。プレーンテキスト文字列として指定します。 Azure Databricks シークレットを使用してキーを参照する場合は、microsoft_entra_client_secret
を参照してください。
microsoft_entra_client_secret
または microsoft_entra_client_secret_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
openai_api_type
Microsoft Entra ID を使用した認証には azuread
を使用します。
はい
openai_api_base
Azure によって提供される Azure OpenAI API サービスのベース URL。
はい
openai_api_version
日付で指定された、利用する Azure OpenAI サービスのバージョン。
はい
openai_deployment_name
Azure OpenAI サービスのデプロイ リソースの名前。
はい
openai_organization
OpenAI で組織を指定する省略可能なフィールド。
いいえ
次の例では、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"
}
}
}]
}
)
テーブルを展開する
構成パラメーター
説明
必要
Default
private_key
Google Cloud Vertex AI サービスにアクセスできるサービス アカウントの秘密キーの Azure Databricks 秘密鍵参照。 「サービス アカウント キー を管理するためのベスト プラクティス 」参照してください。 API キーを直接貼り付ける場合は、private_key_plaintext
を参照してください。
private_key
または private_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
private_key_plaintext
Google Cloud Vertex AI サービスにアクセスできるサービス アカウントの秘密キー。プレーンテキスト文字列として指定します。 「サービス アカウント キー を管理するためのベスト プラクティス 」参照してください。 Azure Databricks シークレットを使用してキーを参照する場合は、private_key
を参照してください。
private_key
または private_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
region
これは、Google Cloud Vertex AI サービスのリージョンです。 詳細については、「サポートされるリージョン 」を参照してください。 一部のモデルは、特定のリージョンでのみ使用できます。
はい
project_id
これは、サービス アカウントが関連付けられている Google Cloud プロジェクト ID です。
はい
Amazon Bedrock を外部モデル プロバイダーとして使用するには、お客様は指定された AWS リージョン内で Bedrock が有効になっており、指定された AWS キー ペアが Bedrock サービスとやり取りするのに適切なアクセス許可を持っていることを確認する必要があります。 詳細については、AWS の ID とアクセス管理 に関するページをご覧ください。
テーブルを展開する
構成パラメーター
説明
必要
Default
aws_region
使用する AWS リージョン。 Bedrock をそこで有効にする必要があります。
はい
aws_access_key_id
Bedrock サービスと対話するためのアクセス許可を持つ AWS アクセス キー ID の Azure Databricks 秘密鍵参照。 API キーを直接貼り付ける場合は、aws_access_key_id_plaintext
を参照してください。
aws_access_key_id
または aws_access_key_id_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
aws_access_key_id_plaintext
Bedrock サービスと対話するためのアクセス許可を持つ AWS アクセス キー ID。プレーンテキスト文字列として指定します。 Azure Databricks シークレットを使用してキーを参照する場合は、aws_access_key_id
を参照してください。
aws_access_key_id
または aws_access_key_id_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
aws_secret_access_key
アクセス キー ID とペアになっており、Bedrock サービスと対話するためのアクセス許可を持つ AWS シークレット アクセス キーの Azure Databricks 秘密鍵参照。 API キーを直接貼り付ける場合は、aws_secret_access_key_plaintext
を参照してください。
aws_secret_access_key
または aws_secret_access_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
aws_secret_access_key_plaintext
アクセス キー ID とペアになっており、Bedrock サービスと対話するためのアクセス許可を持つ AWS シークレット アクセス キー。プレーンテキスト文字列として指定します。 Azure Databricks シークレットを使用してキーを参照する場合は、aws_secret_access_key
を参照してください。
aws_secret_access_key
または aws_secret_access_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
bedrock_provider
Amazon Bedrock 内で基になるプロバイダー。 サポートされる値 (大文字と小文字を区別しない) には、Anthropic、Cohere、AI21Labs、Amazon などがあります
はい
次の例は、アクセス キーを使用して、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",
},
}
}
]
},
)
AWS のアクセス許可の問題がある場合、Databricks では Amazon Bedrock API を使用して資格情報を直接確認することをお勧めします。
テーブルを展開する
構成パラメーター
説明
必要
Default
ai21labs_api_key
AI21 Labs API キーの Azure Databricks 秘密鍵参照。 API キーを直接貼り付ける場合は、ai21labs_api_key_plaintext
を参照してください。
ai21labs_api_key
または ai21labs_api_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
ai21labs_api_key_plaintext
AI21 Labs API キー。プレーンテキスト文字列として指定します。 Azure Databricks シークレットを使用してキーを参照する場合は、ai21labs_api_key
を参照してください。
ai21labs_api_key
または ai21labs_api_key_plaintext
のいずれかのフィールドを使用して API キーを指定する必要があります。
レート制限、使用状況追跡、ガードレールなどの Mosaic AI Gateway 機能を有効にするようにエンドポイントを設定することもできます。
「モデル サービング エンドポイントでの AI Gateway の構成 」を参照してください。
外部モデル エンドポイントを作成すると、ユーザーからのトラフィックを受信できるようになります。
OpenAI クライアント、REST API、または MLflow Deployments SDK を使用して、エンドポイントにスコアリング要求を送信できます。
次の例では、OpenAI クライアントを使って、Anthropic によってホストされている claude-2
入力候補モデルにクエリを実行します。 OpenAI クライアントを使うには、model
フィールドに、クエリ対象のモデルをホストするモデル提供エンドポイントの名前を設定します。
この例では、Anthropic モデル プロバイダーから外部モデルにアクセスするように構成された、以前に作成したエンドポイント anthropic-completions-endpoint
を使用します。 外部モデル エンドポイントを作成する 方法を参照してください。
クエリを実行できるその他のモデルとそのプロバイダーについては、「サポートされているモデル 」を参照してください。
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)
出力応答の形式は次のようになります。
{
"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
}
}
エンドポイントのプロバイダーによってサポートされているその他のパラメーターをクエリの一部として渡すことができます。
次に例を示します。
logit_bias
(OpenAI、Cohere でサポートされています)。
top_k
(Anthropic、Cohere でサポートされています)。
frequency_penalty
(OpenAI、Cohere でサポートされています)。
presence_penalty
(OpenAI、Cohere でサポートされています)。
stream
(OpenAI、Anthropic、Cohere、Amazon Bedrock for Anthropic でサポートされています)。 これは、チャットと入力候補の要求にのみ使用できます。
tools
(OpenAI、Anthropic、Amazon Bedrock for Anthropic でサポート)。 これは、チャットと入力候補の要求にのみ使用できます。 このパラメーターを使用すると、Computer Use (beta) for Anthropic や Amazon Bedrock for Anthropic など、外部機能を統合できます。 Azure Databricks での関数呼び出し を参照してください。
Azure プライベート リンクを含む外部モデルの Network 接続構成 (NCC) のサポートは現在、 Private プレビュー 段階です。 プレビューに参加する場合は、Databricks アカウント チームにお問い合わせください。
選択した外部モデルによっては、構成により、データの発生元リージョンの外部でデータが処理される場合があります。 「モデル提供の制限とリージョン 」をご参照ください。