Strands Agents、NVIDIA NIM、Amazon Bedrock AgentCore を用いた高性能生成 AI システムの構築
本文の状態
日本語全文を表示中
詳細モードで約13分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
AWS Machine Learning Blog
AWS は、Strands Agents、NVIDIA NIM、Amazon Bedrock AgentCore を組み合わせることで、高速推論と複数エージェントの調整を可能にし、生産環境で信頼性の高い高性能な生成 AI エージェントを構築する方法を発表した。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
高性能な生成 AI エージェントを構築するには、高速推論を提供し、複数のエージェントを調整し、本番環境の負荷下でも確実に動作できるアーキテクチャが必要です。レビューの自動化やデジタルアシスタントの機能強化、複雑な意思決定ワークフローのサポートのために生成 AI エージェントを構築する場合、これらのエージェントが良好に機能する必要があります。手作業の削減、ニアリアルタイムでの応答、追加のインフラ管理なしで数千ものインタラクションへのスケーリングを実現できなければなりません。本稿では、GPU 加速推論 GPU、サーバーレスオーケストレーション、共有メモリ、組み込みの観測機能(observability)を組み合わせることで、AWS 上でこれらの高性能エージェントを構築する方法について解説します。実験的なプロトタイプから一貫したビジネス価値を提供するシステムへ移行する際、これらの機能は不可欠です。
本番環境におけるエージェントワークロードが増大すると、並行リクエスト下で推論レイテンシが著しく増加し、応答が遅延してユーザーエクスペリエンスが低下することがあります。ステートレスな実行環境では、インタラクション間で会話やタスクのコンテキストを失うことがあり、その結果として重複作業が発生したり出力が不整合になったりします。エージェントの実行状況に対する可視性が限定的であるため、障害の原因特定、推論経路の理解、運用コストの制御が困難になります。これらの課題は、複数のエージェントが並列実行され、コンテキストを共有し、結果を集約する必要があるマルチエージェントシステムにおいて、より顕著に現れます。
並列推論、文脈の維持、追跡可能な実行パスを実証するマルチエージェントキャンペーンレビューシステムを構築します。この統合アーキテクチャでは、GPU 加速推論のために NVIDIA NIM を使用し、Amazon Bedrock AgentCore が管理されたランタイム、共有メモリ、組み込みの観測機能を提供し、Strands Agents がサーバーレス型マルチエージェントオーケストレーションを担当します。このアプローチは、本番環境におけるパフォーマンス、スケーラビリティ、運用上の洞察をサポートします。例ではマーケティングコンテンツレビューに焦点を当てていますが、同じパターンはデジタルアシスタント、レビュー自動化、検索拡張生成パイプラインにも適用可能です。
これらの概念を具体的に理解するために、以下のセクションでは、これらコンポーネントが実際にどのように連携して動作するかを示す参照アーキテクチャと実装の詳細を解説します。
ソリューション概要
あなたは、並列して動作する 3 つの専門エージェントからなるシステムを構築します。ペルソナレビューアエージェントは、複数の聴衆視点からキャンペーンコンテンツを評価し、共鳴スコアを生成します。バリデーターエージェントは、コンテンツが法的およびブランドガイドラインに適合しているかを確認します。ファイナライザーエージェントはこれらの出力を集約し、統合された推奨事項セットを作成します。ドキュメントは React ベースのフロントエンドを通じて提出され、結果を非同期でポーリングして、利用可能になった時点でエージェントからのフィードバックを表示します。
本ソリューションでは、build.nvidia.com を経由して提供されるホスト型の NVIDIA NIM API を使用し、フルマネージドサービスとして高性能な GPU 加速推論を提供します。これらのエンドポイントは、NVIDIA が管理する GPU バックエンド上で最適化された大規模言語モデルを実行しています。これらのバックエンドは、Compute Unified Device Architecture (CUDA), や TensorRT-LLM などの技術を活用し、エージェントワークフローに対して低遅延かつ高スループットの応答を実現します。OpenAI と互換性のある Chat Completion API を公開することで、NIM はモデル固有の適応を必要とせず、Strands ベースのマルチエージェントオーケストレーション層に統合されます。
Strands Agents を用いて、ツールベースの推論ワークフローを調整するためのエージェントオーケストレーションを実装します。Strands を使用すると、エージェント間の相互作用を明示的にモデル化できるため、並列実行の管理、制御フローの制御、複数エージェントにわたる結果の集約が容易になります。Strands オーケストレーターと専門的なエージェントを Docker コンテナとしてパッケージ化し、Amazon Bedrock AgentCore Runtime にデプロイします。AgentCore Runtime は、チェックポイント機能と回復機能を備えた管理された実行環境を提供します。これらの機能により、エージェントは中断から自動的に復元でき、手動でのインフラ管理なしで数千の同時呼び出しにスケールすることが可能になります。
Amazon Bedrock AgentCore Observability を使用して、エージェントワークフローの各ステップの詳細な可視化を提供し、開発者が実行パスを検査したり、中間出力を監査したり、パフォーマンスのボトルネックをデバッグしたりできるようにします。遅延、トークン使用量、エラーレートなどの運用メトリクスは Amazon CloudWatch を通じて監視できます。この可視性により、エージェントの動作を理解し、本番環境でのパフォーマンスボトルネックを特定することが可能になります。
また、Amazon Bedrock AgentCore Memory を使用して、エージェント呼び出し間での共有コンテキストを提供し、多回対話のサポートも実現できます。AgentCore Memory は会話の状態と履歴を保存するための組み込みサポートを提供しているため、この実装を拡張して AI アシスタントに自然言語インターフェースを提供することも可能です。
本ソリューションの中核的な側面の 1 つは、AWS Serverless Application Model (AWS SAM) テンプレートを使用して Bedrock AgentCore Runtime へ容易にデプロイできる点です。テンプレートによってプロビジョニングされた Amazon API Gateway インターフェースを呼び出すことで、Strands エージェントおよびそのすべての依存関係をパッケージ化・デプロイできると同時に、AgentCore Observability(観測性)と AgentCore Memory の機能も有効化されます。
以下のアーキテクチャ図は、NVIDIA NIM、Strands Agents、Amazon Bedrock AgentCore が連携して、デプロイにおける推論、オーケストレーション、メモリ管理、および観測性をどのようにサポートするかを示しています。
前提条件
本ソリューションをデプロイする前に、以下のツールを開発環境にセットアップする必要があります。
- AWS Command Line Interface (AWS CLI) をインストールします。
- AWS SAM CLI v1.100.0+ をインストールします。
- Docker v20.x+ をインストールします。
- Node.js v18.x+ をインストールします。
- Python v3.11+ をインストールします。
依存関係
Strands Agents の実装では、DockerFile にパッケージ化されている以下の依存関係も必要です。
- AWS Strands マルチエージェントフレームワーク:strands-agents
- Strands エージェントツールおよびユーティリティ:strands-agents-tools
- API 呼び出し用の HTTP ライブラリ:requests
- Amazon Bedrock エージェントコア機能:bedrock-agentcore
- Python 用 AWS SDK:boto3
ソリューションのデプロイ
アーキテクチャを理解したところで、以下の手順で AWS 環境にソリューションをデプロイする方法をご案内します。なお、NVIDIA NIM を利用するには、AWS Marketplace のサブスクリプションまたは NGC 登録時に入手可能な NVIDIA AI Enterprise EULA(エンドユーザーライセンス契約)への同意が必要です。
本ソリューションは GitHub リポジトリ からダウンロード可能です。AWS 環境でソリューションをデプロイしてアクセスするには、GitHub リポジトリの「Deployment セクション」 に正確に記載されている以下のステップバイステップガイドも併せてご活用ください:
ステップ 1: リポジトリのクローン
git clone
cd aws-genai-campaign-review-strands-agentcore
ステップ 2: AWS 認証情報の設定
AWS CLI の設定を行います:
aws configure
認証情報を確認します:
aws sts get-caller-identity
ステップ 3: Amazon DynamoDB ペルソナテーブルのセットアップ
スクリプトに実行権限を付与します:
chmod +x scripts/setup_persona_table.sh
セットアップスクリプトを実行します:
./scripts/setup_persona_table.sh
ステップ 4: AWS SAM アプリケーションの構築
sam build
ステップ 5: インフラストラクチャのデプロイ
ガイド付きデプロイを使用し、プロンプトに従ってスタック名、エージェント名、AWS リージョンを入力して、その他の項目についてはデフォルト値を受け入れてください。
sam deploy --guided
ステップ 6: デプロイ出力の取得
API エンドポイントの取得:
aws cloudformation describe-stacks --stack-name [スタック名] --query 'Stacks[0].Outputs' --output table
これらの値を保存してください:
- ApiEndpoint – HTTP API URL
- CampaignOrchestratorApi – エージェント API URL
- CloudFrontURL – フロントエンド URL
- FrontendBucket – フロントエンド用の S3 バケット
ステップ 7: AgentCore Runtime へのエージェントのデプロイ
これにより、Strands エージェントが Bedrock AgentCore にデプロイされ、エージェント ARN が Systems Manager に書き込まれます:
curl -X POST -H "Content-Type: application/json" -d '{"action":"deploy","agent_name":"[エージェント名]"}'
これには約 5 分かかります。API Gateway はタイムアウト(29 秒)しますが、AWS Lambda 関数は実行を続けます。
進行状況の監視:
aws logs tail /aws/lambda/deploy-agentcore --region [リージョン名] –follow
*Agent Core Runtime is READY! and Wrote Agent ARN to SSM.*というメッセージが表示されるまで待ちます。
検証:
aws ssm get-parameter --name /agentcore/[スタック名]/[エージェント名]/agent-arn --region [リージョン名]
ステップ 8: フロントエンド環境の設定
PI_URL=$(aws cloudformation describe-stacks --stack-name [スタック名] --query 'Stacks[0].Outputs[?OutputKey==ApiEndpoint].OutputValue' --output text)
AGENT_API_URL=$(aws cloudformation describe-stacks --stack-name -review --query 'Stacks[0].Outputs[?OutputKey==CampaignOrchestratorApi].OutputValue' --output text)
.env ファイルの作成
cat > .env
EOF
ステップ 9: フロントエンドのビルドとデプロイ
依存関係のインストール:
npm install
フロントエンドのビルド:
npm run build
フロントエンド用バケット名の取得:
FRONTEND_BUCKET=$(aws cloudformation describe-stacks --stack-name unified-campaign-review --query 'Stacks[0].Outputs[?OutputKey==FrontendBucket].OutputValue' --output text)
S3 へのデプロイ:
aws s3 sync dist/ s3://$FRONTEND_BUCKET --delete
CloudFront キャッシュの無効化(オプション、更新時のみ):
DISTRIBUTION_ID=$(aws cloudfront list-distributions --query "DistributionList.Items[?Origins.Items[0].DomainName=='${FRONTEND_BUCKET}.s3.us-west-2.amazonaws.com'].Id" --output text)
aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths "/*"
ステップ 10: アプリケーションへのアクセス
CloudFront URL の取得:
aws cloudformation describe-stacks --stack-name unified-campaign-review --query 'Stacks[0].Outputs[?OutputKey==CloudFrontURL].OutputValue' --output text
ブラウザで URL を開いてアプリケーションにアクセスしてください。この campaign_brief.md ファイルをサンプルキャンペーンドキュメントとして使用し、左側のパネルにアップロードしてください。その後、右側のパネルには、マルチエージェントオーケストレーションからのキャンペーンレビュー出力が以下のように表示されます:
Bedrock AgentCore 観測コンソール に移動し、エージェントを選択して、以下のようにエージェントワークフローの各ステップの詳細な可視化を行います:
クリーンアップ
このソリューションを試した後、再発する課金を避けるために AWS アカウントをクリーンアップしてください。
- AWS CloudFormation スタックを削除します:
sam delete --stack-name unified-campaign-review
- DynamoDB テーブルを削除します:
aws dynamodb delete-table --table-name PersonaTable --region us-west-2
結論
この投稿では、GPU アクセラレーションされた推論に NVIDIA NIM を、サーバーレスオーケストレーションに AWS 上の Amazon Bedrock AgentCore と Strands Agents を組み合わせて、本番環境対応の生成 AI エージェントシステムを構築する方法について学びました。推論とエージェント調整を分離することで、このアーキテクチャは独立したスケーリング、エージェント間での共有コンテキスト、および実行とパフォーマンスの詳細な可視性をサポートします。
本稿のアプローチは、並列推論、文脈の維持、運用上の洞察を必要とするマルチエージェントシステムの基盤となる実用的な手法を提供します。レビュー自動化、デジタルアシスタント、またはその他のエージェント駆動型アプリケーションを構築する際でも、ここで示されたパターンにより、実験的なプロトタイプから、AWS 上で信頼性を持って展開・監視・スケール可能なシステムへと移行することが可能になります。
著者について
Kanishk Mahajan氏は、AWS Professional Services のシニア AI/ML プリンシパルです。この役職において、彼はテレコムおよびメディア・エンターテインメント分野における AWS の主要顧客向けに、生成型 AI およびエージェント型のトランスフォーメーションを主導しています。
Akshay Parkhi氏は、Amazon Web Services に所属する機械学習エンジニアで、SAP、クラウド、DevOps、AI/ML における企業変革のリーダーシップ経験が 16 年以上に及びます。彼は複雑な実世界環境において重要なビジネス成果を実現する、生産レベルの AI およびエージェント型システムのアーキテクチャ設計とスケーリングを担当しています。
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み