[アップデート] Amazon Bedrock のオンデマンド基礎モデル/推論プロファイルがコスト配分タグをサポートしました

[アップデート] Amazon Bedrock のオンデマンド基礎モデル/推論プロファイルがコスト配分タグをサポートしました

アプリケーション推論プロファイルを通じて、従来のオンデマンドで利用可能な基礎モデル/推論プロファイルにタグを付与できるようになりました。
Clock Icon2024.11.02

こんにちは!AWS 事業本部コンサルティング部のたかくに(@takakuni_)です。

Amazon Bedrock のオンデマンド基礎モデル/推論プロファイルがコスト配分タグをサポートしました。

https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-bedrock-cost-allocation-tags-inference-profiles/

実はアップデートが発表される数日前に API Changes で DeleteInferenceProfile, CreateInferenceProfile API がサポートし、「ついにカスタムの推論プロファイルのサポートか!?」と 1 人で興奮していました。

ですが、 CreateInferenceProfile では modelSource の部分が 1 つしか選択できず、思っていたものと違うなと思い、検証を止めていたためやっと謎が解けました。

https://awsapichanges.com/archive/changes/23e355-bedrock.html

https://docs.aws.amazon.com/bedrock/latest/APIReference/API_DeleteInferenceProfile.html

何が嬉しいのか

今まで、オンデマンドで利用可能な基礎モデルや推論プロファイルに関しては、コスト配分タグがサポートされていませんでした。(AWS 側で定義したリソースのため、タグをつけることができませんでした。)

今回のアップデートで、AWS 側で定義した特定のモデルや、推論プロファイルを、ユーザー管理の推論プロファイル(以後、アプリケーション推論プロファイル)としてコピー可能になったため、タグ付けできるようになりました。

図にすると、以下のイメージです。

Untitled.png

なお、この機能は東京リージョンでも利用可能です。やったね。

やってみる

実際にやってみるとイメージがしやすいと思います。今回は AWS CLI を利用してアプリケーション推論プロファイルを作成します。

執筆時点(2024 年 11 月 02 日)の CloudShell で利用される AWS CLI のバージョンは、 v2.18.16 だったため、v2.18.17 まで引き上げます。

[cloudshell-user@ip-10-132-94-204 ~]$ aws --version
aws-cli/2.18.16 Python/3.12.6 Linux/6.1.112-122.189.amzn2023.x86_64 exec-env/CloudShell exe/x86_64.amzn.2023

https://github.com/aws/aws-cli/commit/5587ab9190a6da1e444dbda23ca00c96da85e84f

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
aws --version

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions

AWS CLI のバージョンが、v2.18.17 以上に更新されていれば OK です。

[cloudshell-user@ip-10-132-84-179 ~]$ aws --version
aws-cli/2.19.1 Python/3.12.6 Linux/6.1.112-122.189.amzn2023.x86_64 exec-env/CloudShell exe/x86_64.amzn.2023

東京リージョンでは執筆時点で、システム定義の推論プロファイルがサポートしていないため、今回はベースモデルをもとにアプリケーション推論プロファイルを作成してみます。

copyFrom キーのバリューには、システム定義の推論プロファイルまたはベースモデルの ARN を入力します。

aws bedrock create-inference-profile --region 'ap-northeast-1' \
--inference-profile-name 'takakuni-bedrock-profile' \
--description 'takakuni-bedrock-profile' \
--model-source '{"copyFrom": "arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0"}' \
--tags '[{"key": "CostAllocateTag","value": "takakuni"}]'

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/bedrock/create-inference-profile.html

アプリケーション推論プロファイルの ARN が返ってきていれば OK です。

[cloudshell-user@ip-10-132-84-179 ~]$ aws bedrock create-inference-profile --region 'ap-northeast-1' \
> --inference-profile-name 'takakuni-bedrock-profile' \
> --description 'takakuni-bedrock-profile' \
> --model-source '{"copyFrom": "arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0"}' \
> --tags '[{"key": "CostAllocateTag","value": "takakuni"}]'
{
    "inferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:123456789012:application-inference-profile/ps3m4z7fpz4r",
    "status": "ACTIVE"
}

執筆時点では、マネジメントコンソール上には出てきませんでした。今後に期待ですね。作成した推論プロファイルを確認するには list-inference-profiles で確認します。

推論プロファイルのタイプは APPLICATION でフィルターします。

aws bedrock list-inference-profiles --region 'ap-northeast-1' \
--type-equals 'APPLICATION'

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/bedrock/list-inference-profiles.html

先ほど作成したアプリケーション推論プロファイルが返答されていますね。

[cloudshell-user@ip-10-132-84-179 ~]$ aws bedrock list-inference-profiles --region 'ap-northeast-1' \
> --type-equals 'APPLICATION'
{
    "inferenceProfileSummaries": [
        {
            "inferenceProfileName": "takakuni-bedrock-profile",
            "description": "takakuni-bedrock-profile",
            "createdAt": "2024-11-02T07:29:09.225303+00:00",
            "updatedAt": "2024-11-02T07:29:09.225303+00:00",
            "inferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:123456789012:application-inference-profile/ps3m4z7fpz4r",
            "models": [
                {
                    "modelArn": "arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0"
                }
            ],
            "inferenceProfileId": "ps3m4z7fpz4r",
            "status": "ACTIVE",
            "type": "APPLICATION"
        }
    ]
}

