AWS Machine Learning

タイ、マレーシア、シンガポール、インドネシア、台湾におけるグローバルクロスリージョン推論で Amazon Bedrock 上の OpenAI GPT モデルにアクセスする

シンガポール、ジャカルタ、タイ、マレーシア、台北からのグローバルクロスリージョン推論を通じて、Amazon Bedrock 上で OpenAI GPT-6 Sol、Luna、Astra を実行する方法を学びます。この投稿では、Converse API と OpenAI 互換 API、IAM および SCP の権限、クォータのサイジング、ソースリージョンからの推論のモニタリングについて取り上げます。

The three global OpenAI GPT-6 inference profiles among the system-defined profiles in the Amazon Bedrock console.
画像の出典 · AWS Machine Learning

単一リージョンの推論は、需要がローカルの容量を超えると抑制される可能性があります。タイ、マレーシア、シンガポール、インドネシア、台湾のチームは、その容量を超えて最新のOpenAIモデルにアクセスする必要があります。 Amazon Bedrock OpenAI GPT-6 Sol および GPT-6 Luna を、5 つの AWS リージョンすべてからのグローバルクロスリージョン推論で利用できるようにし、さらに GPT-6 Astra をアジアパシフィック (シンガポール) から利用できるようにしています。この記事では、呼び出しの設定、アクセス許可の設定、およびソースリージョンから推論をモニタリングする方法を紹介します。

GPT-6 Sol、GPT-6 Luna、およびGPT-6 Astraは、上記のリージョンからのグローバルなクロスリージョン推論により、すべてご利用いただけます。 bedrock-runtime エンドポイント。参照: クロスリージョン推論 Amazon Bedrockユーザーガイドに記載されています。各プロファイルのソースリージョンおよび送信先リージョンの完全なリストについては、次を参照してください。 推論プロファイルの対応リージョンとモデル.

この記事では、グローバルクロスリージョン推論プロファイルを紹介し、Converse API、OpenAI互換API、コーディングクライアントを使用してアジアパシフィック(シンガポール)から呼び出します。続いて、 AWS Identity and Access Management (IAM)およびサービスコントロールポリシー(SCP)の設定、クォータ管理、モニタリングです。

OpenAI GPT-6向けのグローバルクロスリージョン推論プロファイル

GPT-6ファミリーは3つのモデルを提供し、それぞれグローバルクロスリージョン推論を通じて利用できます。

  • GPT-6 Solは、週を通じて行われる複雑なタスクに強力な推論能力とコーディング能力をもたらします。
  • GPT-6 Lunaは、焦点を絞った反復可能なタスクを大量に実用的にこなせるようにします。
  • GPT-6 Astraは複雑な推論、コーディング、長文ドキュメントの作業を処理します。

3つすべてがテキストと画像の入力、クライアントサイドのツール使用、プロンプトキャッシングに対応しています。異なるのは推論の労力の設定です。GPT-6 SolとGPT-6 Lunaはnone、low、medium、high、xhigh、maxを受け付けます。GPT-6 Astraはnoneを除く同じレベルを受け付けます。GPT-6 SolとGPT-6 Lunaについては、次を参照してください GPT-6 Sol と GPT-6 Luna を Amazon Bedrock で利用し、日々の仕事により多くの知能をもたらしましょう。GPT-6 Astraについては、 Amazon Bedrock 上の GPT-6 Astra で最も野心的な仕事に取り組みましょう.

グローバルクロスリージョン推論は、モデルがデプロイされているサポート対象の商用AWSリージョン全体にリクエストをルーティングし、Amazon Bedrockのキャパシティへの幅広いアクセスを提供します。モデルIDの代わりにグローバルクロスリージョン推論プロファイルIDを渡すことで呼び出します。ソースリージョンとは、API呼び出しを行うリージョンのことです。処理のための宛先リージョンはAmazon Bedrockが選択します。課金、クォータトラッキング、AWS CloudTrail、Amazon CloudWatchはすべてソースリージョンに保持されます。

以下の表に、本投稿で取り上げるグローバルクロスリージョン推論プロファイルIDと対象となるソースリージョンを示します。

