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

在 Amazon Bedrock 上通过全球跨区域推理访问 OpenAI GPT-6 模型

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

AI 导读

AWS 发布教程,介绍泰国、马来西亚、新加坡、印尼和台湾五个亚太区域如何通过全球跨区域推理在 Amazon Bedrock 上调用 OpenAI GPT-6 Sol、GPT-6 Luna 和 GPT-6 Astra。

推荐理由

原文给出在 Amazon Bedrock 上调用 GPT-6 系列的完整配置路径,包括 IAM 策略、SCP 例外与配额监控,可迁移到跨区域推理部署。

正文 · 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。有关每令牌费率,请参阅 Amazon Bedrock 定价。

在 Amazon Bedrock 上开始使用 OpenAI 模型

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

先决条件

  1. 具有调用该配置文件权限的 IAM 身份。安全与权限部分中的 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 控制台在系统定义的推理配置文件下列出了全部三个全局跨区域推理配置文件。参见图 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 个 token,这是它自己捆绑的数字,而不是服务限制。使用 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)策略控制哪些角色可以调用哪些配置文件,而服务控制策略(SCP)应用组织范围的控制,包括区域范围。本节涵盖这两者,以及请求数据落在何处。

全局跨区域推理的 IAM 权限

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

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

This IAM policy grants permission to invoke GPT-6 Sol through global cross-Region inference from ap-southeast-1. Replace with your AWS account ID and ap-southeast-1 with your source Region.

{
  "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),请在前三条语句的 Action 中添加 bedrock:InvokeModelWithResponseStream。Converse 授权为 bedrock:InvokeModel。如果您仅使用 SigV4 凭证调用 Converse,请删除第四条语句。

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

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

全局跨区域推理请求不携带区域名称。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 金融服务合规中心中这五个国家的页面。我们建议您就与您的业务相关的要求自行获取合规建议。

配额管理

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,而不是目标列表。你的每请求记录是源区域 CloudTrail 中的 additionalEventData.inferenceRegion。此终端节点上的推理属于管理事件,默认记录且不产生额外费用。CloudTrail Event History 保留 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 策略,并可选地添加了一个 SCP 语句和一个日志记录目标。请分离或删除你附加的 IAM 策略,如果你添加了 SCP 条目,请将其还原。如果你创建了模型调用日志记录目标,请在 Amazon Simple Storage Service(Amazon S3)或 Amazon CloudWatch Logs 中将其删除,以避免存储费用。全球跨区域推理配置文件是系统定义的,因此无需删除任何内容。

结论

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

要开始使用,请附加本文中的 IAM 策略,并通过 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、Agentic Ops、卓越运营以及成本和性能优化。在加入 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