AWS · ML 博客

在 AWS GovCloud (US) 的 Amazon Bedrock 上运行 NVIDIA Nemotron 和 OpenAI GPT OSS 模型

Run NVIDIA Nemotron and OpenAI GPT OSS models on Amazon Bedrock in AWS GovCloud (US)

二〇二六年七月七日 · 英文原文

AWS在AWS GovCloud (US)中推出OpenAI的开放权重GPT OSS模型(120B和20B)与NVIDIA Nemotron系列(Nano 9B v2、Nano 12B v2、Nano 30B、Super 120B),通过Amazon Bedrock提供无服务器推理。这些模型支持In-Region(us-gov-west-1)和Geo Cross-Region推理,数据驻留于美国境内并由美国公民管理。模型提供Standard、Priority、Flex服务层级,支持工具调用与128K token上下文窗口,满足FedRAMP High、DoD SRG等合规框架。

在 AWS GovCloud (US) 中运行工作负载的政府机构需要能够跟上商业领域步伐的 AI 能力。同时,它们不能牺牲其任务所需的安全和合规控制。随着开放权重基础模型(FM)从实验阶段进入任务系统,每个模型决策都受到两个要求的制约。首先,模型必须提供任务所需的能力。其次,推理环境必须满足机构的安全、合规和数据驻留义务。对于美国政府机构、国防和情报界及其服务承包商而言,这些要求没有商量余地。访问先进的开放权重模型对于情报分析、任务规划、采购和合同文件审查、安全日志分析以及合规自动化等工作至关重要。这种访问不能要求将敏感数据移出其管辖边界。我们很高兴地宣布,在 AWS GovCloud (US) 中推出基于美国的先进开放权重模型。通过此次发布,Amazon Bedrock 现在支持 OpenAI 的开放权重 GPT OSS 模型(120B 和 20B)以及 NVIDIA Nemotron(Nano 9B v2、Nano 12B v2、Nano 30B、Super 120B)模型。借助这些新模型,您可以使用多样化的高性能 FM 来构建和扩展生成式 AI 应用程序。这提供了灵活性,可以通过单一统一 API 使用 OpenAI 和 NVIDIA 的最新模型以及其他领先的 AI 模型。您可以使用此统一 API 为每个特定用例选择正确的模型,而无需更改应用程序代码。AWS GovCloud (US) 提供了一组隔离的 AWS 区域,旨在托管敏感数据和受监管的工作负载。这些区域物理上位于美国境内,并仅由美国公民管理。它们帮助客户满足包括 FedRAMP High(临时运营授权)和 DoD 云计算安全要求指南(SRG)影响级别 2、4 和 5 在内的合规框架。其他框架包括国际武器贸易条例(ITAR)和刑事司法信息服务(CJIS)。Amazon Bedrock 是一项完全托管的服务,用于访问来自独立模型提供商的 FM,推理完全在 AWS 运营的基础设施上运行。借助 Amazon Bedrock,推理在 AWS GovCloud (US) 隔离边界内、由美国公民在美国本土运营的基础设施上运行。有关 Amazon Bedrock 如何处理您的数据的详细信息,请参阅 Amazon Bedrock 中的数据保护。OpenAI 的开放权重 GPT OSS 模型和 NVIDIA Nemotron 开放权重模型现已在 AWS GovCloud (US) 的 Amazon Bedrock 上可用。此次发布将两个开放权重模型系列引入 AWS GovCloud (US) 区域:OpenAI gpt-oss-120b 和 gpt-oss-20b,以及 NVIDIA Nemotron 3 系列,包括 Nemotron 3 Super 120B 和 Nemotron 3 Nano 模型。借助这些模型,您可以构建代理应用程序和任务工作流,例如自动化安全控制评估、多文档情报综合、合同和采购分析以及策略合规性检查。所有这些都在 AWS GovCloud (US) 合规边界内运行。在本文中,我们将介绍目前在 AWS GovCloud (US) 中可用的模型及其功能、用于数据驻留的推理选项、可用的服务层级以及如何入门。

关于模型

本节介绍目前在 AWS GovCloud (US) 中可用的两个开放权重模型系列及其各自的特点。

NVIDIA Nemotron

NVIDIA Nemotron 系列提供小型语言模型(SLM)和大型语言模型(LLM)功能,专为专业代理 AI 系统的计算效率和准确性而构建。NVIDIA 对这两个模型的描述如下:

有关 AWS GovCloud (US) 中可用的 NVIDIA Nemotron 模型的完整列表,请参阅 Amazon Bedrock 上的 NVIDIA 模型。

OpenAI GPT OSS

