Mosaic AI Model Servingの外部モデル

重要

この記事のコード例では、 パブリック プレビューの MLflow デプロイ CRUD API の使用方法を示します。

この記事では、サポートされているモデル プロバイダーや制限事項など、Mosaic AI Model Serving の外部モデルについて説明します。

外部モデルとは

重要

外部モデルを提供するモデルサービングエンドポイントで Mosaic AI Gateway を設定できるようになりました。 AI Gateway は、ガバナンス、モニタリング、および本番運用の準備をこれらのモデルサービングエンドポイントにもたらします。 「Mosaic AI ゲートウェイ」を参照してください。

外部モデルは、Databricks の外部でホストされるサードパーティ モデルです。 モデルサーバーによってサポートされている外部モデルを使用すると、組織内の OpenAI や などのさまざまな大規模言語モデル ( )LLMAnthropic プロバイダーの使用と管理を効率化できます。また、Mosaic AI Model Serving をプロバイダーとして使用してカスタム モデルを提供することもできます。これにより、これらのエンドポイントにレート制限が提供されます。 このサポートの一環として、モデルサーバーでは、特定のLLM関連の要求を処理するための統合エンドポイントを提供することで、これらのサービスとのやり取りを簡素化する高レベルのインターフェイスが提供されます。

さらに、Databricks の外部モデルのサポートにより、資格情報の一元管理が提供されます。 APIキーを1つの安全な場所に保存することで、組織はシステム全体で機密性の高いAPIキーの露出を最小限に抑え、セキュリティ体制を強化できます。 また、これらのキーがコード内で公開されるのを防ぐのにも役立ち、エンド ユーザーにキーの安全な管理を要求します。

外部モデル エンドポイントの作成に関する詳細なガイダンスと、MLflow Deployments SDK を使用してそれらのエンドポイントによって提供されるサポートされているモデルのクエリについては、「 チュートリアル: OpenAI モデルに対して外部モデル エンドポイントを作成する 」を参照してください。 Serving UI と REST API の使用方法については、次のガイドを参照してください。

要件

モデルプロバイダー

モデルサービングの外部モデルは、さまざまなモデルプロバイダーをサポートするように設計されています。 プロバイダーは、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 モデルサービング: 互換性のあるスキーマを持つMosaic AI Model Servingエンドポイント用。 「 エンドポイントの構成」を参照してください。

ここに記載されていないプロバイダーのサポートをリクエストするには、Databricks アカウント チームにお問い合わせください。

サポートされるモデル

選択したモデルは、API 呼び出しから得られる応答の結果に直接影響します。 したがって、ユースケースの要件に合ったモデルを選択してください。 たとえば、会話形式の応答を生成するには、チャット モデルを選択できます。 逆に、テキストの埋め込みを生成する場合は、埋め込みモデルを選択できます。

次の表は、サポートされているモデルと対応する エンドポイントの種類の非網羅的なリストを示しています。 以下に示すモデルの関連付けは、特定のプロバイダーで使用可能になったときに、新しくリリースされたモデルの種類のエンドポイントを構成するときに役立つガイドとして使用できます。 お客様は、該当するモデルライセンスへの準拠を確保する責任があります。

注:

LLMの急速な発展に伴い、このリストが常に最新であるという保証はありません。

モデル プロバイダー

llm/v1/completions

llm/v1/chat

llm/v1/embeddings

OpenAI** (英語)

  • gpt-3.5-turbo-instruct

  • babbage-002

  • davinci-002

  • O1-プレビュー

  • O1プレビュー-2024-09-12

  • O1-ミニ

  • O1-ミニ-2024-09-12

  • gpt-3.5-turbo

  • gpt-4

  • GPT-4Oの

  • GPT-4O-2024-05-13

  • GPT-4O-ミニ

  • gpt-3.5-turbo-0125

  • gpt-3.5-turbo-1106

  • gpt-4-0125-preview

  • gpt-4-turbo-preview

  • gpt-4-1106-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

  • GPT-4Oの

  • GPT-4O-ミニ

  • 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

  • クロード-3-5-ソネット-20240620

  • claude-3-haiku-20240307

  • claude-3-opus-20240229

  • claude-3-sonnet-20240229

  • claude-2.1

  • claude-2.0

  • claude-instant-1.2

Cohere**

  • command

  • command-light

  • コマンド+R+

  • コマンド+R

  • command

  • command-light-nightly

  • command-light

  • command-nightly

  • 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

Mosaic AI モデルサービング

Databricks サービングエンドポイント

Databricks サービングエンドポイント

Databricks サービングエンドポイント

Amazon Bedrock

Anthropic :

  • claude-instant-v1

  • claude-v2

Cohere :

  • command-text-v14

  • command-light-text-v14

AI21 Labs :

  • j2-grande-instruct

  • j2-jumbo-instruct

  • j2-mid

  • j2-mid-v1

  • j2-ultra

  • J2-ウルトラV1

Anthropic :

  • claude-v2

  • claude-v2:1

  • claude-3-sonnet-20240229-v1:0

  • クロード-3-5-ソネット-20240620-V1:0

