跳到正文
AWS Machine Learning Blog· Traci Lim·· 2 小时前精选AI 评分66

Amazon Bedrock 如何在泰国、马来西亚、新加坡、印度尼西亚和台湾通过全球跨区域推理访问 OpenAI GPT 模型

Accessing OpenAI GPT models on Amazon Bedrock with global cross-Region inference in Thailand, Malaysia, Singapore, Indonesia, and Taiwan

AI 导读

AWS Machine Learning Blog 介绍如何通过 Amazon Bedrock 的全球跨区域推理,在泰国、马来西亚、新加坡、印度尼西亚和台湾调用 GPT-6 Sol、GPT-6 Luna,以及仅从新加坡调用 GPT-6 Astra。

推荐理由

文章把跨区域推理的调用方式与 IAM、SCP 配置、配额和监控串联起来,呈现了在 AWS 环境接入 GPT-6 的实操路径。

正文 · AI 翻译

当需求超过本地容量时,单区域推理可能会受到限流。泰国、马来西亚、新加坡、印度尼西亚和台湾的团队需要获得超出该容量限制的最新 OpenAI 模型。Amazon Bedrock通过全球跨区域推理,在上述五个 AWS 区域提供 OpenAI GPT-6 Sol 和 GPT-6 Luna,并在亚太地区(新加坡)提供 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 系列提供三款模型,均可通过全球跨区域推理使用。

  • GPT-6 Sol 为贯穿一周的复杂任务提供强大的推理和编码能力。
  • GPT-6 Luna 让高容量下执行专注、可重复的任务变得切实可行。
  • GPT-6 Astra 可处理复杂推理、编码和长文档任务。

这三款模型均支持文本和图像输入、客户端工具调用及提示缓存。它们在推理力度方面有所不同。GPT-6 Sol 和 GPT-6 Luna 支持 none、low、medium、high、xhigh 和 max。GPT-6 Astra 支持相同级别,但不包括 none。有关 GPT-6 Sol 和 GPT-6 Luna 的信息,请参阅借助 Amazon Bedrock 上的 GPT-6 Sol 和 GPT-6 Luna,让日常工作更智能。有关 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。有关每个 token 的费率,请参阅Amazon Bedrock 定价。

在 Amazon Bedrock 上开始使用 OpenAI 模型

先完成前提条件,然后通过 Converse API、OpenAI 兼容 API 或现有的代码客户端调用这三个配置文件中的任意一个。

前提条件

  1. 具有调用该配置文件权限的 IAM 身份。Security and permissions(安全与权限)部分中的 IAM policy 仅授予这些示例所需的权限。
  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 控制台会在系统定义的推理配置文件下列出全部三个全局跨区域推理配置文件。请参见图 1。

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

图 1:Amazon Bedrock 控制台的系统定义配置文件中列出的三个全局 OpenAI GPT-6 推理配置文件

通过 Amazon Bedrock Runtime 调用 GPT-6 模型

每个模型都支持通过此端点使用三种访问方式:Amazon Bedrock Converse API、OpenAI Responses API 和 OpenAI Chat Completions API。OpenAI 兼容 API 通过 /openai/v1 路径调用,而不是通过 AWS SDK 调用;该端点接受 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。
  • 直接在客户端中配置推理配置文件 ID,而不要查询 models 端点。

设置 ChatGPT 桌面应用和 Codex CLI

ChatGPT 桌面应用和 Codex CLI 共用 ~/.codex/config.toml,因此只需更改一处即可同时配置二者。两个内置 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。将 model 替换为其他配置文件 ID 即可更改模型。

Codex 显示这些配置文件的上下文窗口为 272,000 个令牌;这是它自身附带的数值,并非服务限制。使用 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 提供多种推理控制措施,其中有两项与此相关。AWS Identity and Access Management (IAM) policy 控制哪些角色可以调用哪些配置文件;service control policy (SCP) 则应用组织范围的控制措施,包括区域范围。本节将介绍这两者,以及请求数据的落盘位置。

全局跨区域推理的 IAM 权限

