Databricks の外部モデル モデルサービング

重要

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

この記事では、Databricks モデルサービングの外部モデルと、サポートされているモデル プロバイダーと制限事項について説明します。

外部モデルとは

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

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

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

要件

モデル プロバイダー

モデルサービングの外部モデルは、さまざまなモデルプロバイダーをサポートするように設計されています。 プロバイダーは、OpenAI、Anthropic などの機械学習モデルのソースを表します。 各プロバイダーには、外部モデル エンドポイント構成の external_model フィールド内にカプセル化された特定の特性と構成があります。

次のプロバイダーがサポートされています。

  • openai: OpenAI によって提供されるモデルと、Azure OpenAI と Azure OpenAI と AAD の Azure 統合用。

  • anthropic: Anthropicが提供するモデル用。

  • cohere: Cohere が提供するモデルの場合。

  • Amazon -bedrock : Amazon Bedrockによって提供されるモデルの場合。

  • ai21labs: AI21Labs が提供するモデルの場合。

  • google-Cloud-vertex- AI : Google Cloud Vertex AIによって提供されるモデルの場合。

  • databricks-model-serving: 互換性のあるスキーマを持つ Databricks モデルサービング エンドポイントの場合。 「 エンドポイントの構成」を参照してください。

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

サポートされるモデル

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

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

注:

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

モデル プロバイダー

llm/v1/completions

llm/v1/chat

llm/v1/embeddings

OpenAI** (英語)

  • GPT-3.5-ターボ指示

  • Babage-002 (バベッジ-002)

  • DAVINCI-002 (ダヴィンチ-002)

  • GPT-3.5ターボ

  • GPT-4型

  • GPT-3.5-ターボ-0125

  • GPT-3.5-ターボ-1106

  • GPT-4-0125-プレビュー

  • GPT-4-ターボ-プレビュー

  • GPT-4-1106-プレビュー

  • GPT-4-ビジョンプレビュー

  • GPT-4-1106-ビジョンプレビュー

  • text-embedding-ada-002

  • テキスト埋め込み-3-大

  • テキスト埋め込み-3-小

Azure OpenAI**

  • テキスト-davinci-003

  • GPT-35-ターボ-指示

  • GPT-35-ターボ

  • GPT-35-ターボ-16K

  • GPT-4型

  • GPT-4-32K

  • text-embedding-ada-002

  • テキスト埋め込み-3-大

  • テキスト埋め込み-3-小

Anthropic

  • Claude-1 (クロード 1)

  • クロード- 1.3 - 100K

  • claude-2

  • claude-2.1 (クロード 2.1)

  • クロード-2.0

  • クロード-インスタント-1.2

  • クロード-3-オーパス-20240229

  • クロード-3-ソネット-20240229

  • claude-2.1 (クロード 2.1)

  • クロード-2.0

  • クロード-インスタント-1.2

コヒール**

  • コマンド

  • コマンドライトナイトリー

  • コマンドライト

  • コマンド-夜間

  • 埋め込み英語-v2.0

  • 埋め込み多言語 v2.0

  • 埋め込み-英語-ライト-v2.0

  • 埋め込み英語- v3.0の

  • 埋め込み英語ライト- v3.0の

  • embed-multilingual-v3.0 (埋め込み多言語 v3.0)

  • 埋め込み-多言語-ライト-v3.0

Databricks モデルサービング

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

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

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

Amazon Bedrock

Anthropic :

  • クロード-インスタント-v1

  • クロード- V1の

  • クロード-v2

Cohere :

  • コマンドテキストv14

  • コマンドテキストv14:7:4k

  • コマンドライトテキストv14

  • コマンドライトテキストv14:7:4k

AI21 Labs :

  • j2-グランデ-指示

  • j2-ジャンボ-指示

  • J2-ミッド

  • J2-ミッドV1

  • J2 -ウルトラ J2 -ウルトラ- V1の