Cohere :

  • コマンド-r-プラス-v1:0

  • コマンド-r-v1:0

Amazon :

  • titan-embed-text-v1

  • titan-embed-g1-text-02

Cohere :

  • 埋め込み-英語-v3

  • embed-multilingual-v3 (英語)

AI21 Labs†

  • j2-mid

  • j2-light

  • j2-ultra

Google Cloud Vertex AI

text-bison

  • chat-bison

  • gemini-pro

  • ジェミニ-1.0-PRO

  • ジェミニ-1.5-PRO

  • ジェミニ-1.5-フラッシュ

textembedding-gecko

** モデル プロバイダーは、ファインチューニングされた補完モデルとチャット モデルをサポートしています。 ファインチューニングされたモデルをクエリするには、external model構成の name フィールドにファインチューニングされたモデルの名前を入力します。

† モデル プロバイダーは、カスタム補完モデルをサポートしています。

Mosaic AI Model Servingエンドポイントで提供されるモデルを使用する

プロバイダーとしてのMosaic AI Model Servingエンドポイントは、 llm/v1/completionsllm/v1/chat、および llm/v1/embeddings エンドポイント タイプでサポートされています。 これらのエンドポイントは、必須としてマークされた標準クエリ 引数 を受け入れる必要がありますが、その他の 引数 はMosaic AI Model Servingエンドポイントがサポートしているかどうかに応じて無視される可能性があります。

標準クエリ パラメーターについては、 リファレンスの POST /serving-endpoints/{name}/invocations を参照してください。API

これらのエンドポイントは、次の 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
  }
}

エンドポイントの構成

外部モデルを提供し、クエリを実行するには、サービングエンドポイントを設定する必要があります。 外部モデルサーバーエンドポイントの作成を参照してください

外部モデルサービング エンドポイントの場合、エンドポイント設定の served_entities セクションに external_model フィールドとそのパラメーターを含める必要があります。サービス エンドポイントで 複数の外部モデルを設定する 場合は、各外部モデルのトラフィック ルーティングの割合を定義する traffic_config を指定する必要があります。

external_model フィールドは、このエンドポイントが要求を転送するモデルを定義します。モデルを指定するときは、要求しているモデルをプロバイダーがサポートしていることが重要です。 たとえば、プロバイダーとしての openaitext-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 の GPT-3.5 モデルの場合はopenaiです。

task

このタスクは、必要な言語モデルの対話の種類に対応しています。 サポートされているタスクは、"llm/v1/completions"、"llm/v1/chat"、"llm/v1/embeddings" です。

<provider>_config

モデルに必要な追加の構成の詳細が含まれます。 これには、API ベース URL と API キーの指定が含まれます。 「 エンドポイントのプロバイダーを構成する」を参照してください。

以下は、 create_endpoint() API を使用して外部モデルエンドポイントを作成する例です。 この例では、補完エンドポイントに送信された要求は、anthropicによって提供されるclaude-2モデルに転送されます。

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 は、各モデル プロバイダーに提供された資格情報を暗号化し、安全に保存します。 これらの資格情報は、関連付けられているエンドポイントが削除されると自動的に削除されます。

OpenAI

構成パラメーター

説明

*必須

デフォルト

openai_api_key

DatabricksOpenAIAPI サービスを使用する OpenAI キーの シークレットキー リファレンス。API キーを直接貼り付ける場合は、 openai_api_key_plaintextを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: openai_api_keyまたはopenai_api_key_plaintext

openai_api_key_plaintext

プレーンテキスト文字列として提供される OpenAI サービスを使用する OpenAI API キー。 Databricks Secrets を使用してキーを参照する場合は、 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 で組織を指定するオプションのフィールド。

いいえ

Cohere

構成パラメーター

説明

*必須

デフォルト

cohere_api_key

キーのDatabricks シークレットキーCohereAPI リファレンス。API キーを直接貼り付ける場合は、 cohere_api_key_plaintextを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: cohere_api_keyまたはcohere_api_key_plaintext

cohere_api_key_plaintext

プレーンテキスト文字列として提供される Cohere API キー。 Databricks Secrets を使用してキーを参照する場合は、 cohere_api_keyを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: cohere_api_keyまたはcohere_api_key_plaintext

cohere_api_base

Cohere サービスの基本 URL。

いいえ

Anthropic

構成パラメーター

説明

*必須

デフォルト

anthropic_api_key

キーのDatabricks シークレットキーAnthropicAPI リファレンス。API キーを直接貼り付ける場合は、 anthropic_api_key_plaintextを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: anthropic_api_keyまたはanthropic_api_key_plaintext

anthropic_api_key_plaintext

プレーンテキスト文字列として提供される Anthropic API キー。 Databricks Secrets を使用してキーを参照する場合は、 anthropic_api_keyを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: anthropic_api_keyまたはanthropic_api_key_plaintext

Azure OpenAI

Azure OpenAI には、直接の OpenAI サービスとは異なる機能があります。 概要については、 比較のドキュメントを参照してください。

構成パラメーター

説明

*必須

デフォルト

openai_api_key