OpenAI 的 GPT OSS 模型是开放权重的文本到文本模型,专为推理、代理和开发人员任务而设计,具有可调节的推理努力度并支持外部工具集成。本文重点介绍两个变体:

这两个模型都提供 128K token 的上下文窗口和高达 16K 的输出 token,并且都接受文本输入并生成文本输出。由于权重是开放的,组织可以独立评估模型架构,查看已发布的模型卡,并在代表性工作负载上运行自己的基准测试。对于政府团队而言,这种透明度支持组织风险评估,使客户安全团队能够在部署前评估模型行为,并与许多美国政府机构正在采用的零信任原则保持一致。有关 AWS GovCloud (US) 中可用的 OpenAI 模型的完整列表,请参阅 Amazon Bedrock 上的 OpenAI 模型。

合规边界内的无服务器推理

Amazon Bedrock 上的 NVIDIA Nemotron 和 GPT OSS 模型由 Amazon Bedrock 的下一代推理引擎提供服务。要理解架构,有助于区分引擎和端点:引擎是底层的服务基础设施,采用模型部署账户隔离和零操作员访问设计,而 bedrock-mantle 端点是应用程序调用以向引擎发送请求的 OpenAI 兼容 HTTPS API。对于机构而言,无需配置基础设施,无需管理 GPU,也无需模型部署专业知识。下一代推理引擎建立在零操作员访问设计之上。任何操作员,无论是来自 AWS、客户还是模型提供商,都无法访问客户数据,例如推理提示或补全。结合 AWS GovCloud (US) 隔离边界,这为政府团队提供了强大的数据保护基础。有关技术细节,请参阅探索 Mantle 的零操作员访问设计。

Amazon Bedrock 提供了两个用于调用这些模型的端点。bedrock-mantle 端点是用于下一代推理引擎的 OpenAI 兼容 API,因此您可以使用 OpenAI Python 和 TypeScript SDK 调用它。它使用 Chat Completions 和 Responses API。bedrock-runtime 端点通过 AWS SDK 使用 Converse 和 InvokeModel API,并可访问 Amazon Bedrock 的原生功能,例如 Guardrails。两者的代码示例均位于“入门”部分。

区域可用性和数据驻留

Amazon Bedrock 为您的推理请求处理位置提供了多种选择。In-Region 将每个请求保留在单个区域内,而 Geographic Cross-Region 推理则在地理区域内的区域之间路由请求以获得更高吞吐量,因此您的数据将保留在该地理边界内。对于 AWS GovCloud (US) 中的 NVIDIA Nemotron 和 GPT OSS 模型,选项如下:

这些模型的所有推理都保持在 AWS GovCloud (US) 边界内。Global Cross-Region 推理(在全球商业 AWS 区域之间路由请求)在 AWS GovCloud (US) 中不可用。您可以根据需求在单区域和 Geo 跨区域之间进行选择。

服务层级

Amazon Bedrock 提供多个服务层级以满足不同的工作负载需求。对于所有三个模型,均支持 StandardPriorityFlex 层级。

服务层级 描述 支持
Standard 按 token 付费,无需承诺
Priority 为延迟敏感的流量提供更高吞吐量
Flex 为灵活、非时间敏感的工作负载提供低成本访问
Reserved 具有期限承诺的专用吞吐量 目前不可用

默认情况下,请求使用 Standard 层级的按需推理,您按 token 付费,无需预先预留容量。对于延迟敏感的、面向客户的工作负载,您可以将单个请求路由到 Priority 层级。对于非时间敏感的工作,例如模型评估或批量摘要,Flex 层级提供了成本更低的选项。有关扩展指南以及如何处理生产量级的节流,请参阅扩展和吞吐量最佳实践以及“入门”部分。

在 AWS GovCloud (US) 中入门

本节将引导您调用模型,从推荐的 bedrock-mantle 端点开始。示例使用 us-gov-west-1 区域,该区域提供区域内推理。

控制台 Playground

  1. 导航到您的 AWS GovCloud (US) 账户中的 Amazon Bedrock 控制台。
  2. 从左侧菜单的“测试”部分下选择 Playground
  3. 选择 Select model
  4. 从类别列表中选择提供商(NVIDIAOpenAI),然后选择模型(例如,NVIDIA Nemotron 3 Super120B gpt-oss-120b)。
  5. 选择 Apply 加载模型。
  6. 输入提示以测试模型。

使用 bedrock-mantle 端点(推荐)

