この記事でわかること
- Amazon Bedrockのコストを「誰が・何に」使ったか特定するための属性付与の手法
- コストの可視化と、予算超過を防ぐための3つの強制(Enforcement)レベル
- プラットフォーム側で一括してコストを最適化するための運用アプローチ
何が発表されたか
生成AI、特に自律的に動作する「エージェント型」のワークロードにおいて、トークン消費量が増大しコスト管理が複雑化しています。エージェント型ワークロードは、ユーザー数ではなく、ワークフローの自律性の度合いやコンテキストのサイズに応じてトークン消費がスケールするため、従来のモデルよりもコスト予測が困難です。これに対し、FinOps(コスト最適化の専門手法)担当者とプラットフォームエンジニアリングチームが連携して取り組むべき、5つのステージからなる運用モデル(プレイブック)が提示されました。
このモデルは、以下の5つのステップをループとして回すことを推奨しています:
- 属性付与 (Attribute): コストを特定のチームやアプリケーションに紐付ける
- 観測 (Observe): リクエストの詳細をログに記録する
- 強制 (Enforce): 予算に基づき利用を制限する
- 最適化 (Optimize): プラットフォームのデフォルト設定を改善する
- 運用 (Operate): データを意思決定に活用する
何がうれしいのか
- FinOps担当者: コストの帰属(どのチームが、どのワークロードで、いくら使ったか)を明確にでき、予算管理や異常検知が容易になります。
- プラットフォームエンジニア: ログ管理やリクエストのメタデータ付与、ルーティングの制御を中央集権的に行えるため、個々の開発チームに注意を促す手間を減らし、組織全体の無駄を削減できます。
- エージェント活用チーム: ユーザーとのやり取り回数ではなく、タスクの複雑さによってトークン消費が急増するエージェント型ワークロード特有の性質に対し、適切な監視と制御が可能になります。
使い始めるには
コスト管理の基盤として、まずは以下の設定を行うことが推奨されています。
1. コストの属性付与 (Stage 1)
Amazon Bedrockは、呼び出しを行ったIAM principal(AWSリソースを操作する実行主体)に対して推論コストを自動的に紐付けます。以下の4ステップで設定を進めます。
- CUR 2.0(AWS Cost and Usage Report)のデータエクスポートで、IAM principalデータを有効にする。
- IAM principalに、チーム、アプリケーション、コストセンターなどのビジネス次元のタグを付与する(フェデレーションアクセスの場合は、OIDCやSAMLクレームを通じてセッション名とタグを渡すよう設定する)。
- AWS Billingにて、それらのタグをコスト配分タグとして有効化する。
- タグを分析する(CUR 2.0では
iamPrincipal/プレフィックスが付与され、24〜48時間以内にCost Explorerで確認可能になります)。
2. リクエストの可視化 (Stage 2)
Amazon Bedrockのモデル呼び出しログ(Model invocation logging)を有効にし、CloudWatch LogsやAmazon S3へ出力するように設定します。その際、requestMetadataを使用して、アプリケーション名やワークフロー名などの情報をリクエストに含めることで、より詳細な分析が可能になります。
注意点・制約
- 共有ロールの問題: LLMゲートウェイなどを介して単一のIAMロールでBedrockを呼び出す場合、そのままでは「誰が」使ったかの特定ができません。セッションタグなどを用いて、ユーザーごとの識別情報を引き継ぐ設計が必要です。
-
強制レベルの選択: 予算超過を止める方法には、以下の3つのティアがあります。
- Tier 1: モニターとアラート: AWS Budgetsによる閾値通知のみ。コストを強制停止はできませんが、導入が容易です。
-
Tier 2: IAMタグによる強制: ログデータに基づき、予算を超過したユーザーのIAMエンティティを共有の拒否ポリシー(deny
bedrock:*)に追加します。 -
Tier 3: ゲートウェイによる遮断: (素材の記載に基づき、ゲートウェイ側で即座にリクエストを遮断するアプローチを指します)
利用環境や、許容できるコストの変動速度に応じて選択する必要があります。
参考
Managing Amazon Bedrock costs end to end: A playbook for FinOps and platform teams
https://aws.amazon.com/blogs/machine-learning/managing-amazon-bedrock-costs-end-to-end-a-playbook-for-finops-and-platform-teams/
※本記事は筆者のメモ・公開情報をもとに、ローカルLLMの支援で作成しています。