5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Bedrockのクロスリージョン推論で、ひとつのリージョンのモデルアクセスしか有効化していない場合どうなるのか

Posted at

Bedrockに新しく、クロスリージョン推論の機能が追加されました。

ブログによると、まずプライマリーリージョンで処理を行い、トラフィックが集中などした場合はセカンダリーリージョンで推論が行われるとのことです。

やってみる

Claude 3.5 Sonnetを使います。

私のAWSアカウントでは、バージニア北部(us-east-1)リージョンでのみモデルの有効化を行っており、オレゴン(us-west-2)リージョンではモデルの有効化を行っておりません。

この状態で、色々条件を変えて呼び出します。

バージニア北部を指定して呼び出し

以下のコードで試しました。
model_idの指定が変わっています。クロスリージョン推論用のモデルID(Inference profile IDが正式名称らしいです)が用意されています。ドキュメント

その部分の指定以外はこれまでと変わりありません。

モデルが有効化されているバージニア北部リージョンを明示的に指定して呼び出します。

import boto3

model_id = "us.anthropic.claude-3-5-sonnet-20240620-v1:0"
region = "us-east-1"
client = boto3.client("bedrock-runtime", region_name=region)

response = client.converse(
    modelId=model_id,
    system=[{"text": "You are an AI assistant."}],
    messages=[{"role": "user", "content": [{"text": "Tell me about Amazon Bedrock."}]}],
)

print(response["output"]["message"]["content"][0]["text"])
回答

Amazon Bedrock is a fully managed service offered by Amazon Web Services (AWS) that provides access to foundation models (FMs) from leading AI companies through a single API. Here are some key points about Amazon Bedrock:

  1. Model Access: It offers access to a variety of foundation models from AI companies like AI21 Labs, Anthropic, Stability AI, and Amazon's own models.

  2. Customization: Users can customize these models for their specific use cases without needing to build and train their own models from scratch.

  3. Integration: It can be easily integrated with other AWS services and tools.

  4. Security and Privacy: Amazon Bedrock provides enterprise-grade security, privacy, and responsible AI capabilities.

  5. API-based: Developers can access the models through a simple API, making it easier to incorporate AI capabilities into their applications.

  6. Cost-effective: Users only pay for what they use, without upfront commitments or minimum fees.

  7. Use Cases: It can be used for various applications such as content generation, summarization, classification, question-answering, and more.

  8. No Infrastructure Management: As a fully managed service, users don't need to worry about infrastructure management.

  9. Model Fine-tuning: It allows for fine-tuning of models on proprietary data to improve performance for specific tasks.

  10. Responsible AI: Amazon Bedrock includes features to help ensure responsible use of AI, including bias detection and mitigation tools.

Amazon Bedrock aims to make it easier for businesses to leverage powerful AI models without the need for extensive machine learning expertise or infrastructure management.

うまくいきました。

オレゴンリージョンを指定した場合

region = "us-west-2"に変更して再実行すると、エラーになりました。

An error occurred (AccessDeniedException) when calling the Converse operation: You don't have access to the model with the specified model ID.

100回試しましたが、すべて同じエラーでした。

ブログを再度確認したところ、「まず、プライマリーリージョンで処理を試みて、トラフィック集中などがあった場合に他のリージョンにルーティングする」とありました。

そのため、プライマリーリージョンのモデルが有効化されていない場合、処理が行えず、セカンダリリージョンにルーティングすることなくエラーとなるようです。

バージニア北部リージョンを指定して連続アクセス

バージニア北部リージョンからの呼び出しの場合で、プライマリーリージョンでエラー発生時はどのような動作となるのでしょうか?

以下のコードで試しました。

import boto3

model_id = "us.anthropic.claude-3-5-sonnet-20240620-v1:0"
region = "us-east-1"
client = boto3.client("bedrock-runtime", region_name=region)

for n in range(10):
    try:
        response = client.converse(
            modelId=model_id,
            system=[{"text": "You are an AI assistant."}],
            messages=[{"role": "user", "content": [{"text": "Tell me about Amazon Bedrock."}]}],
        )

        print(response["output"]["message"]["content"][0]["text"])
    except Exception as e:
        print(e)

発生するエラーはすべて、以下のものでした。

An error occurred (ThrottlingException) when calling the Converse operation (reached max retries: 4): Too many requests, please wait before trying again. You have sent too many requests. Wait before trying again.

プライマリーリージョンでスロットリングが発生しても、他のリージョンで利用できるものがないので、最終的にスロットリングエラーとなりました。(オレゴン指定の場合のAccessDeniedExceptionになることはありませんでした。)

東京リージョン指定で呼べるの?

クロスリージョンなので、どこからでも呼べそうな雰囲気を感じます。
boto3.clientの明示的に「ap-northeast-1」を指定してみました。

import boto3

model_id = "us.anthropic.claude-3-5-sonnet-20240620-v1:0"
region = "ap-northeast-1"
client = boto3.client("bedrock-runtime", region_name=region)

response = client.converse(
    modelId=model_id,
    system=[{"text": "You are an AI assistant."}],
    messages=[{"role": "user", "content": [{"text": "Tell me about Amazon Bedrock."}]}],
)

print(response["output"]["message"]["content"][0]["text"])

botocore.errorfactory.ValidationException: An error occurred (ValidationException) when calling the Converse operation: Your account is not authorized to invoke this API operation.

エラーになりました。エラーメッセージは「あなたのアカウントはだめよ」的ですが、クロスリージョンに含まれるリージョンから呼び出す必要がありそうです。

バージニア北部のOpusを使う

Opusが提供されているリージョンはオレゴンのみでしたが、モデル一覧を見ると、クロスリージョン推論用途でのみ、バージニア北部リージョンが使える雰囲気です。

最後に以下のコードで、バージニア北部のOpusが呼び出されることがあるか検証します。

import boto3

model_id = "us.anthropic.claude-3-opus-20240229-v1:0"
region = "us-west-2"
client = boto3.client("bedrock-runtime", region_name=region)

for n in range(3):
    try:
        response = client.converse(
            modelId=model_id,
            system=[{"text": "You are an AI assistant."}],
            messages=[{"role": "user", "content": [{"text": "Tell me about Amazon Bedrock."}]}],
        )

        print(response["output"]["message"]["content"][0]["text"])
    except Exception as e:
        print(e)

残念ながらスロットリングエラーになりました。

An error occurred (ThrottlingException) when calling the Converse operation (reached max retries: 4): Too many requests, please wait before trying again. You have sent too many requests. Wait before trying again.
An error occurred (ThrottlingException) when calling the Converse operation (reached max retries: 4): Too many requests, please wait before trying again. You have sent too many requests. Wait before trying again.
An error occurred (ThrottlingException) when calling the Converse operation (reached max retries: 4): Too many requests, please wait before trying again. You have sent too many requests. Wait before trying again.

もしかしたら、サポートに連絡して、バージニア北部のOpusを有効化する必要があるのかもしれません

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?