Amazon Bedrockのクロスリージョン推論を試してみる
2024年8月27日にAmazon Bedrockでクロスリージョン推論がサポートされたので、試してみました。
何ができるのか
オンデマンドモードでBedrockを使用すると、サービスクォータやピーク使用時間によってリクエストが制限される可能性がありました。体感ですが、ストリーミングレスポンスはリクエスト制限が起こりやすく、その解決方法について登壇しました。
登壇内容を要約すると、リトライ機構を作ったり、Bedrockの使用するリージョンをランダムに選択することで対応しました。しかし、どのリージョンのBedrockがピークに達しているかわからないため、アクセスできるかどうかは結局運ゲーになってしまいます。
今回リリースされたクロスリージョン推論を使用すると、推論プロファイルで定義されたリージョン間でのモデル呼び出しリクエストを動的にルーティングします。このルーティングは、ユーザートラフィック、需要、およびリソースの使用率が考慮され、その結果スループットが向上します。
サポートされているモデル
2024年9月8日時点でサポートされているモデルの一覧です。
残念ながら、東京リージョンではまだ使えません。
Inference profile | Inference profile ID | Regions included |
---|---|---|
US Anthropic Claude 3 Haiku | us.anthropic.claude-3-haiku-20240307-v1:0 | US East (N. Virginia) (us-east-1) US West (Oregon) (us-west-2) |
EU Anthropic Claude 3 Haiku | eu.anthropic.claude-3-haiku-20240307-v1:0 | Europe (Frankfurt) (eu-central-1) Europe (Ireland) (eu-west-1) Europe (Paris) (eu-west-3) |
US Anthropic Claude 3 Opus | us.anthropic.claude-3-opus-20240229-v1:0 | US East (N. Virginia) (us-east-1) US West (Oregon) (us-west-2) |
US Anthropic Claude 3 Sonnet | us.anthropic.claude-3-sonnet-20240229-v1:0 | US East (N. Virginia) (us-east-1) US West (Oregon) (us-west-2) |
EU Anthropic Claude 3 Sonnet | eu.anthropic.claude-3-sonnet-20240229-v1:0 | Europe (Frankfurt) (eu-central-1) Europe (Ireland) (eu-west-1) Europe (Paris) (eu-west-3) |
US Anthropic Claude 3.5 Sonnet | us.anthropic.claude-3-5-sonnet-20240620-v1:0 | US East (N. Virginia) (us-east-1) US West (Oregon) (us-west-2) |
EU Anthropic Claude 3.5 Sonnet | eu.anthropic.claude-3-5-sonnet-20240620-v1:0 | Europe (Frankfurt) (eu-central-1) Europe (Ireland) (eu-west-1) Europe (Paris) (eu-west-3) |
実際にやってみた
オレゴンをプライマリリージョン、バージニア北部をセカンダリリージョンとしてBedrockを使用します。
pythonでクロスリージョン推論を使用する
クロスリージョン推論を使用するには、下記のリクエストを送る際に、modelIdを推論プロファイルのIDに変更する必要があります。
- InvokeModel
- InvokeModelWithResponseStream
- Converse
- ConverseStream
推論プロファイルのIDは、先ほど記載したInference profile ID
です。実際に変更したコードは以下の通りです。
bedrock_runtime = boto3.client('bedrock-runtime', region_name='us-west-2')
+ modelId = 'us.anthropic.claude-3-haiku-20240307-v1:0'
- modelId = 'anthropic.claude-3-haiku-20240307-v1:0'
res = bedrock_runtime.converse(
modelId=modelId,
messages=[{
"role": "user",
"content": [{"text": "日本について教えて下さい。"}]
}]
)
print(res["output"]["message"]["content"][0]["text"])
きちんと回答されていました。
Bedrockの回答
はい、日本について詳しく教えましょう。主な特徴は以下の通りです。
- 地理:
- 島国で、本州、四国、九州、北海道の4つの主要な島からなる。
- 火山国で、富士山が有名。
- 四季がはっきりしており、桜の季節など美しい自然が楽しめる。
- 文化:
- 伝統的な文化が残る一方、先端技術も発達している。
- 武道、茶道、着物、歌舞伎、能楽など、長い歴史と伝統を持つ文化がある。
- アニメ、漫画、ゲームなどの現代ポップカルチャーが世界的に人気。
- 社会:
- 日本語が公用語。
- 人口は約1.2億人。東京が最大の都市。
- 経済大国で、先端技術産業が発達。
- 高齢化社会を迎えており、社会システムの課題もある。
- 観光:
- 富士山、京都の古都、東京のモダンな街並み、温泉など、多様な魅力がある。
- 食文化も大変豊か。寿司、らーめん、天ぷらなどが世界的に有名。
このように、長い歴史と伝統を持ち、経済大国でもある日本は非常に魅力的な国です。ぜひ訪れてみてください。
自動的にルーティングされているか確認する
ConverseStreamを100回ほどループし、自動的にルーティングされているかCloudTrailで確認してみました。イベント名からConverseStream
を指定すると、履歴が表示されます。
イベント結果をダウンロードし、中身を確認すると、下記のようになっていました(一部抜粋)。
// us-west-2で使用されている
"additionalEventData": {
"inferenceRegion": "us-west-2"
},
"awsRegion": "us-west-2",
// us-east-1で使用されている
"additionalEventData": {
"inferenceRegion": "us-east-1"
},
"awsRegion": "us-west-2",
これにより、us-west-2で呼び出したBedrockがus-east-1にルーティングしていることがわかりました。
まとめ
頑張って実装していたクロスリージョン推論が、modelIdを変更するだけで簡単に使用できるようになりました。まだ東京リージョンでは使用できませんが、特にデータの規制等がなく、オレゴンやバージニアでアプリを展開している人は、使ってみてもいいかもしれません。
Discussion