7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

複雑になってきたBedrockの「モデル」を整理する

Posted at

Amazon Bedrockでできることが増えたことにより、InvokeModel APIConverse APIで指定できるモデルが複雑になってきました。

わかりやすくするため、図にしてみました。

ベースモデル(Base model)

普通の呼び出しです。

ベースモデルのモデル一覧を取得

ListFoundationModels APIでモデル一覧が取得できますが、ベースモデル以外の情報も含まれています。
ベースモデルのモデル一覧を取得するためにjqを使ってフィルタリングします。

CloudShell
aws bedrock list-foundation-models | \
  jq -r '.modelSummaries[] | select(.inferenceTypesSupported[] == "ON_DEMAND") | [
    .modelName,
    .providerName,
    .modelId,
    .modelArn,
    (.inputModalities | join(" ")),
    (.outputModalities | join(" ")),
    .modelLifecycle.status
  ] | @tsv' | column -t -s $'\t'
Titan Text G1 - Express     Amazon     amazon.titan-text-express-v1               arn:aws:bedrock:ap-northeast-1::foundation-model/amazon.titan-text-express-v1               TEXT        TEXT       ACTIVE
Titan Embeddings G1 - Text  Amazon     amazon.titan-embed-text-v1                 arn:aws:bedrock:ap-northeast-1::foundation-model/amazon.titan-embed-text-v1                 TEXT        EMBEDDING  ACTIVE
Claude Instant              Anthropic  anthropic.claude-instant-v1                arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-instant-v1                TEXT        TEXT       ACTIVE
Claude                      Anthropic  anthropic.claude-v2:1                      arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-v2:1                      TEXT        TEXT       ACTIVE
Claude 3 Haiku              Anthropic  anthropic.claude-3-haiku-20240307-v1:0     arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-3-haiku-20240307-v1:0     TEXT IMAGE  TEXT       ACTIVE
Claude 3.5 Sonnet           Anthropic  anthropic.claude-3-5-sonnet-20240620-v1:0  arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0  TEXT IMAGE  TEXT       ACTIVE
Embed English               Cohere     cohere.embed-english-v3                    arn:aws:bedrock:ap-northeast-1::foundation-model/cohere.embed-english-v3                    TEXT        EMBEDDING  ACTIVE
Embed Multilingual          Cohere     cohere.embed-multilingual-v3               arn:aws:bedrock:ap-northeast-1::foundation-model/cohere.embed-multilingual-v3               TEXT        EMBEDDING  ACTIVE

呼び出し例

modelIdは、モデルIDまたはモデルARNを指定します。

  • モデルID(例): anthropic.claude-3-5-sonnet-20240620-v1:0
  • モデルARN(例): arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0

AWSアカウント固有ではないので、アカウントIDはARNに含まれていません。

Converse API
import boto3

client = boto3.client("bedrock-runtime")

client.converse(
    modelId="anthropic.claude-3-5-sonnet-20240620-v1:0",
#   modelId="arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "text": "Hello, how are you?",
                }
            ],
        }
    ],
)

クロスリージョン推論(Cross-region inference)

2024/8に追加された機能です。

ベースモデルを使用する場合、単一のリージョンへリクエストを行います。クロスリージョン推論を使用すると、リクエストしたリージョン(プライマリリージョン)で処理できない場合、2つ目以降のリージョン(セカンダリリージョン)で処理を行います。

クロスリージョン推論の推論プロファイル一覧を取得

クロスリージョン推論の推論プロファイルはListInferenceProfiles APIを使用して取得します。ListInferenceProfilesでは、アプリケーション推論プロファイル(後述)も含まれるので、「--type-equals SYSTEM_DEFINED」を指定します。

CloudShell
aws bedrock list-inference-profiles --type-equals SYSTEM_DEFINED | \
  jq -r '.inferenceProfileSummaries[] | [
    .inferenceProfileName,
    .inferenceProfileId,
    .inferenceProfileArn,
    .status
  ] | @tsv' | column -t -s $'\t'
APAC Anthropic Claude 3 Sonnet    apac.anthropic.claude-3-sonnet-20240229-v1:0    arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-3-sonnet-20240229-v1:0    ACTIVE
APAC Anthropic Claude 3.5 Sonnet  apac.anthropic.claude-3-5-sonnet-20240620-v1:0  arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-3-5-sonnet-20240620-v1:0  ACTIVE
APAC Anthropic Claude 3 Haiku     apac.anthropic.claude-3-haiku-20240307-v1:0     arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-3-haiku-20240307-v1:0     ACTIVE

呼び出し例

modelIdは、推論プロファイルIDまたは推論プロファイルARNを指定します。

  • 推論プロファイルID(例): us.anthropic.claude-3-5-sonnet-20240620-v1:0
  • 推論プロファイルARN(例): arn:aws:bedrock:us-east-1:123456789012:inference-profile/us.anthropic.claude-3-5-sonnet-20240620-v1:0
Converse API
import boto3

client = boto3.client("bedrock-runtime")

client.converse(
    modelId="us.anthropic.claude-3-5-sonnet-20240620-v1:0",
#   modelId="arn:aws:bedrock:us-east-1:123456789012:inference-profile/us.anthropic.claude-3-5-sonnet-20240620-v1:0",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "text": "Hello, how are you?",
                }
            ],
        }
    ],
)

