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

TL;DR · AI 摘要
Run NVIDIA Nemotron and OpenAI GPT OSS models on Amazon Bedrock in AWS GovCloud US Artificial Intelligence Run NVIDIA Ne...
核心要点
- 主题聚焦:Run NVIDIA Nemotron and OpenAI GPT OSS models on
- 来源:AWS Machine Learning Blog,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
在 AWS GovCloud (US) 的 Amazon Bedrock 上运行 NVIDIA Nemotron 和 OpenAI GPT OSS 模型 | 人工智能
在 AWS GovCloud (US) 的 Amazon Bedrock 上运行 NVIDIA Nemotron 和 OpenAI GPT OSS 模型
在 AWS GovCloud (US) 中运行工作负载的政府机构需要与商业领域同步的人工智能能力。同时,他们不能妥协于其任务所需的安全性和合规性控制。随着开源权重的基础模型(FMs)从实验阶段进入任务系统,两个要求塑造了每个模型决策。首先,模型必须满足任务所需的性能。其次,推理环境必须满足机构的安全、合规和数据驻留义务。对于美国政府机构、国防和情报社区以及为其提供服务的承包商而言,这些要求是不可妥协的。访问先进的开源权重模型对于情报分析、任务规划、采购和合同文件审查、安全日志分析以及合规自动化等工作至关重要。这种访问必须不需要将敏感数据移出其管理边界。
我们很兴奋地在 AWS GovCloud (US) 中引入基于美国的前沿开源权重模型。通过此次发布,Amazon Bedrock 现在支持 OpenAI 的开源权重 GPT OSS 模型(120B 和 20B)以及 NVIDIA Nemotron 模型(Nano 9B v2、Nano 12B v2、Nano 30B、Super 120B)。通过这些新模型,您可以使用多样且高性能的基础模型构建和扩展生成式 AI 应用程序。这提供了通过单一统一 API 使用 OpenAI 和 NVIDIA 最新模型以及其它领先 AI 模型的灵活性。您可以使用这个统一 API 为每个具体用例选择合适的模型,而无需更改应用程序代码。
AWS GovCloud (US) 提供了一组隔离的 AWS 区域,专门用于托管敏感数据和受监管的工作负载。这些区域物理位于美国,并且仅由美国公民管理。它们帮助客户满足包括 FedRAMP High(临时运营授权)和 DoD 云计算安全需求指南(SRG)影响等级 2、4 和 5 在内的合规框架。其他合规框架包括国际武器贸易条例(ITAR)和刑事司法信息系统(CJIS)。
Amazon Bedrock 是一项完全托管的服务,用于访问来自独立模型提供商的基础模型,所有推理过程均在 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对这两个模型的描述如下:
- NVIDIA Nemotron 3 Super 是一个120B开放混合专家(MoE)模型,适用于复杂的多智能体工作负载,总共有1200亿个参数,每个token仅激活120亿个参数。这种MoE设计相比上一代可实现高达5倍的吞吐量,从而实现成本高效的推理,其100万token的上下文窗口使智能体能够在长期、多步骤任务中保持专注。
- NVIDIA Nemotron 3 Nano 是一个300亿参数的开放模型,每个token激活约30亿个参数,相比上一代吞吐量提高4倍,并将推理token生成量减少高达60%。其100万token的上下文窗口支持长期运行的多步骤智能体工作流。
如需了解AWS GovCloud(US)中可用的完整NVIDIA Nemotron模型列表,请参阅Amazon Bedrock上的NVIDIA模型。
OpenAI GPT OSS
OpenAI的GPT OSS模型是开源权重的文本到文本模型,专为推理、智能体和开发人员任务而设计,支持可调节的推理努力程度和外部工具集成。本文重点介绍两个变体:
gpt-oss-120b 是OpenAI的1200亿参数开源权重模型,适用于生产、通用和高推理场景。
gpt-oss-20b 是200亿参数模型,专为低延迟和本地或专用场景而设计。
这两个模型均提供128K token的上下文窗口和高达16K的输出token,并且都接受文本输入并生成文本输出。由于权重是开放的,组织可以独立评估模型架构、查看发布的模型卡片,并在代表性工作负载上运行自己的基准测试。对于政府团队而言,这种透明度支持组织风险评估,使客户安全团队能够在部署前评估模型行为,并与许多美国政府机构正在采用的零信任原则保持一致。
如需了解AWS GovCloud(US)中可用的完整OpenAI模型列表,请参阅Amazon Bedrock上的OpenAI模型。
在合规边界内的无服务器推理
Amazon Bedrock上的NVIDIA Nemotron和GPT OSS模型由Amazon Bedrock中的下一代推理引擎提供服务。为了理解架构,区分引擎和端点是有帮助的:引擎是底层的提供基础设施,设计上采用Model Deployment Account隔离和零操作员访问权限,而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 模式将所有请求保留在单一区域内部;Geo Cross-Region 推理模式则在地理区域内跨区域路由请求以实现更高吞吐量,确保数据始终位于该地理边界内。对于 AWS GovCloud (US) 中的 NVIDIA Nemotron 和 GPT OSS 模型,选项如下:
- In-Region 推理可在 us-gov-west-1(AWS GovCloud (US-West))区域使用。
- Geo Cross-Region 推理可通过专用的 AWS GovCloud (US) 跨区域推理 ID 实现,该 ID 能在 us-gov-west-1 和 us-gov-east-1 之间路由请求。流量仍保留在 AWS GovCloud (US) 边界内,同时实现两个区域的容错能力。
这些模型的所有推理均位于 AWS GovCloud (US) 边界内。全球跨区域推理(在商业 AWS 全球区域之间路由请求)在 AWS GovCloud (US) 中不可用。您可以根据需求在单区域和 Geo 跨区域之间进行选择。
服务层级
Amazon Bedrock 提供多种服务层级以匹配不同的工作负载需求。对于这三个模型,均支持 Standard、Priority 和 Flex 三种层级。
| 服务层级 | 描述 | 是否支持 | |---------|------|---------| | Standard | 按需计费,无使用承诺 | 支持 | | Priority | 为延迟敏感型流量提供更高吞吐量 | 支持 | | Flex | 为非时间敏感型灵活工作负载提供低成本访问 | 支持 | | Reserved | 通过使用承诺提供专用吞吐量 | 目前不可用 |
默认情况下,请求会使用 Standard 层的按需推理,按 token 计费且无需提前预留容量。对于延迟敏感型面向客户的工作负载,可将单个请求路由到 Priority 层。对于非时间敏感型任务(如模型评估或批量摘要),Flex 层提供更具成本效益的方案。关于扩展指导和生产规模下的限流处理方法,请参阅《扩展与吞吐量最佳实践》和《入门》部分。
在 AWS GovCloud (US) 中入门
本节将逐步演示如何调用模型,首先从推荐的 bedrock-mantle 端点开始。示例使用 us-gov-west-1 区域(支持 In-Region 推理)。
控制台交互环境
- 在 AWS GovCloud (US) 账户中导航至 Amazon Bedrock 控制台。
- 在“测试”部分左侧菜单中选择“交互环境”。
- 选择“选择模型”。
- 从类别列表中选择提供商(NVIDIA 或 OpenAI),然后选择模型(例如,NVIDIA Nemotron 3 Super 或 120B gpt-oss-120b)。
- 选择“应用”以加载模型。
- 输入提示以测试模型。
使用 bedrock-mantle 端点(推荐)
要使用这些模型,您需要在 AWS GovCloud (US) 中拥有 AWS 账户,并具有调用 Amazon Bedrock 模型的权限。对于 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
# 从 AWS Secrets Manager 获取 Bedrock API 密钥
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(
# 在基础 URL 中使用 AWS GovCloud (US) 区域,例如 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 模型,请将模型参数改为 nvidia.nemotron-super-3-120b 并删除 reasoning_effort 参数(推理努力控制仅适用于 GPT OSS)。无需其他代码更改。
#### 控制推理努力
GPT OSS模型是推理模型,能够暴露可调节的推理努力程度。在Chat Completions调用中设置reasoning_effort参数为low、medium或high,可在响应延迟和推理深度之间进行权衡。对于高吞吐量且对延迟敏感的流量,建议使用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
# 从AWS Secrets Manager检索Bedrock API密钥
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)#### 流式响应
在需要实时展示生成内容的聊天和智能体场景中,设置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
# 从AWS Secrets Manager检索Bedrock API密钥
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": "获取指定位置的当前天气",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和国家(例如 Seattle, US)"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "温度单位"
}
},
"required": ["location"]
}
}
}
]步骤1:使用工具定义发送用户请求
messages = [ {"role": "user", "content": "西雅图的天气如何?"} ]
response = client.chat.completions.create( model="openai.gpt-oss-120b", messages=messages, tools=tools, tool_choice="auto", )
assistant_message = response.choices[0].message
步骤2:检查模型是否需要调用工具
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)
步骤3:验证函数名称并执行
if function_name == "get_weather": location = arguments.get("location", "未知") unit = arguments.get("unit", "fahrenheit") result = { "location": location, "temperature": 18 if unit == "celsius" else 64, "unit": unit, "condition": "局部多云", "humidity": 72, } else: result = {"error": f"未知函数: {function_name}"}
步骤4:将函数结果返回给模型
messages.append({ "role": "tool", "tool_call_id": tool_call.id, "content": json.dumps(result), })
步骤5:获取包含工具结果的最终响应
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 身份和访问管理(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 命令行界面 (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
### 按需推理扩展
标准层级的按需容量在各 AWS 区域内共享并分配,因此在区域需求高峰期,请求可能会被短暂排队或限流。在 bedrock-mantle 端点上,没有每分钟请求数配额限制。吞吐量由基于令牌的限制控制。这些开源模型目前在服务配额控制台中尚未公布每账户的令牌配额,因此请使用带有指数退避的重试逻辑来处理临时限流。Amazon Bedrock 会显示两个 HTTP 错误代码,用于指示请求无法被处理的情况:
错误代码 | 含义 | 建议操作
--- | --- | ---
429 | 请求被拒绝,因为超过了 Amazon Bedrock 的账户配额 | 通过服务配额控制台申请配额提升,并在客户端实施限流
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用户指南》中的“扩展性和吞吐量最佳实践”。
### 清理
这些模型使用按需推理,仅在调用模型时产生费用,因此无需关闭端点或基础设施。为避免测试后产生意外费用:
- 如果您生成了短期Bedrock API密钥,它们会自动过期(最长12小时)。如需提前撤销,请在Amazon Bedrock控制台中删除该密钥。
- 如果您为测试选择了优先级层级,请通过从调用中移除service_tier参数,将非延迟敏感流量恢复为标准定价。
- 如果您为测试将Bedrock API密钥存储在AWS Secrets Manager中,请删除该密钥以避免存储费用。
有关按模型和层级的定价详情,请参阅Amazon Bedrock定价。
## 定价与可用性
OpenAI GPT OSS和NVIDIA Nemotron模型现已在AWS GovCloud(美国)的Amazon Bedrock上提供。区域内部推理可在AWS GovCloud(美国西部)(us-gov-west-1)使用,跨区域地理路由则在AWS GovCloud(美国西部)和AWS GovCloud(美国东部)(us-gov-east-1)之间路由请求,同时保持流量在AWS GovCloud(美国)边界内。
定价按令牌计算,根据模型和服务层级有所不同。标准层级的按需推理在调用模型时产生费用,无预留容量且无需关闭基础设施。当前费率请参阅Amazon Bedrock定价。
## 结论
OpenAI GPT OSS和NVIDIA Nemotron模型现已在AWS GovCloud(美国)的Amazon Bedrock上提供,使政府客户能够在合规边界内访问先进的开放权重模型。在本文中,我们介绍了可用模型及其功能、调用它们的两个端点、可用服务层级以及扩展指导。政府团队可以在AWS GovCloud(美国)边界内、基于AWS运营的基础设施上运行这些开放权重模型,用于任务关键型工作负载。
要开始使用:
- 在您的AWS GovCloud(美国)账户中打开Amazon Bedrock控制台,并在Playground中尝试这些模型。
- 运行本文提供的bedrock-mantle Python示例,针对您自己的数据进行测试。
- 在您的工作负载上评估gpt-oss-120b、gpt-oss-20b和NVIDIA Nemotron 3 Super 120B,选择符合您成本和延迟需求的模型。
- 对于生产部署,请查看“扩展性和吞吐量最佳实践”,并考虑为延迟敏感流量使用优先级层级。
## 资源
如需更多信息,请参考以下资源:
- AWS GovCloud(美国)
- Amazon Bedrock用户指南
- Amazon Bedrock上的OpenAI模型
- NVIDIA Nemotron 3 Super 120B模型卡片
- 探索Mantle的零操作员访问设计
- Amazon Bedrock服务层级
- Amazon Bedrock API密钥
## 作者简介
'"`