人工智能

NVIDIA Nemotron 3.5 Super VL 现已在 Amazon SageMaker JumpStart 中上线

今天,我们宣布 NVIDIA Nemotron 3.5 Super VL 已在 Amazon SageMaker JumpStart 中上线。您只需在 SageMaker Studio 中执行几个步骤,或使用几行 SageMaker Python SDK 代码即可部署它。Super VL 是 NVIDIA Nemotron 3.5 系列中的视觉语言模型(VLM)。它接受图像、视频和文本作为输入,并生成文本。

该模型将 120B 参数的混合专家(MoE)语言主干(12B 激活参数)与 C-RADIO 视觉编码器相结合。它支持最长 100 万 token 的上下文长度,并内置支持推测解码的多 token 预测(MTP)头。您可以按请求配置推理。

NVIDIA 构建 Super VL 的目标是文档智能、面向计算机使用代理的 GUI 理解、视频问答以及多模态代理应用。JumpStart 提供两个变体:NVFP4(从 BF16 量化而来,采用量化感知蒸馏以优化推理)和 BF16 全精度参考权重。在本文中,我们将介绍该模型的能力和 JumpStart 部署配置。然后展示实测推理性能,并演示文本、图像和视频推理。

模型概览

Nemotron 3.5 Super VL 是一个 120B 参数模型,每个 token 激活 12B 参数。它将混合语言主干与专用视觉编码器相结合。

  • 语言主干: 88 层,交错包含 Mamba-2 和 MoE 层(512 个路由专家,每个 token 激活 22 个)以及 8 个注意力层,外加一个共享 MTP 头。该主干从 Nemotron 3 Super Base 初始化,并从 Nemotron 3 Ultra Base 蒸馏而来。
  • 视觉编码器: C-RADIO 视觉编码器对图像和采样的视频帧进行编码,视觉语言连接器将它们映射到语言主干的嵌入空间。在两个变体中,编码器和连接器均保持 BF16。
  • 训练: 该模型首先经过持续预训练、长上下文和软件工程中期训练以及视觉语言训练。然后,在视觉、推理、代码、工具、聊天、安全和长上下文数据上进行两阶段多模态监督微调(SFT)。接下来是在 NeMo RL 和 NeMo Gym 中使用可验证奖励和人类反馈的强化学习(RL)、多教师同策略蒸馏,以及进一步训练 MTP 头的最后阶段。NVFP4 检查点使用 NVIDIA Model Optimizer 和量化感知蒸馏从 BF16 生成。它将视觉编码器、连接器、Mamba 卷积和嵌入保持在 BF16,将 MoE 路由器保持在 FP32。它在 Blackwell GPU 上以 4 位权重和激活(W4A4)运行。

下表比较了 JumpStart 中可用的两个变体的规格。

规格 NVFP4 BF16
参数 总计 120B,激活 12B 总计 120B,激活 12B
用途 优化推理(延迟和吞吐量) 用于定制的全精度参考权重:SFT、RL、蒸馏、领域适应和自定义量化
输入 / 输出 图像、视频、文本 / 文本 图像、视频、文本 / 文本
上下文长度 最长 100 万 token(JumpStart 服务配置使用 520 至 15,600 token) 相同
检查点大小 约 75 GB 约 249 GB
JumpStart 实例 ml.g7.24xlarge(默认)、ml.g7.48xlarge ml.p5en.48xlarge
推测解码 内置 MTP 头。在 JumpStart 服务配置中未启用 相同
LoRA 适配器服务 否 否
语言 英语、法语、德语、意大利语、日语、西班牙语、中文 相同
推理 默认开启。可通过 enable_thinking 相同
输出 工具调用、JSON schema 输出、可配置推理 相同
许可证 OpenMDW 许可证协议 1.1 版 相同

关键用例

