跳到正文
AWS Machine Learning Blog· Venu Kanamatareddy·· 3 小时前AI 评分57

NVIDIA Nemotron 3.5 Super VL 登陆 Amazon SageMaker JumpStart

NVIDIA Nemotron 3.5 Super VL is now available in Amazon SageMaker JumpStart

AI 导读

NVIDIA Nemotron 3.5 Super VL 现已可在 Amazon SageMaker JumpStart 部署,该模型为 Nemotron 3.5 家族的视觉语言模型,采用 120B 总参数、12B 激活参数的混合 MoE 架构和 C-RADIO 视觉编码器,支持最长 1M tokens 上下文。

正文 · AI 翻译

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

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

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

模型概览

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

  • 语言主干: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 检查点由 BF16 通过 NVIDIA Model Optimizer 和量化感知蒸馏生成。它将视觉编码器、连接器、Mamba 卷积和嵌入保持在 BF16,将 MoE 路由器保持在 FP32。它在 Blackwell GPU 上以 4 位权重和激活(W4A4)运行。

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

规格 NVFP4 BF16
参数 总计 1200 亿,激活 120 亿 总计 1200 亿,激活 120 亿
适用场景 优化推理(延迟和吞吐量) 用于定制的全精度参考权重: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, EN OCR 与文档理解 68.12 68.34
CharXiv reasoning 图表推理 80.82 79.88
Video-MME v2 视频理解 32.85 32.54
OSWorld-Verified 视觉计算机使用与智能体任务 51.14 52.30

作为 JumpStart 默认选项的 NVFP4 在 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 tokens/秒 0.45 秒
ml.g7.48xlarge NVFP4 64.01 tokens/秒 0.51 秒
ml.p5en.48xlarge BF16 140.85 tokens/秒 0.53 秒

这些结果展示了通过 JumpStart 可用的部署选项。NVFP4 变体在 G7 实例上运行,占用更小的 GPU 资源。BF16 变体在 ml.p5en.48xlarge 上在此测试中达到了每请求每秒 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. In the search bar, enter Nemotron 3.5 Super VL. The search results list both variants, as shown in the following screenshot.

    SageMaker JumpStart search results listing the two NVIDIA Nemotron 3.5 Super VL variants

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

  3. Choose the model card for the variant you want to deploy. Choose NVFP4 for optimized inference on G7 instances. The following screenshot shows the NVFP4 model card.

    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. On the model card, review the model details and license terms, then choose Deploy. The following screenshot shows the model details you can review before deployment.

    Model details and capabilities page for Nemotron 3.5 Super VL before deployment

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

  5. 对于 Instance type,保留默认值(NVFP4 使用 ml.g7.24xlarge 或 BF16 使用 ml.p5en.48xlarge),或选择其他受支持的实例类型。然后选择 Deploy。
  6. Wait for the endpoint status to change to InService before you invoke the model. Deployment takes about 10 minutes on ml.g7.24xlarge. The following screenshot shows a deployment in progress.

    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,随后构建会失败。部署调用会等待端点达到 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 模型页面进行部署:选择 Deploy,然后选择 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 模型页面及 Deploy 菜单

在部署菜单中,选择 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 建议文本请求使用 temperature 1.0 和 top_p 0.95,图像和视频请求使用 temperature 0.6 和 top_p 0.95。由于端点在网络隔离环境下运行、无法获取 URL,您必须以 base64 数据 URL 的形式内联发送媒体内容。

文本(开启推理)

推理默认开启,您可以按请求进行配置。推理文本在消息的 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"])

图像(关闭推理)

对于直接的抽取类任务,可以在 chat_template_kwargs 中使用 enable_thinking=False 关闭推理。

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 的上下文,且每个请求只能携带一张图像。

视频

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

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 服务配置每个请求只接受一张图片。可以每个请求发送一页,或将多页拼接为一张图片,并检查上下文预算。
  • 推理模式:在多步分析和智能体任务中使用推理模式。在需要更简短、直接回复的提取或图像描述任务中禁用它。
  • 采样:按照 NVIDIA 的建议,文本采样从 temperature 1.0 和 top_p 0.95 开始,图像和视频采样从 temperature 0.6 和 top_p 0.95 开始。

清理资源

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

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 技术报告。


关于作者

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