グローバル・リージョン間推論プロファイル 発生源地域 目的地地域

global.openai.gpt-6-sol

global.openai.gpt-6-luna

アジアパシフィック(シンガポール)ap-southeast-1

アジアパシフィック (ジャカルタ) ap-southeast-3

アジアパシフィック (マレーシア) ap-southeast-5

アジアパシフィック (タイ) ap-southeast-7

アジアパシフィック (台北) ap-east-2

モデルがデプロイされている、サポート対象の商用 AWS リージョン
global.openai.gpt-6-astra アジアパシフィック (シンガポール) ap-southeast-1 モデルがデプロイされている、サポート対象の商用 AWS リージョン

推論プロファイルの利用可能性とリージョンサポートは、AWS がリージョンやプロファイルを追加するにつれて変化するため、構築を始める前にモデルカードで両方を確認してください: GPT-6 Sol, GPT-6 Luna、および GPT-6 Astra。トークンあたりの料金については、 Amazon Bedrock の料金.

Amazon Bedrock での OpenAI モデルの使用開始

前提条件を確認したうえで、Converse API、OpenAI 互換 API、または既存のコーディングクライアントを通じて、3 つのプロファイルのいずれでも呼び出すことができます。

前提条件

  1. プロファイルを呼び出す権限を持つ IAM アイデンティティ。「Security and permissions」セクションの IAM ポリシーは、これらの例に必要な最小限の権限のみを付与します。
  2. 呼び出し元のソースリージョンが有効化されていること。有効化が必要なのは、呼び出しを行うリージョンのみです。宛先リージョンは Amazon Bedrock のマネージドキャパシティ上で実行されるため、有効化は不要です。シンガポール(ap-southeast-1)はデフォルトで有効になっているリージョンです。ジャカルタ(ap-southeast-3)、マレーシア(ap-southeast-5)、タイ(ap-southeast-7)、台北(ap-east-2)は、事前に有効化が必要なオプトインリージョンです。詳細については、 アカウントでの AWS リージョンの有効化または無効化.
  3. を参照してください。最新の AWS SDK または CLI。OpenAI 互換の例では、さらに OpenAI SDK と Amazon Bedrock トークンジェネレーターが必要です。以下のコマンドでインストールしてください。 pip install boto3 openai aws-bedrock-token-generator.

Amazon Bedrock コンソールには、3 つのグローバルクロスリージョン推論プロファイルがすべて、システム定義の推論プロファイルの下に表示されます。図 1 を参照してください。

The three global OpenAI GPT-6 inference profiles among the system-defined profiles in the Amazon Bedrock console.

図 1: Amazon Bedrock コンソールのシステム定義プロファイルの中に表示される 3 つのグローバル OpenAI GPT-6 推論プロファイル

Amazon Bedrock Runtime を通じた GPT-6 モデルの呼び出し

各モデルは、このエンドポイント上で 3 つのアクセスパスをサポートしています。Amazon Bedrock Converse API、OpenAI Responses API、OpenAI Chat Completions API です。OpenAI 互換 API は AWS SDK ではなく /openai/v1 パスを通じて呼び出され、エンドポイントは Signature Version 4 (SigV4) または Amazon Bedrock API キーのいずれかを受け付けます。いずれの場合も、グローバルクロスリージョン推論プロファイル ID を model として渡します。

Converse API。 この例では、アジアパシフィック(シンガポール)から GPT-6 Sol を呼び出し、レスポンスをログに記録します。 BEDROCK_PROFILE_ID を global.openai.gpt-6-luna または global.openai.gpt-6-astra に設定してモデルを切り替えるか、ストリーミングには converse_stream を呼び出します。

import logging
import os
import boto3

# AWS_REGION overrides this default, so set it to your source Region or unset it.
REGION = os.environ.get("AWS_REGION", "ap-southeast-1")
PROFILE_ID = os.environ.get("BEDROCK_PROFILE_ID", "global.openai.gpt-6-sol")
PROMPT = (
    "In three bullet points, explain when a workload should use "
    "cross-Region inference instead of calling a model in a single Region."
)

logging.basicConfig(format="%(levelname)s %(message)s")
log = logging.getLogger("bedrock-cris")
log.setLevel(logging.INFO)