Super VL 面向必须“看见”和“阅读”的代理工作负载。它针对结合推理、编码、工具使用、文档理解和视频理解的视觉语言代理。

  • 文档智能: 光学字符识别(OCR)、图表、表格和多页文档。每张 1,536 x 1,024 的页面图像消耗约 1,536 个上下文 token。JumpStart 服务配置每次请求接受一张图像和一个视频。
  • GUI 理解: 面向导航应用程序的计算机使用代理的屏幕定位和推理。
  • 视频理解: 分析和总结短 MP4 视频片段,包括回答关于视觉内容的问题。您可以以内联 base64 编码内容的形式提供视频,但受端点请求负载大小限制。
  • 多模态代理: 工具调用、通过 response_format的 JSON schema 输出以及可配置推理支持多模态代理工作流。
  • 定制(BF16): 下载 BF16 参考权重,用于 SFT、RL、蒸馏、领域适应或创建您自己的量化变体。JumpStart 端点仅提供基础权重,不加载 LoRA 适配器。

模型质量基准

NVIDIA 模型卡报告了两个检查点在推理、编码、代理、长上下文和多模态基准上的结果,评估设置保持不变,因此只有检查点不同。下表重点列出了与视觉语言工作负载最相关的多模态基准(开启推理)。

基准 能力 BF16 NVFP4
MMLongBench-Doc 长文档多模态理解 62.82 62.82
OCRBench v2,英文 OCR 和文档理解 68.12 68.34
CharXiv 推理 图表和图形推理 80.82 79.88
Video-MME v2 视频理解 32.85 32.54
OSWorld-Verified 视觉计算机使用和代理任务 51.14 52.30

NVFP4(JumpStart 默认)在 MMLongBench-Doc 上与 BF16 持平,在其他基准上差距约在 1 分以内,在 OCRBench v2 和 OSWorld-Verified 上得分略高。有关与其他公开可用模型的完整比较及评估设置,请参阅 NVIDIA Nemotron 3.5 Super VL 与 Lightning 技术报告.

SageMaker JumpStart 上的推理性能

我们使用 JumpStart 发布容器,按照 generate 工作负载配置测量了推理性能:250 个输入 token、1,500 个输出 token,以及五个并发流式请求。吞吐量是每个请求的平均每秒输出 token 数,首 token 时间是各请求的平均值。

实例类型 变体 每请求输出吞吐量(平均值) 首 token 时间(平均值)
ml.g7.24xlarge NVFP4 63.07 token/秒 0.45 秒
ml.g7.48xlarge NVFP4 64.01 token/秒 0.51 秒
ml.p5en.48xlarge BF16 140.85 token/秒 0.53 秒

这些结果展示了通过 JumpStart 可用的部署选择。NVFP4 变体在 GPU 占用更小的 G7 实例上运行。在此测试中,ml.p5en.48xlarge 上的 BF16 变体实现了每请求每秒 140.85 个输出 token。在所有三种配置下,首 token 时间均保持在约半秒。由于各变体运行在不同的 GPU 系统和配置上,这些测量结果并非孤立的 BF16-versus-NVFP4 精度比较。更长的提示会改变情况:在 summarize 配置(10,000 个输入 token)下,ml.g7.24xlarge 上的首 token 时间为 12.62 秒。

支持的实例

SageMaker JumpStart 在以下经过验证的实例类型上支持 Nemotron 3.5 Super VL。NVFP4 在配备 NVIDIA RTX PRO 4500 Blackwell Server Edition GPU 的 G7 实例上运行,BF16 在配备 NVIDIA H200 GPU 的 P5en 实例上运行。NVFP4 的 JumpStart 默认实例为 ml.g7.24xlarge,它是 generate 配置的推荐起点。

变体 实例类型 GPU GPU 内存 张量并行
NVFP4 ml.g7.24xlarge(默认) 4x NVIDIA RTX PRO 4500 Blackwell Server Edition 128 GB 4
NVFP4 ml.g7.48xlarge 8x NVIDIA RTX PRO 4500 Blackwell Server Edition 256 GB 8
BF16 ml.p5en.48xlarge 8x NVIDIA H200 1,128 GB 8