要使用这些模型,您需要一个具有调用 Amazon Bedrock 模型权限的 AWS GovCloud (US) 中的 AWS 账户。对于 bedrock-mantle 端点,您需要一个 Amazon Bedrock API 密钥或标准 AWS 凭证。以下是示例策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BedrockMantleInference",
      "Effect": "Allow",
      "Action": [
        "bedrock-mantle:CreateInference",
        "bedrock-mantle:Get*",
        "bedrock-mantle:List*"
      ],
      "Resource": "arn:aws-us-gov:bedrock-mantle:us-gov-west-1:111122223333:project/*"
    },
    {
      "Sid": "BedrockMantleCallWithBearerToken",
      "Effect": "Allow",
      "Action": "bedrock-mantle:CallWithBearerToken",
      "Resource": "*"
    }
  ]
}

111122223333 替换为您的 AWS 账户 ID,并将区域范围限定为您使用的 AWS GovCloud (US) 区域。本文中的代码示例使用 Bedrock API 密钥进行身份验证,这需要 bedrock-mantle:CallWithBearerToken 权限。此操作必须限定范围为 "Resource": "*",如第二个语句所示。要控制哪些身份可以生成或使用 Amazon Bedrock API 密钥,请参阅控制生成和使用 Amazon Bedrock API 密钥的权限。要将您的组织限制为仅使用批准的模型,请使用服务控制策略(SCP)。

以下示例使用 OpenAI Python SDK 调用 bedrock-mantle 端点。对于生产工作负载,请使用短期 API 密钥,这些密钥会自动过期(最长 12 小时)并继承生成它们的 IAM 角色的权限。

import boto3
from openai import OpenAI

# Retrieve the Bedrock API key from AWS Secrets Manager
secrets_client = boto3.client("secretsmanager", region_name="us-gov-west-1")
api_key = secrets_client.get_secret_value(SecretId="bedrock-api-key")["SecretString"]

client = OpenAI(
    # Use the AWS GovCloud (US) Region in the base URL, e.g. us-gov-west-1
    base_url="https://bedrock-mantle.us-gov-west-1.api.aws/v1",
    api_key=api_key,
)

response = client.chat.completions.create(
    model="openai.gpt-oss-120b",
    messages=[
        {"role": "user", "content": "Explain the benefits of open-weight models for regulated workloads."}
    ],
    reasoning_effort="medium",  # low | medium | high
    max_completion_tokens=512,
)

print(response.choices[0].message.content)

注意: 这些示例从 AWS Secrets Manager 检索 Bedrock API 密钥。对于本地开发,您可以改为从环境变量读取密钥,但在生产中避免这种模式。请使用 AWS Secrets Manager 或其他密钥存储。

要改为调用 NVIDIA Nemotron 3 Super 120B,请将 model 参数更改为 nvidia.nemotron-super-3-120b 并移除 reasoning_effort 参数(推理努力度控制特定于 GPT OSS)。无需其他代码更改。

控制推理努力度

GPT OSS 模型是推理模型,公开了可调节的推理努力度。在 Chat Completions 调用中设置 reasoning_effort 参数为 lowmediumhigh,以在响应延迟和推理深度之间进行权衡。对于高容量、延迟敏感的流量使用 low,对于复杂的多步骤推理或代理规划使用 high。对于推理模型,优先使用 max_completion_tokens 来限制响应长度(仍接受较旧的 max_tokens 字段)。

使用 Responses API

除了 Chat Completions,GPT OSS 模型还支持 Responses API,这是 OpenAI 用于推理风格交互的接口。它接受单个输入而不是消息数组。NVIDIA Nemotron 3 Super 120B 不支持 Responses API。对该模型使用 Chat Completions、Converse 或 Invoke。

import boto3
from openai import OpenAI

# Retrieve the Bedrock API key from AWS Secrets Manager
secrets_client = boto3.client("secretsmanager", region_name="us-gov-west-1")
api_key = secrets_client.get_secret_value(SecretId="bedrock-api-key")["SecretString"]

client = OpenAI(
    base_url="https://bedrock-mantle.us-gov-west-1.api.aws/v1",
    api_key=api_key,
)

response = client.responses.create(
    model="openai.gpt-oss-120b",
    input="Explain the benefits of open-weight models for regulated workloads.",
)

print(response)

流式响应

对于希望在生成 token 时将其展示给用户的聊天和代理用例,请设置 stream=True。响应变为增量 delta 事件的迭代器:

stream = client.chat.completions.create(
    model="openai.gpt-oss-120b",
    messages=[
        {"role": "user", "content": "Write a short summary of mixture-of-experts architectures."}
    ],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)
print()

bedrock-runtime 端点上,等效功能需要 bedrock:InvokeModelWithResponseStream 权限,稍后显示的最低权限策略已授予该权限。

