☰
C-RADIO视觉编码器拆解:NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4如何把图像和视频喂给语言模型
2026/10/21 20:42:49 网站建设 项目流程
  • 人工智能
  • 大模型
  • 多模态
  • 计算机视觉
  • 模型量化

【免费下载链接】NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4
点击查看免费下载

NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4 是一款 1200 亿参数(激活 120 亿)的视觉语言大模型,它的"眼睛"就是 C-RADIO 视觉编码器。这篇文章带你从零拆解这条视觉链路:一张图片如何被切块、编码、压缩,最终变成语言模型能读懂的 token;视频又是如何逐帧处理并瘦身进上下文的。

一、C-RADIO 视觉编码器是什么?

C-RADIO 是一个基于 Transformer 的视觉塔(Vision Tower),结构类似 ViT,但做了若干增强。它的核心参数在 configuration_radio.py 中定义:

参数值含义
hidden_size1280视觉特征维度
num_hidden_layers32编码器层数
num_attention_heads16注意力头数
patch_size16每张图切成 16×16 像素的小块
max_img_size2048位置编码支持的最大分辨率
num_cls_tokens/num_registers3 / 7前置的"摘要"与"寄存器"token
summary_idxs[0, 1]从 cls token 中取哪两个做全局摘要

实现代码在 modeling_radio.py,整个编码过程可以概括为四步:归一化 → 切块投影 → 32 层编码 → 输出摘要+特征。

二、第一步:图像预处理与动态分辨率

图片进入模型前,先由图像处理器处理,逻辑在 image_processing_nemotron_h_omni.py 中,默认参数见 preprocessor_config.json:

  • 动态分辨率:不把所有图片硬缩成同一尺寸,而是在min_num_patches=1024到max_num_patches=13312的 patch 网格内,按原图宽高比选择最合适的切块数——细节多的文档图会保留更多 patch,简单图则省 token;
  • 高质量缩放:使用抗锯齿的 bicubic 插值,避免锯齿噪声在编码过程中被放大;
  • 像素归一化:用 CLIP 的均值/标准差(norm_mean/norm_std)把 0~255 的像素值缩放到标准分布。

🎯 这个设计的巧妙之处:图像 token 数量与图片信息量成正比,而不是"一刀切",既保细节又省算力。

三、C-RADIO 编码器内部:从像素块到特征向量

进入 RadioModel 后,流水线依次是:

  1. 输入归一化器(InputConditioner):在 float32 下完成像素归一化后转回原精度,保证数值稳定;
  2. CPE 分块投影(PatchEmbeddings):把图像切成 16×16 的块并线性投影到 1280 维;位置编码不是一张固定大小的表,而是从 2048×2048 的"大表"里按当前分辨率双线性插值裁剪(Cropped Position Embedding),所以同一套权重能适配任意尺寸的图片;
  3. 前置特殊 token:在序列头部拼接 3 个可学习的 cls token 和 7 个 register token,用来汇总全局信息和吸收注意力噪声;
  4. 32 层编码器堆叠:每层是 LayerNorm → 多头自注意力 → MLP 的经典结构,支持 SDPA / FlashAttention 加速,并带 DropPath 与 LayerScale 正则。

最终编码器输出两样东西(见RadioModelOutput):

  • summary:从指定 cls token 里取出的全局摘要向量,回答"这张图整体是什么";
  • features:每个 patch 的稠密空间特征,保留"图的每个位置是什么细节"。

后续真正喂给语言模型的,主要是features这条稠密分支。

四、连接器(Connector):把视觉特征"翻译"成语言

视觉塔输出的 1280 维特征不能直接进语言模型,中间的"翻译官"是视觉投影器,定义在 modeling_nemotron_h_omni.py 的NemotronH_Omni_Reasoning_V3VisionProjector中:

  1. Pixel Shuffle 空间压缩:按downsample_ratio=0.5把相邻 2×2 个 patch 的特征合并成一个,token 数量直接减为 1/4——这是控制视觉 token 开销的关键一招;
  2. MLP 投影:RMSNorm → Linear → ReLU² → Linear,把压缩后的特征从视觉空间映射到语言模型的隐空间(projector_hidden_size=4096);
  3. 占位符替换:处理文本时,prompt 里的<image>标记会被展开成与实际视觉 token 数量等长的占位序列(<img>…</img>),再由masked_scatter把这些位置精确替换为图像嵌入,见 processing_nemotron_h_omni.py。

这样,语言模型拿到的就是一条"图像嵌入 + 文本 token"完全混排、长度已对齐的输入序列。

五、视频是怎么喂进去的?两帧打包 + EVS 剪枝

视频比图片多出"时间"维度,这条链路有专门的优化:

  • 时间维打包:video_temporal_patch_size=2,每 2 帧沿时间维叠成一个"时空 patch",用独立的video_patch_projection投影,帧数直接减半(见 modeling_nemotron_h_omni.py 的forward_video);
  • 每帧固定预算:视频帧使用独立的video_target_num_patches=1024目标 patch 数并保持宽高比,避免个别帧过大会挤爆上下文;
  • EVS 视频 token 剪枝:compute_retention_mask会计算相邻帧特征的余弦相似度,把"变化不大"的冗余 token 按video_pruning_rate剪掉——官方部署建议值为0.5,即剪掉一半冗余视觉 token,首帧 token 始终保留。

处理器还贴心地为视频生成带时间戳的文字说明("Frame 1 sampled at 0.50 seconds" 等),让模型天然具备"第几秒发生了什么"的时间感知。

六、快速部署:一条命令跑起来

部署参考 README.md,核心 vLLM 启动命令(视频理解场景):

vllm serve nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4 \ --trust-remote-code \ --gpu-memory-utilization 0.75 \ --video-pruning-rate 0.5 \ --media-io-kwargs '{"video": {"fps": 2, "num_frames": 256}}'

关键参数含义:--video-pruning-rate 0.5开启上文提到的 EVS 剪枝;fps: 2, num_frames: 256表示每秒抽 2 帧、最多 256 帧。硬件上 1× DGX Spark、1× H200、2× H100 或 1× GB200 即可承载。模型配置全貌可对照 config.json 与 processor_config.json。

总结:一条完整的视觉数据通路

图片 → 动态分辨率缩放 + CLIP 归一化 → 16×16 切块 + CPE 位置编码 → C-RADIO 32 层编码(features / summary) → 2×2 Pixel Shuffle 压缩 → MLP 投影到语言空间 → 替换 <image> 占位符 → 进入 120B MoE 语言模型 视频 → 每 2 帧打包时空 patch → 同上编码 → EVS 剪掉 ~50% 冗余 token → 替换占位符 → 进入语言模型

✨ 一句话记忆:C-RADIO 负责"看懂",Pixel Shuffle 负责"省 token",MLP 投影负责"说语言",EVS 剪枝负责"管预算"——四段流水线协同,才让 1200 亿参数的语言模型能同时消化文本、图片与视频。

想进一步阅读源码细节,可以从 modeling_radio.py(视觉塔)和 modeling_nemotron_h_omni.py(多模态融合)两个文件入手。

  • 人工智能
  • 大模型
  • 多模态
  • 计算机视觉
  • 模型量化

【免费下载链接】NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4
点击查看免费下载

相关推荐

上一篇:PanWatch AI盯盘成本测算:TradingAgents 单次$0.05,月度AI预算完整指南
下一篇:OpenRig rig discover与rig adopt教程:把已有Claude Code和Codex会话纳管

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询