要通过全局跨区域推理配置文件调用这些模型中的任意一个,您的 IAM policy 需要包含四条语句:

  1. 在源区域访问推理配置文件和项目/默认资源。
  2. 在源区域访问基础模型,访问范围限定为推理配置文件。
  3. 基础模型的区域无关 Amazon 资源名称 (ARN),arn:aws:bedrock:::foundation-model/openai.gpt-6-sol,其中 aws:RequestedRegion 设置为 unspecified,以允许跨区域路由。
  4. bedrock:CallWithBearerToken 用于 API 密钥身份验证。

此 IAM policy 授予从 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),请将 bedrock:InvokeModelWithResponseStream 添加到前三条语句中的 Action。Converse 使用 bedrock:InvokeModel 进行授权。如果您仅使用 SigV4 凭证调用 Converse,请删除第四条语句。

要切换模型,请将全文中的 openai.gpt-6-sol 替换为 openai.gpt-6-luna 或 openai.gpt-6-astra。完整参考信息请参阅 全球跨区域推理的 IAM policy 要求。

全球跨区域推理的服务控制策略注意事项

全球跨区域推理请求不包含区域名称。Amazon Bedrock 会将 aws:RequestedRegion 设置为 unspecified,因此 SCP 中的区域允许列表会拒绝该调用,而且错误只会指出策略类型,不会说明具体是哪条策略。这是企业账户首次调用失败的常见原因。

与其扩大允许列表,不如限定例外范围。Amazon Bedrock 会在授权期间填充 bedrock:InferenceProfileArn 条件键,因此 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 推理以外的所有服务强制执行您的区域允许列表。第二条语句禁止在这些区域之外进行该推理,除非请求通过全球跨区域推理配置文件路由。对于地理区域配置文件,请将其前缀(例如 inference-profile/us.*)添加到 ArnNotLike 列表中,因为地理区域请求会携带真实的区域名称。将源区域保留在允许列表中,并将组织使用的全球服务添加到 NotAction。

更简单但限制较少的替代方案是将 unspecified 添加到现有允许列表中。这样做虽然有效,但会将同一例外开放给所有其他服务。可直接使用的策略文件请参阅 aws-samples service-control-policy-examples 存储库。

数据保留与滥用检测

对于自动离线滥用检测,经分类器标记的流量会由 AWS 保留最多 30 天,并以编程方式处理。在跨区域推理中,这些数据会保留在目标区域;对于全球配置文件,目标区域可以是部署了该模型的任何受支持的 AWS 商业区域。符合条件的客户可以通过其 AWS 客户团队申请完全零数据保留。更多信息请参阅 Amazon Bedrock 滥用检测和数据保留。

如果您的组织有数据驻留要求,请尽早与风险和合规团队讨论此事。有关这五个国家/地区的信息,请参阅 AWS Financial Services Compliance Center 的国家/地区页面。我们建议您就遵守与您的业务相关的要求寻求独立意见。

配额管理

bedrock-runtime 上的 GPT-6 配额以每分钟令牌数 (TPM) 计量,并根据您发起调用的源区域进行跟踪。输入令牌和缓存写入令牌按 1:1 计数,每个输出令牌会消耗 10 个配额令牌。例如,一个包含 2,000 个输入令牌和 1,000 个输出令牌的请求会消耗 12,000 个配额令牌。

Amazon Bedrock 会预先预留完整的 max_tokens,因此请将其设置为接近您预期的补全请求量。一个配额涵盖 InvokeModel、Converse、Responses 和 Chat Completions。请在源区域的 Service Quotas 控制台中查看并提高该配额。在生产环境使用前,请尽早申请提高配额,并在 AWS/Bedrock 命名空间中,当 EstimatedTPMQuotaUsage 达到您分配量的 70–80% 时设置告警。有关当前值,请参阅 Amazon Bedrock 中的令牌计数方式和 Amazon Bedrock 端点和配额。

监控和日志记录

您的运维界面始终位于源区域。 Amazon CloudWatch 指标、AWS CloudTrail 事件、模型调用日志、配额统计和账单都保留在您发起调用的区域中。您支付的是该区域的费率,而不是处理区域的费率。