client = boto3.client("bedrock-runtime", region_name=REGION)

# AccessDeniedException points at the IAM policy. ValidationException usually
# means the model ID is not a global cross-Region inference profile.
response = client.converse(
    modelId=PROFILE_ID,
    messages=[{"role": "user", "content": [{"text": PROMPT}]}],
    inferenceConfig={"maxTokens": 1024},
    # GPT-6 Sol and Luna accept none through max. GPT-6 Astra rejects none.
    additionalModelRequestFields={"reasoning": {"effort": "low"}},
)

# Any effort above none can prepend a reasoningContent block, so pick the text
# block by key rather than by position.
text = "".join(b["text"] for b in response["output"]["message"]["content"] if "text" in b)

log.info("Called %s from %s", PROFILE_ID, REGION)
log.info("Stop reason: %s", response["stopReason"])
log.info("Response:\n%s", text)

OpenAI Chat Completions API。 OpenAI SDK をリージョン別エンドポイントに向け、同じプロファイル ID を渡します。

import logging
import os
from aws_bedrock_token_generator import provide_token
from openai import OpenAI

REGION = os.environ.get("AWS_REGION", "ap-southeast-1")
PROFILE_ID = os.environ.get("BEDROCK_PROFILE_ID", "global.openai.gpt-6-sol")
PROMPT = "List three uses for a message queue."

logging.basicConfig(format="%(levelname)s %(message)s")
log = logging.getLogger("bedrock-cris")
log.setLevel(logging.INFO)

# provide_token mints a short-term key from your AWS credentials, valid up to 12 hours.
client = OpenAI(
    base_url=f"https://bedrock-runtime.{REGION}.amazonaws.com/openai/v1",
    api_key=provide_token(region=REGION),
)

response = client.chat.completions.create(
    model=PROFILE_ID,
    messages=[{"role": "user", "content": PROMPT}],
    max_completion_tokens=256,
)

log.info("Called %s from %s", PROFILE_ID, REGION)
log.info("Response:\n%s", response.choices[0].message.content)

既存の OpenAI クライアントを移行する場合:

  • 以前のレスポンスを参照するリクエストを含め、すべてのリクエストで model パラメータを設定します。
  • サポートされているツールタイプを使用します: function, mcp, custom, namespace、および tool_search.
  • models エンドポイントをクエリするのではなく、推論プロファイル ID をクライアントに直接設定します。

ChatGPT デスクトップアプリと Codex CLI のセットアップ

ChatGPT デスクトップアプリと Codex CLI は ~/.codex/config.tomlを共有しているため、1 つの変更で両方に対応できます。2 つの組み込み Amazon Bedrock プロバイダーのうち、推論プロファイルを受け付けるのは amazon-bedrock-runtime のみです。

model = "global.openai.gpt-6-astra"
model_provider = "amazon-bedrock-runtime"
[model_providers.amazon-bedrock-runtime.aws]
region = "ap-southeast-1"

SigV4署名では、ローテーションすべきキーが存在しません。追加します profile = "<your-profile>" デフォルト以外のプロファイルの場合は、を、そして region を明示的に設定してください。そうしないとクライアントはフォールバックします AWS_REGION。別のプロファイルIDに置き換えて model モデルを変更できます。

Codexはこれらのプロファイルに対して272,000トークンのウィンドウを報告しますが、これはCodex自身がバンドルしている数値であり、サービスの上限ではありません。次のようにして引き上げます model_context_window。この設定にはCodex CLI 0.148以降が必要です。

図2はアプリでの実行結果を示しています。

The ChatGPT desktop app running GPT-6 Astra on Amazon Bedrock.

図2: Amazon Bedrock上でGPT-6 Astraを実行するChatGPTデスクトップアプリ

セキュリティとアクセス許可

Amazon Bedrockは推論に関する幅広いコントロールを提供します。このうち2つがここで重要です。AWS Identity and Access Management (IAM) ポリシーはどのロールがどのプロファイルを呼び出せるかを制御し、サービスコントロールポリシー (SCP) はリージョンの範囲を含む組織全体のコントロールを適用します。このセクションではその両方と、リクエストデータがどこに置かれるかを説明します。