检查点包含 MTP 头,但 JumpStart 服务配置未启用推测解码。

使用 SageMaker JumpStart 部署 Nemotron 3.5 Super VL

您可以从 SageMaker Studio、使用 SageMaker Python SDK,或从 Hugging Face 模型页面部署该模型。

先决条件

部署之前,请确保您具备以下条件:

  • 一个具有创建 Amazon SageMaker AI 端点权限的 AWS 账户。
  • 一个可访问 SageMaker AI 的 AWS Identity and Access Management (IAM) 角色。
  • ml.g7.24xlarge、ml.g7.48xlarge 或 ml.p5en.48xlarge 端点使用量的服务配额。新账户中 ml.g7 配额从零开始,因此请在部署前通过 Service Quotas 申请增加配额。
  • 对于 SDK 方式,需要 SageMaker Python SDK v3(版本 3.25 或更高)。

从 SageMaker Studio 部署

要从 SageMaker Studio 部署模型,请完成以下步骤:

  1. 打开 SageMaker Studio,然后在导航窗格中选择 JumpStart.
  2. 在搜索栏中输入 Nemotron 3.5 Super VL。搜索结果会列出两个变体,如下图所示。 SageMaker JumpStart search results listing the two NVIDIA Nemotron 3.5 Super VL variants

    图 1:在 SageMaker JumpStart 中搜索 NVIDIA Nemotron 3.5 Super VL

  3. 选择您要部署的变体的模型卡片。选择 NVFP4 以在 G7 实例上实现优化推理。下图显示了 NVFP4 模型卡片。 NVFP4 model card for NVIDIA Nemotron 3.5 Super VL in SageMaker JumpStart

    图 2:SageMaker JumpStart 中的 NVIDIA Nemotron 3.5 Super VL NVFP4 模型卡片

    如果您需要在 ml.p5en.48xlarge 上使用全精度参考权重,请选择 BF16。下图显示了 BF16 模型卡片。

    BF16 model card for NVIDIA Nemotron 3.5 Super VL in SageMaker JumpStart

    图 3:SageMaker JumpStart 中的 NVIDIA Nemotron 3.5 Super VL BF16 模型卡片

  4. 在模型卡片上,查看模型详细信息和许可条款,然后选择 部署. 下图显示了部署前您可以查看的模型详细信息。 Model details and capabilities page for Nemotron 3.5 Super VL before deployment

    图 4:部署前查看 Nemotron 3.5 Super VL 的能力和模型详细信息

  5. 对于 实例类型, 保留默认值(NVFP4 为 ml.g7.24xlarge,BF16 为 ml.p5en.48xlarge),或选择其他受支持的实例类型。然后选择 部署.
  6. 等待端点状态变为 InService 后再调用模型。在 ml.g7.24xlarge 上部署大约需要 10 分钟。下图显示了正在进行的部署。 SageMaker endpoint deployment in progress before the status reaches InService

    图 5:状态达到 InService 之前正在进行的 SageMaker 端点部署

使用 SageMaker Python SDK 部署

# Install the SageMaker Python SDK v3: pip install "sagemaker>=3.25"
from sagemaker.core.helper.session_helper import get_execution_role
from sagemaker.core.jumpstart.configs import JumpStartConfig
from sagemaker.core.training.configs import Compute
from sagemaker.serve import ModelBuilder

# BF16 variant: model_id "huggingface-vlm-nvidia-nemotron-3-5-super-vl-120b-a12b-bf16" on ml.p5en.48xlarge.
jumpstart_config = JumpStartConfig(
    model_id="huggingface-vlm-nvidia-nemotron-3-5-super-vl-120b-a12b-nvfp4",
    inference_config_name="modify_best_price_performance",
)
model_builder = ModelBuilder.from_jumpstart_config(
    jumpstart_config=jumpstart_config,
    role_arn=get_execution_role(),
    compute=Compute(instance_type="ml.g7.24xlarge", instance_count=1),
)
model_builder.build()
endpoint = model_builder.deploy(endpoint_name="nemotron-3-5-super-vl")