CloudTrail 会记录每个请求在哪个区域处理。 AWS 将全局跨区域推理配置文件的目标记录为其商业区域,而不是逐一列出这些区域。GetInferenceProfile 返回与区域无关的模型 ARN 和源区域模型 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。提高 --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 Coding Agent Insights 会在 GenAI Observability 下提供现成的控制面板,按用户、团队和成本中心细分令牌使用量。代理原生发出 OpenTelemetry 指标。对于 Codex,请参阅 为 OpenAI Codex 设置 OpenTelemetry。

清理

本文添加了 IAM policy,以及可选的 SCP statement 和日志记录目标。请分离或删除您附加的 IAM policy;如果添加了 SCP 条目,请将其恢复。如果创建了模型调用日志记录目标,请在 Amazon Simple Storage Service(Amazon S3)或 Amazon CloudWatch Logs 中将其删除,以避免产生存储费用。全局跨区域推理配置文件由系统定义,因此无需删除任何内容。

结论

本文介绍了如何通过 bedrock-runtime 上的全局跨区域推理,从五个亚太源区域调用 GPT-6 Sol 和 GPT-6 Luna,以及从亚太地区(新加坡)调用 GPT-6 Astra。将全局跨区域推理配置文件 ID 作为 model 参数传入,并配置本文中的 IAM policy 和 SCP exception。同一端点提供与 OpenAI 兼容的 API,因此只需更改基本 URL 和密钥,现有的 OpenAI 集成即可迁移。

如需开始使用,请附加本文中的 IAM policy,并通过 global.openai.gpt-6-sol 发送第一个请求。按照 10 倍消耗速率设置每分钟令牌数配额,并在 CloudTrail 中确认您的调用中出现了 additionalEventData.inferenceRegion。

如需更多信息,请参阅 Amazon Bedrock 用户指南、使用跨区域推理跨 AWS 区域路由模型推理请求和 Amazon Bedrock 定价。


作者简介

Traci Lim

Traci Lim

Traci 是 AWS 驻新加坡的高级 AI/ML 专家技术客户经理。他是一名机器学习工程师,与初创企业和大型企业合作,将 AI/ML 应用投入生产并实现规模化,重点关注 GenAIOps、智能体运维、卓越运营以及成本和性能优化。在加入 AWS 之前,Traci 曾在科技和金融行业领导工程团队,在 AWS、Azure、GCP 和 SAP 上扩展分布式 AI 系统。他本质上是一名构建者,始终在寻找通过技术创造有意义影响的方式。

Karan Jhaveri

Karan Jhaveri

Karan 是 AWS 驻新加坡的高级技术客户经理。他与公共部门和企业客户合作,帮助他们将生成式 AI 从实验阶段大规模投入生产。他喜欢亲自参与,深入细节并构建能够解决实际运营问题的解决方案。

Melanie Li

Melanie Li

Melanie 博士是 AWS 驻澳大利亚悉尼的高级生成式 AI 专家解决方案架构师,主要负责与客户合作,使用最先进的 AI/ML 工具构建解决方案。她一直积极参与亚太及日本地区的多项生成式 AI 计划,充分发挥 LLM 的力量。在加入 AWS 之前,Li 博士曾在金融和零售行业担任数据科学职务。

Zohreh Norouzi

Zohreh Norouzi

Zohreh 是 Amazon Web Services (AWS) 的高级安全解决方案架构师。她帮助客户做出良好的安全选择,并加快其迁移到 AWS 云的进程。她一直积极参与 AI 安全计划,利用自身专业知识帮助客户大规模构建安全的 AI 解决方案。

Saurabh Trikande

Saurabh Trikande

Saurabh 是 Amazon Bedrock 和 Amazon SageMaker Inference 的高级产品经理。他热衷于与客户和合作伙伴合作,并以实现 AI 普惠化为目标。他专注于部署复杂 AI 应用、使用多租户模型进行推理、成本优化,以及让生成式 AI 模型的部署更加易于使用等核心挑战。在业余时间,Saurabh 喜欢徒步旅行、了解创新技术、关注 TechCrunch 以及陪伴家人。

Chris Dickens

Chris Dickens

Chris 是 OpenAI 的产品团队成员,专注于 OpenAI API。他的工作包括与 AWS 合作开发 Amazon Bedrock,让开发者能够广泛使用 OpenAI 的前沿模型。

来源:AWS Machine Learning Blog · aws.amazon.com