グローバルクロスリージョン推論のためのIAMアクセス許可

これらのモデルをグローバルクロスリージョン推論プロファイル経由で呼び出すには、IAMポリシーに4つのステートメントが必要です。

  1. ソースリージョン内の推論プロファイルとプロジェクト/デフォルトリソースへのアクセス。
  2. 推論プロファイルにスコープされた、ソースリージョン内の基盤モデルへのアクセス。
  3. 基盤モデルのリージョン非依存のAmazonリソースネーム (ARN)、 arn:aws:bedrock:::foundation-model/openai.gpt-6-sol、 aws:RequestedRegion を unspecified に設定して、クロスリージョンルーティングを許可します。
  4. bedrock:CallWithBearerToken APIキー認証用。

このIAMポリシーは、グローバルクロスリージョン推論を通じてGPT-6 Solを呼び出す権限を付与します。対象は ap-southeast-1からグローバルクロスリージョン推論を通じてGPT-6 Solを呼び出す権限を付与します。お客様のAWSアカウントIDと ap-southeast-1 をお客様のソースリージョンに置き換えてください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "GrantGlobalCrisProfileAndProjectAccess",
      "Effect": "Allow",
      "Action": ["bedrock:InvokeModel"],
      "Resource": [
        "arn:aws:bedrock:ap-southeast-1:<ACCOUNT>:inference-profile/global.openai.gpt-6-sol",
        "arn:aws:bedrock:ap-southeast-1:<ACCOUNT>:project/default"
      ],
      "Condition": {
        "StringEquals": { "aws:RequestedRegion": "ap-southeast-1" }
      }
    },
    {
      "Sid": "GrantGlobalCrisInRegionModelAccess",
      "Effect": "Allow",
      "Action": ["bedrock:InvokeModel"],
      "Resource": ["arn:aws:bedrock:ap-southeast-1::foundation-model/openai.gpt-6-sol"],
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": "ap-southeast-1",
          "bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-southeast-1:<ACCOUNT>:inference-profile/global.openai.gpt-6-sol"
        }
      }
    },
    {
      "Sid": "GrantGlobalCrisGlobalModelAccess",
      "Effect": "Allow",
      "Action": ["bedrock:InvokeModel"],
      "Resource": ["arn:aws:bedrock:::foundation-model/openai.gpt-6-sol"],
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": "unspecified",
          "bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-southeast-1:<ACCOUNT>:inference-profile/global.openai.gpt-6-sol"
        }
      }
    },
    {
      "Sid": "AllowBearerTokenAuth",
      "Effect": "Allow",
      "Action": ["bedrock:CallWithBearerToken"],
      "Resource": "*"
    }
  ]
}

ストリーミング (converse_stream または stream=True) を使用する場合は、最初の3つのステートメントのActionに bedrock:InvokeModelWithResponseStream を追加してください。Converseは bedrock:InvokeModelとして認可されます。SigV4認証情報でのみConverseを呼び出す場合は、4番目のステートメントを削除してください。

モデルを切り替えるには、 openai.gpt-6-sol を openai.gpt-6-luna または openai.gpt-6-astra に置き換えます。完全なリファレンスについては、次を参照してください: グローバルクロスリージョン推論に必要なIAMポリシー.

グローバルクロスリージョン推論に関するサービスコントロールポリシー(SCP)の考慮事項

グローバルクロスリージョン推論のリクエストにはリージョン名が含まれません。Amazon Bedrockは aws:RequestedRegion を unspecifiedに設定するため、SCPのリージョン許可リストによってその呼び出しは拒否されますが、エラーにはポリシーの種類のみが示され、どのポリシーかは示されません。これは、エンタープライズアカウントで最初の呼び出しが失敗するよくある原因です。