Anthropic :

  • クロードインスタントv1:2:100k

  • クロード-v2

  • クロードv2:0:18k

  • クロード- v2:0:100k

  • クロード- v2:1

  • クロード- v2:1:18k

  • クロードv2:1:200k

  • クロード- 3 -ソネット- 20240229 - v1:0

Amazon :

  • titan-埋め込みテキスト-v1

  • titan-embed-g1-text-02 (英語)

  • titan-埋め込みテキスト-v1:2:8k

AI21ラボ†

  • J2-ミッド

  • J2-ライト

  • J2-ウルトラ

Google Cloud Vertex AI

text-bison

  • チャットバイソン

  • ジェミニプロ

textembedding-gecko

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

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

Databricks モデルサービングエンドポイントで提供されるモデルを使用する

プロバイダーとしての Databricks モデルサービング エンドポイントは、llm/v1/completionsllm/v1/chatllm/v1/embeddings のエンドポイントの種類でサポートされています。これらのエンドポイントは、必須としてマークされた標準クエリーパラメーターを受け入れる必要がありますが、Databricks モデルサービング エンドポイントがサポートしているかどうかによっては、他のパラメーターが無視される場合があります。

標準クエリー パラメーターの 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
  }
}

エンドポイントの構成

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

外部モデルサービング エンドポイントの場合は、 external_model フィールドとそのパラメーターをエンドポイント構成の served_entities セクションに含める必要があります。

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

エンドポイントのプロバイダーを構成する

エンドポイントを作成するときは、指定したモデル プロバイダーに必要な構成を指定する必要があります。 次のセクションでは、各モデル プロバイダーで使用可能なエンドポイント構成パラメーターをまとめます。

OpenAI

構成パラメーター

説明

*必須

デフォルト

openai_api_key

OpenAI サービスの API キー。

あり

openai_api_type

使用する OpenAI API のタイプを指定するオプションのフィールド。

なし

openai_api_base

OpenAI API のベース URL。

なし

https://api.openai.com/v1

openai_api_version

OpenAI API のバージョンを指定するオプションのフィールド。

なし

openai_organization

OpenAI で組織を指定するオプションのフィールド。

なし

Cohere

構成パラメーター

説明

*必須

デフォルト

cohere_api_key

Cohere サービスの API キー。

あり

Anthropic

構成パラメーター

説明

*必須

デフォルト

anthropic_api_key

Anthropic サービスの API キー。

あり

Azure OpenAI (英語)

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

構成パラメーター

説明

*必須

デフォルト

openai_api_key

Azure OpenAI サービスの API キー。

あり

openai_api_type

このパラメーターを調整して、優先されるセキュリティー・アクセス検証プロトコルを表します。 アクセストークンの検証には、 azureを使用します。 Azure Active Directory (Azure AD) を使用した認証の場合は、 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

これは、Google Cloud Vertex AIサービスにアクセスできるサービス アカウントの秘密キーです。 「サービス アカウント キーを管理するためのベスト プラクティス」を参照してください。

あり

region

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

あり

project_id

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

あり

Amazon Bedrock

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

構成パラメーター

説明

*必須

デフォルト

aws_region

使用する AWS リージョン。 そこで Bedrock を有効にする必要があります。

あり

aws_access_key_id

Bedrock サービスと対話するためのアクセス許可を持つ AWS アクセスキー ID。

あり

aws_secret_access_key

アクセスキー ID とペアになった AWS シークレットアクセスキーで、Bedrock サービスと対話するためのアクセス許可。

あり

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を使用して認証情報を直接確認することをお勧めします。

AI21 Labs

構成パラメーター

説明

*必須

デフォルト

ai21labs_api_key

これは、AI21 Labs サービスの API キーです。

あり

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

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

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

制限事項

選択した外部モデルによっては、構成によって、データが元のリージョン外で処理される場合があります。

「モデルサービングの制限と地域」を参照してください。