该示例使用 SageMaker Python SDK v3 类: JumpStartConfig 为模型命名, ModelBuilder 构建并部署模型,而 deploy 返回一个 Endpoint 资源。在 Compute中传入实例类型,因为如果缺少实例类型,SDK 会回退到 ml.m5.large,随后构建会失败。deploy 调用会等待端点进入 InService 状态,在 ml.g7.24xlarge 上大约需要 10 分钟。

该 inference_config_name 参数用于选择服务配置,每种配置设置不同的上下文长度。默认的 generate 配置提供 2,275 个 token 的上下文,适用于短提示。summarize 配置提供 13,650 个 token,modify 配置提供 15,600 个 token。该示例使用 modify 配置,因为本文中的推理示例(尤其是图像、视频和推理请求)需要更大的上下文。后续所有推理示例均假定使用 modify 配置。

从 Hugging Face 部署

您也可以从其 Hugging Face 模型页面部署模型:选择 部署, 然后选择 Amazon SageMaker AI, 并继续进入 SageMaker 部署工作流。

Hugging Face model page for NVIDIA Nemotron 3.5 Super VL with the Deploy menu open

图 6:Hugging Face 上的 NVIDIA Nemotron 3.5 Super VL 模型页面及部署菜单

在部署菜单中,选择 Amazon SageMaker AI 以打开 SageMaker 部署工作流,如下图所示。

Amazon SageMaker AI option selected in the Hugging Face deployment workflow

图 7:从 Hugging Face 部署工作流中选择 Amazon SageMaker AI

端点进入 InService 状态后,您就可以向其发送推理请求。

运行推理

JumpStart 端点提供由 vLLM 驱动的聊天补全 API,因此应用程序可以使用熟悉的聊天消息格式发送推理请求。NVIDIA 建议温度为 1.0, top_p 文本使用 0.95,温度设为 0.6,并且 top_p 图像和视频请求使用 0.95。您必须以内联 base64 数据 URL 的形式发送媒体,因为该端点运行于网络隔离环境,无法获取 URL。

推理默认开启,您可以按请求进行配置。推理文本会在消息的 reasoning 字段中返回,与 content 分开。图像,关闭推理对于直接提取类任务,您可以在 中使用 来禁用推理。该模型接受图像而非原始 PDF 文件。要处理 PDF,请先将每一页渲染为图像(例如 PNG),然后再发送给模型。一张 1,536 x 1,024 的页面大约占用 1,536 个 token 的上下文,且一次请求只能携带一张图像。视频

推理默认开启,您可以按请求进行配置。推理文本会在消息的 reasoning 字段中返回,与 content 分开。

import json

payload = {
    "messages": [{"role": "user", "content":
        "Explain the difference between OCR and document understanding."}],
    "max_tokens": 2000,
    "temperature": 1.0,
    "top_p": 0.95,
}
response = endpoint.invoke(
    body=json.dumps(payload), content_type="application/json", accept="application/json"
)
result = json.loads(response.body.read())
print(result["choices"][0]["message"]["reasoning"])
print(result["choices"][0]["message"]["content"])

图像,关闭推理

对于直接提取类任务,你可以通过 来禁用推理。 enable_thinking=False , chat_template_kwargs.

import base64