許可リストを広げるのではなく、例外の適用範囲を限定してください。Amazon Bedrock は bedrock:InferenceProfileArn 認可時の condition キーとして機能するため、SCP はこれらのプロファイルを許可しつつ、それ以外についてはリージョン制御を維持できます。次の SCP はそのように動作します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyOutsideApprovedRegionsExceptBedrockInvoke",
      "Effect": "Deny",
      "NotAction": [
        "iam:*", "sts:*", "organizations:*", "account:*",
        "route53:*", "cloudfront:*", "waf:*", "wafv2:*", "shield:*",
        "support:*", "trustedadvisor:*", "health:*",
        "budgets:*", "ce:*", "cur:*", "tax:*", "billing:*",
        "bedrock:Invoke*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": { "aws:RequestedRegion": ["ap-southeast-1"] }
      }
    },
    {
      "Sid": "DenyBedrockInferenceOutsideApprovedRegionsUnlessCris",
      "Effect": "Deny",
      "Action": ["bedrock:Invoke*"],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": { "aws:RequestedRegion": ["ap-southeast-1"] },
        "ArnNotLike": {
          "bedrock:InferenceProfileArn": [
            "arn:aws:bedrock:*:*:inference-profile/global.*"
          ]
        }
      }
    }
  ]
}

最初のステートメントは、Amazon Bedrock の推論を除くすべてのサービスに対してリージョンの許可リストを強制します。2 番目のステートメントは、グローバルのクロスリージョン推論プロファイルを経由しない限り、それらのリージョン外での推論を拒否します。地理的プロファイルの場合は、そのプレフィックスを追加します(例: inference-profile/us.*) を ArnNotLike リストに含めてください。地理的なリクエストには実際のRegion名が含まれるためです。ソースのRegionを許可リストに残しつつ、組織が利用しているグローバルサービスを追加してください NotAction.

より直接的な代替策は、以下を追加することである unspecified 既存の許可リストに追加する方法でも機能しますが、同じ例外が他のすべてのサービスにも開かれてしまいます。すぐに使えるポリシーファイルについては、以下を参照してください。 aws-samples service-control-policy-examples リポジトリ.

データ保持と不正利用の検出

自動化されたオフラインでの不正使用検出のために、分類器によってフラグが付けられたトラフィックは、AWS により最大 30 日間保持され、プログラムによって処理されます。クロスリージョン推論では、この保持は宛先リージョンで行われます。グローバルプロファイルの場合、これはモデルがデプロイされている、サポート対象の任意の商用 AWS リージョンです。対象のお客様は、AWS のアカウントチームを通じて完全なゼロデータ保持をリクエストできる場合があります。詳細については、以下を参照してください。 Amazon Bedrock 不正利用検出 および データ保持.

組織にデータレジデンシー要件がある場合は、早めにリスクおよびコンプライアンスチームに相談してください。詳細は以下をご覧ください。 AWS Financial Services Compliance Center これら5か国の国別ページです。お客様のビジネスに関連する要件への準拠については、ご自身で専門家の助言を受けることをお勧めします。

クォータ管理

GPT-6の割り当て制限は bedrock-runtime は1分あたりのトークン数(TPM)で測定され、呼び出し元のソースリージョンに対して追跡されます。入力トークンとキャッシュ書き込みトークンは1対1でカウントされ、出力トークン1つにつき10トークンのクォータを消費します。たとえば、入力2,000トークンと出力1,000トークンを含むリクエストは、クォータから12,000トークンを消費します。

Amazon Bedrockは全 max_tokens 事前に設定するもので、予想される完了数に近い値を設定してください。1つの割り当て (quota) が InvokeModel, Converse、Responses、そして Chat Completions です。内容を確認し、 Service Quotasコンソール ソースリージョンから。本番環境の前に、リクエストの増加を早期に検知し、警告を出すようにしてください。 EstimatedTPMQuotaUsage の中で AWS/Bedrock namespaceを割り当ての70~80パーセントに抑えてください。See Amazon Bedrock におけるトークンの数え方 および Amazon Bedrock のエンドポイントとクォータ 現在の値を示します。

モニタリングとロギング

運用サーフェスはソースリージョン内に留まります。 Amazon CloudWatch のメトリクス、AWS CloudTrail のイベント、モデル呼び出しログ、クォータの計上、そして請求はすべて、呼び出し元のリージョン内に保持されます。支払うのは呼び出し元リージョンの料金であり、処理を行うリージョンの料金ではありません。