工具调用

NVIDIA Nemotron 和 GPT OSS 开放权重模型专为代理工作流而设计,使其可用于工具调用场景。在工具调用工作流中,您定义模型可以调用的函数(工具),模型根据用户请求决定何时调用它们,您的应用程序运行该函数并返回结果,供模型整合到其最终响应中。以下示例端到端地演示了此模式。我们定义一个 get_weather 工具,发送用户消息,让模型请求工具调用,使用模拟数据运行函数,并将结果传回,以便模型生成自然语言答案。

import json
import boto3
from openai import OpenAI

# Retrieve the Bedrock API key from AWS Secrets Manager
secrets_client = boto3.client("secretsmanager", region_name="us-gov-west-1")
api_key = secrets_client.get_secret_value(SecretId="bedrock-api-key")["SecretString"]

client = OpenAI(
    base_url="https://bedrock-mantle.us-gov-west-1.api.aws/v1",
    api_key=api_key,
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a given location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "City and country (e.g., Seattle, US)"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "Temperature unit"
                    }
                },
                "required": ["location"]
            }
        }
    }
]

# Step 1: Send the user request with tool definitions
messages = [
    {"role": "user", "content": "What's the weather like in Seattle?"}
]

response = client.chat.completions.create(
    model="openai.gpt-oss-120b",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

assistant_message = response.choices[0].message

# Step 2: Check if the model wants to call a tool
if assistant_message.tool_calls:
    messages.append(assistant_message)

    for tool_call in assistant_message.tool_calls:
        function_name = tool_call.function.name
        arguments = json.loads(tool_call.function.arguments)

        # Step 3: Validate function name and run it
        if function_name == "get_weather":
            location = arguments.get("location", "Unknown")
            unit = arguments.get("unit", "fahrenheit")
            result = {
                "location": location,
                "temperature": 18 if unit == "celsius" else 64,
                "unit": unit,
                "condition": "Partly cloudy",
                "humidity": 72,
            }
        else:
            result = {"error": f"Unknown function: {function_name}"}

        # Step 4: Return the function result to the model
        messages.append({
            "role": "tool",
            "tool_call_id": tool_call.id,
            "content": json.dumps(result),
        })

    # Step 5: Get the final response incorporating tool results
    final_response = client.chat.completions.create(
        model="openai.gpt-oss-120b",
        messages=messages,
        tools=tools,
    )
    print(final_response.choices[0].message.content)
else:
    print(assistant_message.content)

此处显示的示例演示了客户端工具调用:模型返回一个工具调用,您的应用程序运行该函数,然后您将结果传回。在 bedrock-mantle 上,GPT OSS 模型同时支持客户端和服务器端工具调用,而 NVIDIA Nemotron 3 Super 120B 仅支持客户端工具调用。两个模型系列也支持通过 bedrock-runtime 端点上的 Converse API(使用 toolConfig)进行工具调用。有关完整的功能矩阵,请参阅每个模型的模型卡。

使用 bedrock-runtime 端点(boto3)

对于 bedrock-runtime 端点,您需要配置具有调用模型权限的 AWS 凭证(AWS Identity and Access Management (IAM) 用户或角色)。以下是示例策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": "arn:aws-us-gov:bedrock:us-gov-west-1::foundation-model/openai.gpt-oss-120b-1:0"
    }
  ]
}

对于生产部署,请将 Resource 范围限定为您使用的特定 AWS GovCloud (US) 区域和模型 ID。

以下示例使用 AWS SDK for Python (boto3) 通过 Converse API 发送单轮请求。在 bedrock-runtime 端点上,GPT OSS 模型 ID 包含版本后缀(例如 openai.gpt-oss-120b-1:0)。请使用每个模型模型卡中的确切模型 ID。响应包含一个推理块,后跟一个文本块,因此示例在打印答案时选择文本块。

import boto3

client = boto3.client("bedrock-runtime", region_name="us-gov-west-1")

response = client.converse(
    modelId="openai.gpt-oss-120b-1:0",
    messages=[{
        "role": "user",
        "content": [{"text": "What is a mixture-of-experts architecture?"}]
    }],
    inferenceConfig={"maxTokens": 2048, "temperature": 1.0, "topP": 0.95},
)

content_blocks = response["output"]["message"]["content"]
response_text = next(
    (block["text"] for block in content_blocks if "text" in block), None
)

if response_text:
    print(response_text)
else:
    print("No text response.")

要通过 bedrock-runtime 调用 NVIDIA Nemotron 3 Super 120B,请使用模型 ID nvidia.nemotron-super-3-120b(此模型 ID 不带版本后缀)。