注意が必要なのは、「ベースモデルは提供していないが、クロスリージョン推論だけ提供している場合がある」 ということです。

2024/11/24現在、東京リージョンでは クロスリージョン推論でのみ Claude 3 Sonnetが使用できます。

そのため、東京リージョンでベースモデル「anthropic.claude-3-sonnet-20240229-v1:0」を指定すると、以下のようなエラーとなります。

ValidationException: An error occurred (ValidationException) when calling the Converse operation: Invocation of model ID anthropic.claude-3-sonnet-20240229-v1:0 with on-demand throughput isn’t supported. Retry your request with the ID or ARN of an inference profile that contains this model.

(セカンダリリージョンでモデルが有効化されている必要があるかもしれませんので、そのあたりもご注意ください。)

アプリケーション推論プロファイル(Application inference profile)

2024/11/1に追加された機能です。

ベースモデルとクロスリージョン推論は、タグ付けができないため、同一リージョンの同一モデルの場合を使用した場合にコストを分割することができませんでした。アプリケーション推論プロファイルを使うことでタグ付けが可能になり、「アプリ1のClaude 3 Sonnet利用料」と「アプリ2のClaude 3 Sonnet利用料」を分けることができるようになりました。(コスト分配タグの機能を組み合わせて使用します)

コスト以外にもCloudWatchのメトリクスも分けてみることができるようになります。

カスタムモデルなどは、従来からタグ付けがサポートされています。

アプリケーション推論プロファイルは「create_inference_profile」APIで作成します。「modelSource」にモデルARN(ベースモデルの場合)か推論プロファイルARN(クロスリージョン推論の場合)を指定します。

アプリケーション推論プロファイルの作成
import boto3

client = boto3.client("bedrock")

client.create_inference_profile(
    inferenceProfileName="claude-3-haiku-profile",
    modelSource={
        "copyFrom": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-haiku-20240307-v1:0"
    },
    tags=[{"key": "bedrock-inference-profile", "value": "app-1"}],
)

アプリケーション推論プロファイルを作成すると、一意なARNが発行されます。

アプリケーション推論プロファイルの例
arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/jf2sje1c0jnb

アプリケーション推論プロファイルの推論プロファイル一覧を取得

アプリケーション推論プロファイルは、クロスリージョン推論の推論プロファイルと同様ListInferenceProfiles APIを使用して取得します。取得結果をアプリケーション推論プロファイルのみにフィルターするため、「--type-equals APPLICATION」を指定します。

CloudShell
aws bedrock list-inference-profiles --type-equals APPLICATION | \
  jq -r '.inferenceProfileSummaries[] | [
    .inferenceProfileName,
    .inferenceProfileId,
    .inferenceProfileArn,
    .status
  ] | @tsv' | column -t -s $'\t'

呼び出し例

modelIdにアプリケーション推論プロファイルARNを指定します。

Converse API
import boto3

client = boto3.client("bedrock-runtime")

client.converse(
    modelId="arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/jf2sje1c0jnb",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "text": "Hello, how are you?",
                }
            ],
        }
    ],
)

プロンプト(Prompt)

プロンプト管理(Prompt Management)機能は2024/11/7にGAしました。

こちらの投稿で検証していますので参照ください。

プロンプト管理にてプロンプトを作成すると、ARNが発行されますので、API呼び出しのmodelIdとして指定します。

呼び出し例

import boto3

client = boto3.client("bedrock-runtime")

client.converse(
    modelId=prompt1_arn,
    promptVariables={"language": {"text": "英語"}, "message": {"text": "こんにちは"}},
)

プロビジョンドスループット(Provisioned Throughput)

ベースモデルで提供されるスループット以上のスループットが必要な場合、プロビジョンドスループットを購入することで、安定したパフォーマンスでBedrockを利用できるようになります。

個人で簡単に試せる金額ではないので注意しましょうw

58,400ドル/月 = 8,760,000円/月 (1.00ドル = 150円の場合)

カスタムモデル(Custom model)

カスタムモデルは、ベースモデルをもとに、独自のデータセットを使った追加学習を行う機能です。
カスタムモデルを使用する際、プロビジョンドスループットを購入する必要があります。

カスタムモデルの詳細は公式ブログを参考にしてください。

インポートしたモデル(Imported model)

インポートしたモデルは、Bedrock「以外」で構築したモデルを取り込んでBedrockで使用する機能です。
インポートしたモデルはカスタムモデルと異なり、プロビジョンドスループットを購入する必要はありません。

すでに検証記事がありますので、詳細はこれらを参考にしてください。

まとめ

種別 概要 指定方法
ベースモデル(Base model) ベースとなるモデル モデルID もしくは ARN
クロスリージョン推論(Cross region (system-defined) inference profile ) 複数のAWSリージョンにまたがって推論するモデル 推論プロファイルID もしくは ARN
アプリケーション推論プロファイル(Application inference profile) コストとモデルの使用状況を追跡するために作成するモデル ARN
プロンプト(Prompt) Prompt managementで作成したプロンプト ARN
カスタムモデル(Custom model) Bedrockでカスタマイズしたモデル プロビジョンドスループットのARN(?)
インポートしたモデル(Imported model) Bedrock外でカスタマイズし、Bedrockにインポートしたモデル ARN
プロビジョンドスループット(Provisioned Throughput) スループットを固定コストで購入するモデル ARN
7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?