CloudTrail は各リクエストがどこで処理されたかを記録します。 AWSは、グローバルクロスリージョン推論プロファイルの接続先を個別に列挙するのではなく、商用リージョン全体としてドキュメントに記載しています。 GetInferenceProfile リージョンに依存しないモデルとソースリージョンのモデルARNを返し、宛先リストは返しません。リクエストごとの記録は次のとおりです。 additionalEventData.inferenceRegion ソースリージョンの CloudTrail に記録されます。このエンドポイントでの推論は管理イベントであり、追加コストなしでデフォルトで記録されます。CloudTrail のイベント履歴は 90 日間保持されるため、それより長い期間が必要な場合は証跡またはモデル呼び出しロギングが必要です。次のコマンドで CloudTrail イベントを取得できます。

aws cloudtrail lookup-events \
  --region ap-southeast-1 \
  --lookup-attributes AttributeKey=EventSource,AttributeValue=bedrock.amazonaws.com \
  --start-time <START> \
  --end-time <END> \
  --max-results 1 \
  --query 'Events[0].CloudTrailEvent' --output text | python3 -m json.tool

直近に実行した呼び出しの周辺で時間窓を設定してください。CloudTrailの配信には数分の遅れがあるためです。最新のイベントが失敗した呼び出しだった場合、そのイベントには次の情報が含まれています。 errorCode そして、〜もない inferenceRegion。Raise --max-results そして、含まれないイベントを選択しますが errorCode.

{
  "eventName": "Converse",
  "eventSource": "bedrock.amazonaws.com",
  "awsRegion": "ap-southeast-1",
  "managementEvent": true,
  "requestParameters": {
    "modelId": "global.openai.gpt-6-sol",
    "inferenceConfig": { "maxTokens": 1024 }
  },
  "additionalEventData": {
    "inferenceRegion": "us-east-1"
  }
}

メトリクスとコーディングエージェントの使用状況はCloudWatchに保存されたままです。 開発者がコーディングエージェント経由でGPT-6に到達する場所、CloudWatch コーディングエージェントのインサイト GenAI Observability 以下に、トークン使用量をユーザー、チーム、コストセンター別に分解できる既製のダッシュボードを追加します。エージェントは OpenTelemetry メトリクスをネイティブに出力します。Codex については、 OpenAI Codex 向けの OpenTelemetry をセットアップする.

クリーンアップ

この投稿では、IAM ポリシー、および必要に応じて SCP ステートメントとロギング宛先を追加します。アタッチした IAM ポリシーをデタッチまたは削除し、追加した場合は SCP エントリーを元に戻してください。でモデル呼び出しロギング宛先を削除します。 Amazon Simple Storage Service (Amazon S3) や作成していた場合は Amazon CloudWatch Logs も削除してください。ストレージ料金が発生しないようにするためです。グローバルのcross-Region推論プロファイルはシステム定義であるため、削除すべきものはありません。

結論

本投稿では、5つのアジア太平洋のソースリージョンから GPT-6 Sol と GPT-6 Luna を、またアジア太平洋 (シンガポール) から GPT-6 Astra を、グローバルなクロスリージョン推論によって呼び出す方法を紹介しました。 bedrock-runtime。グローバルクロスリージョン推論プロファイルIDを model パラメーターの設定、および本記事で説明するIAMポリシーとSCP例外を設定します。同じエンドポイントがOpenAI互換APIにも対応しているため、既存のOpenAI統合はベースURLとキーを変更するだけで移行できます。

始めるには、この記事のIAMポリシーをアタッチし、最初のリクエストを送信してください。 global.openai.gpt-6-sol「。トークンの毎分クォータを10倍のバーンダウンレートで設定し、CloudTrailで次のことを確認してください:」 additionalEventData.inferenceRegion あなたの通話に表示されます。

詳細については、以下を参照してください。 Amazon Bedrock ユーザーガイド, リージョン間推論でAWSリージョン全体にモデル推論リクエストをルーティングする、および Amazon Bedrock の料金.

 


著者について

原文の出典

AWS Machine Learning

内容について

原文の公開と権利は出典元に帰属します。

機械翻訳 · 原文をご参照ください