get-inference-profile でアプリケーション推論プロファイルの詳細を確認できます。しかし、先ほど渡した付与したタグが見当たりませんね。

[cloudshell-user@ip-10-132-84-179 ~]$ INFERENCE_PROFILE_ARN=$(aws bedrock list-inference-profiles --region 'ap-northeast-1' --type-equals 'APPLICATION' --query inferenceProfileSummaries[0].inferenceProfileArn --output text)
[cloudshell-user@ip-10-132-84-179 ~]$ aws bedrock get-inference-profile --inference-profile-identifier $INFERENCE_PROFILE_ARN
{
    "inferenceProfileName": "takakuni-bedrock-profile",
    "description": "takakuni-bedrock-profile",
    "createdAt": "2024-11-02T07:29:09.225303+00:00",
    "updatedAt": "2024-11-02T07:29:09.225303+00:00",
    "inferenceProfileArn": "arn:aws:bedrock:ap-northeast-1:123456789012:application-inference-profile/ps3m4z7fpz4r",
    "models": [
        {
            "modelArn": "arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0"
        }
    ],
    "inferenceProfileId": "ps3m4z7fpz4r",
    "status": "ACTIVE",
    "type": "APPLICATION"
}

CLI の戻り値を確認すると tag は返ってこないようでした。

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/bedrock/get-inference-profile.html

というわけで、リソースグループタグ付け API で確認してみます。

aws resourcegroupstaggingapi get-resources --tag-filters Key=CostAllocateTag,Values=takakuni --region ap-northeast-1

https://dev.classmethod.jp/articles/tsnote-list-aws-resources-from-tag/

無事、アプリケーション推論プロファイルが検索に引っかかりましたね。(めでたしめでたし)

[cloudshell-user@ip-10-132-84-179 ~]$ aws resourcegroupstaggingapi get-resources --tag-filters Key=CostAllocateTag,Values=takakuni --region ap-northeast-1
{
    "ResourceTagMappingList": [
        {
            "ResourceARN": "arn:aws:bedrock:ap-northeast-1:123456789012:application-inference-profile/ps3m4z7fpz4r",
            "Tags": [
                {
                    "Key": "CostAllocateTag",
                    "Value": "takakuni"
                }
            ]
        }
    ]
}

最後にアプリケーション推論プロファイルを利用してモデルの実行を行ってみます。

INFERENCE_PROFILE_ARN=$(aws bedrock list-inference-profiles --region 'ap-northeast-1' \
--type-equals 'APPLICATION' \
--query inferenceProfileSummaries[0].inferenceProfileArn \
--output text)
aws bedrock-runtime converse --region ap-northeast-1 \
--model-id $INFERENCE_PROFILE_ARN \
--messages '[{"role": "user", "content": [{"text": "こんにちは!"}]}]'

問題なく返信返ってきていますね。素晴らしい

[cloudshell-user@ip-10-132-84-179 ~]$ INFERENCE_PROFILE_ARN=$(aws bedrock list-inference-profiles --region 'ap-northeast-1' \
> --type-equals 'APPLICATION' \
> --query inferenceProfileSummaries[0].inferenceProfileArn \
> --output text)
[cloudshell-user@ip-10-132-84-179 ~]$ aws bedrock-runtime converse --region ap-northeast-1 \
> --model-id $INFERENCE_PROFILE_ARN \
> --messages '[{"role": "user", "content": [{"text": "こんにちは!"}]}]'
{
    "output": {
        "message": {
            "role": "assistant",
            "content": [
                {
                    "text": "こんにちは!お元気ですか?何かお手伝いできることはありますか?お気軽にお尋ねください。"
                }
            ]
        }
    },
    "stopReason": "end_turn",
    "usage": {
        "inputTokens": 13,
        "outputTokens": 42,
        "totalTokens": 55
    },
    "metrics": {
        "latencyMs": 1163
    }
}

コスト配分タグ周り

参考

https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles.html

https://aws.amazon.com/jp/blogs/machine-learning/track-allocate-and-manage-your-generative-ai-cost-and-usage-with-amazon-bedrock/

まとめ

以上、「Amazon Bedrock のオンデマンド基礎モデル/推論プロファイルがコスト配分タグをサポートしました。」でした。

コスト配分タグが使えないことで、プロジェクトごとに新しく AWS アカウントを作成、アカウントを跨いで API 実行していた方(がもしいれば)、神アップデートなのではないでしょうか。

個人的には、今後アプリケーション推論プロファイルに追加できるモデル/リージョンなどのパターンが増えていく展望を期待しています。

このブログがどなたかの参考になれば幸いです。AWS 事業本部コンサルティング部のたかくに(@takakuni_)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.