with open("invoice.png", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode("utf-8")

payload = {
    "messages": [{
        "role": "user",
        "content": [
            {"type": "image_url",
             "image_url": {"url": f"data:image/png;base64,{image_b64}"}},
            {"type": "text",
             "text": "Extract the vendor, date, and total as JSON."},
        ],
    }],
    "max_tokens": 1024,
    "temperature": 0.6,
    "top_p": 0.95,
    "chat_template_kwargs": {"enable_thinking": False},
}
response = endpoint.invoke(
    body=json.dumps(payload), content_type="application/json", accept="application/json"
)
result = json.loads(response.body.read())
print(result["choices"][0]["message"]["content"])

该模型接受图像而非原始 PDF 文件。要处理 PDF,请先将每一页渲染为图像(例如 PNG),然后再发送给模型。一张 1,536 x 1,024 的页面大约占用 1,536 个 token 的上下文,且一次请求只能携带一张图像。

视频

以下示例将一个简短的 MP4 片段以 base64 编码的数据 URL 形式发送,并要求模型对其进行总结,同时禁用推理以获得直接响应。

import base64

with open("demo.mp4", "rb") as f:
    video_b64 = base64.b64encode(f.read()).decode("utf-8")

payload = {
    "messages": [{
        "role": "user",
        "content": [
            {"type": "video_url",
             "video_url": {"url": f"data:video/mp4;base64,{video_b64}"}},
            {"type": "text", "text": "Summarize what happens in this video."},
        ],
    }],
    "max_tokens": 2000,
    "temperature": 0.6,
    "top_p": 0.95,
    "chat_template_kwargs": {"enable_thinking": False},
}
response = endpoint.invoke(
    body=json.dumps(payload), content_type="application/json", accept="application/json"
)
result = json.loads(response.body.read())
print(result["choices"][0]["message"]["content"])

对于视频推理,请使用短小、压缩的片段,并确保编码后的请求保持在端点支持的负载限制之内。对于推理密集型视频请求,请将 max_tokens 设置得足够高,以便模型在考虑响应长度和端点调用限制的同时完成推理。

最佳实践

在 SageMaker JumpStart 上运行 Nemotron 3.5 Super VL 时,请考虑以下建议:

  • 媒体输入该模型接受图像而非原始 PDF 文件,因此请先将 PDF 页面渲染为图像。
  • 视频配置帧采样是在端点启动时设置的,而不是按请求设置。JumpStart 端点使用 vLLM 默认采样,并拒绝按请求设置。 media_io_kwargs.
  • 视频与推理:设置 max_tokens 至少设为 8,192(用于启用推理的视频),或在需要直接响应时禁用推理。
  • 上下文预算: max_tokens 会限制补全长度。提示词与补全内容合计必须符合服务配置的模型长度:generate 配置为 2,275 个 token,interact 为 520 个,summarize 为 13,650 个,modify 为 15,600 个。图像和视频帧同样会占用上下文。
  • 多页文档:JumpStart 服务配置每次请求只接受一张图像。请每次请求发送一页,或将多页拼接为一张图像,并检查上下文预算。
  • 推理模式:对于多步骤分析和智能体任务,请使用推理。对于提取或生成字幕,当你希望获得更简短、直接的响应时,请禁用推理。
  • 采样从温度 1.0 开始,并对文本使用 top_p 文本使用 0.95,温度设为 0.6,并且 top_p 图像和视频使用 0.95,这是 NVIDIA 推荐的值。

清理

为避免持续产生费用,完成后请删除端点、端点配置和模型:

from sagemaker.core.resources import EndpointConfig, Model

endpoint_config = EndpointConfig.get(endpoint_config_name=endpoint.endpoint_config_name)
model_name = endpoint_config.production_variants[0].model_name
endpoint.delete()
endpoint_config.delete()
Model.get(model_name=model_name).delete()

结论

NVIDIA Nemotron 3.5 Super VL 为 SageMaker JumpStart 带来图像、视频和文档理解能力。NVFP4 变体可在配备 NVIDIA RTX PRO 4500 Blackwell Server Edition GPU 的 G7 实例上使用。BF16 变体可在配备 NVIDIA H200 GPU 的 ml.p5en.48xlarge 上使用。若希望获得优化推理且模型质量接近 BF16 检查点,请选择 NVFP4;若需要全精度参考权重,请选择 BF16。要开始使用,请在 SageMaker Studio 中打开 SageMaker JumpStart,或使用 SageMaker Python SDK。

要了解更多信息,请参阅《Amazon SageMaker AI 开发者指南》中的 SageMaker JumpStart 预训练模型以及 Nemotron 3.5 Super VL 技术报告.


关于作者