🧠

Amazon Bedrockのクロスリージョン推論を試してみる

2024/09/08に公開

2024年8月27日にAmazon Bedrockでクロスリージョン推論がサポートされたので、試してみました。
https://aws.amazon.com/jp/about-aws/whats-new/2024/08/amazon-bedrock-cross-region-inference/

何ができるのか

オンデマンドモードでBedrockを使用すると、サービスクォータやピーク使用時間によってリクエストが制限される可能性がありました。体感ですが、ストリーミングレスポンスはリクエスト制限が起こりやすく、その解決方法について登壇しました。
https://speakerdeck.com/sonoda_mj/bedrocknotoo-many-requestjie-jue-sitemita

登壇内容を要約すると、リトライ機構を作ったり、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を変更するだけで簡単に使用できるようになりました。まだ東京リージョンでは使用できませんが、特にデータの規制等がなく、オレゴンやバージニアでアプリを展開している人は、使ってみてもいいかもしれません。

参考

Fusic 技術ブログ

Discussion