您还可以使用 AWS Command Line Interface (AWS CLI) 从终端访问这些模型:

aws bedrock-runtime converse \
    --model-id openai.gpt-oss-120b-1:0 \
    --messages '[{"role":"user","content":[{"text":"Type_Your_Prompt_Here"}]}]' \
    --inference-config '{"maxTokens":512}' \
    --region us-gov-west-1

扩展按需推理

Standard 层级上的按需容量是共享的,并按 AWS 区域分配,因此在区域需求高峰期,请求可能会被短暂排队或节流。在 bedrock-mantle 端点上,没有每分钟请求数的配额。吞吐量受基于 token 的限制。这些开放权重模型目前没有在 Service Quotas 控制台中发布按账户的 token 配额,因此请使用带有指数退避的重试逻辑来处理瞬态节流。Amazon Bedrock 会显示两个 HTTP 错误代码,指示请求无法被服务:

错误代码 含义 建议操作
429 请求被拒绝,因为它超过了 Amazon Bedrock 的账户配额。 通过 Service Quotas 控制台请求增加配额,并应用客户端节流。
503 服务正在经历高需求或临时容量限制。 使用指数退避和抖动重试。如果节流持续存在,请降低请求速率并逐渐回升。

对于瞬态 503 响应,请在您的 SDK 中配置自动重试:

import boto3
from botocore.config import Config

config = Config(retries={"total_max_attempts": 6, "mode": "standard"})
client = boto3.client("bedrock-runtime", config=config)

在持续节流后回升时,请在增加之间保持稳定状态约 15 分钟,而不是直接跳到目标量。有关更详细的回升程序和其他最佳实践,请参阅 Amazon Bedrock 用户指南中的扩展和吞吐量最佳实践。

清理

这些模型使用按需推理,仅在您调用模型时产生费用,因此无需拆除端点或基础设施。为避免测试后产生意外费用:

有关按模型和层级划分的定价详情,请参阅 Amazon Bedrock 定价。

定价和可用性

OpenAI GPT OSS 和 NVIDIA Nemotron 模型现已在 AWS GovCloud (US) 的 Amazon Bedrock 上可用。In-Region 推理在 AWS GovCloud (US-West) (us-gov-west-1) 中可用,Geo Cross-Region 推理在 AWS GovCloud (US-West) 和 AWS GovCloud (US-East) (us-gov-east-1) 之间路由请求,同时将流量保持在 AWS GovCloud (US) 边界内。定价按 token 计算,因模型和服务层级而异。Standard 层级上的按需推理在您调用模型时产生费用,无需预留容量,也无需拆除基础设施。有关当前费率,请参阅 Amazon Bedrock 定价。

结论

OpenAI GPT OSS 和 NVIDIA Nemotron 模型现已在 AWS GovCloud (US) 的 Amazon Bedrock 上可用,使政府客户能够在其合规边界内访问先进的开放权重模型。在本文中,我们介绍了可用的模型及其功能、用于调用它们的两个端点、可用的服务层级以及扩展指南。政府团队可以为其任务工作负载运行这些开放权重模型,同时将推理保持在 AWS GovCloud (US) 边界内,在 AWS 运营的基础设施上运行。

要开始使用:

资源

有关更多信息,请参阅以下资源:

关于作者

Zohreh Norouzi Zohreh 是 Amazon Web Services 的安全解决方案架构师。她帮助客户做出良好的安全选择,并加速他们向 AWS 云迁移的旅程。她积极参与 APJ 地区的 AI 安全计划,利用她的专业知识帮助客户大规模构建安全的 AI 解决方案。

Saurabh Trikande Saurabh 是 Amazon Bedrock 和 Amazon SageMaker Inference 的高级产品经理。他热衷于与客户和合作伙伴合作,其目标是推动 AI 的民主化。他专注于与部署复杂 AI 应用程序、多租户模型推理、成本优化以及使生成式 AI 模型的部署更易于访问相关的核心挑战。

Heather Crawford Heather 是 Amazon Web Services (AWS) 的高级营销经理,支持政府区域(GovCloud、Secret Cloud 和 Top Secret Cloud),并为全球政府客户开发信息和内容。她在技术和媒体行业的政府、非营利、跨国、教育和医疗保健组织中从事过营销、编辑、产品和销售工作。她目前是 Women @ Amazon 全球委员会的成员,并因其在教育和读写方面的慈善工作而获得认可,这些工作是通过在各种非营利和行业委员会及委员会的服务中完成的。

译自 AWS · ML 博客 · 录于 二〇二六年七月七日