サービスを使用する OpenAI キーの シークレットDatabricksAPIAzure キー リファレンス。API キーを直接貼り付ける場合は、 openai_api_key_plaintextを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: openai_api_keyまたはopenai_api_key_plaintext

openai_api_key_plaintext

プレーンテキスト文字列として提供される Azure サービスを使用する OpenAI API キー。 Databricks Secrets を使用してキーを参照する場合は、 openai_api_keyを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: openai_api_keyまたはopenai_api_key_plaintext

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 を使用している場合は、エンドポイント構成で次のパラメーターを使用します。

構成パラメーター

説明

*必須

デフォルト

microsoft_entra_tenant_id

Microsoft Entra ID 認証のテナント ID。

はい

microsoft_entra_client_id

Microsoft Entra ID 認証用のクライアント ID。

はい

microsoft_entra_client_secret

Entra ID 認証に使用されるクライアント Databricksシークレットの シークレット キー リファレンス。Microsoftクライアントシークレットを直接貼り付ける場合は、 microsoft_entra_client_secret_plaintextを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: microsoft_entra_client_secretまたはmicrosoft_entra_client_secret_plaintext

microsoft_entra_client_secret_plaintext

プレーンテキスト文字列として提供される、Microsoft Entra ID 認証に使用されるクライアント シークレット。 Databricks Secrets を使用してキーを参照する場合は、 microsoft_entra_client_secretを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: microsoft_entra_client_secretまたはmicrosoft_entra_client_secret_plaintext

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

Google Cloud Vertex AI

構成パラメーター

説明

*必須

デフォルト

private_key

DatabricksGoogle クラウドVertex AI サービスにアクセスできるサービス アカウントの秘密キーの シークレットキー リファレンス。サービス アカウント キーを管理するためのベスト プラクティスを参照してください。 API キーを直接貼り付ける場合は、 private_key_plaintextを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: private_keyまたはprivate_key_plaintext

private_key_plaintext

Google クラウドVertex AIサービス にアクセスできる サービス アカウント の秘密鍵は、プレーンテキストのシークレットとして提供されます。 サービス アカウント キーを管理するためのベスト プラクティスを参照してください。 Databricks Secrets を使用してキーを参照する場合は、 private_keyを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: private_keyまたはprivate_key_plaintext

region

これは、Google Cloud Vertex AIサービスのリージョンです。 詳細については、「 サポートされているリージョン 」を参照してください。 一部のモデルは、特定の地域でのみ利用できます。

はい

project_id

これは、サービス アカウントが関連付けられている Google Cloud プロジェクト ID です。

はい

Amazon Bedrock

Amazon Bedrock を外部モデルプロバイダーとして使用するには、顧客は指定された AWS リージョンで Bedrock が有効になっていること、および指定された AWS キーペアが Bedrock サービスと対話するための適切なアクセス許可を持っていることを確認する必要があります。 詳細については、 「AWS Identity and Access Management」を参照してください。

AWS のアクセス許可に問題がある場合、Databricks ではAmazon Bedrock APIを使用して認証情報を直接確認することをお勧めします。

AI21 Labs

構成パラメーター

説明

*必須

デフォルト

ai21labs_api_key

キーのDatabricks シークレットキーAI21 LabsAPI リファレンス。API キーを直接貼り付ける場合は、 ai21labs_api_key_plaintextを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: ai21labs_api_keyまたはai21labs_api_key_plaintext

ai21labs_api_key_plaintext

プレーンテキスト文字列として提供される AI21 Labs API キー。 Databricks Secrets を使用してキーを参照する場合は、 ai21labs_api_keyを参照してください。

次のいずれかのフィールドを使用して API キーを指定する必要があります: ai21labs_api_keyまたはai21labs_api_key_plaintext

エンドポイントでの AI Gateway の構成

また、エンドポイントを設定して、レート制限、使用状況の追跡、ログ記録などの Mosaic AI Gateway 機能を有効にすることもできます。

モデルサービングエンドポイントでのAIゲートウェイの設定を参照してください。

外部モデルエンドポイントをクエリーする

外部モデルエンドポイントを作成すると、ユーザーからのトラフィックを受信する準備が整います。

OpenAI クライアント、REST API、または MLflow Deployments SDK を使用して、スコアリング リクエストをエンドポイントに送信できます。

次の例では、OpenAI クライアントを使用して、Anthropic によってホストされている claude-2 入力候補モデルに対してクエリを実行します。 OpenAI クライアントを使用するには、クエリするモデルをホストするモデルサービング エンドポイントの名前をmodelフィールドに入力します。

この例では、以前に作成したエンドポイント anthropic-completions-endpointを使用して、Anthropic モデル プロバイダーから外部モデルにアクセスするように構成します。 外部モデルエンドポイントの作成方法を参照してください。

クエリできる追加のモデルとそのプロバイダーについては 、「サポートされているモデル 」を参照してください。

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 によってサポートされています)。 これは、チャットと完了リクエストでのみ使用できます。

制限事項

選択した外部モデルによっては、構成によって、データが元のリージョン外で処理される場合があります。 モデルサービングの制限と領域を参照してください。