news 2026/10/19 1:30:27

NVIDIA Nemotron 3.5 Bolt 74B-A9B-24GB 源码导读:1700 行 Transformers 混合架构实现,从 Mamba Cache 到 MoE 路由逐层拆解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NVIDIA Nemotron 3.5 Bolt 74B-A9B-24GB 源码导读:1700 行 Transformers 混合架构实现,从 Mamba Cache 到 MoE 路由逐层拆解
  • 人工智能
  • 大模型
  • 多模态
  • 本地部署
  • 模型量化

【免费下载链接】NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB
点击查看免费下载

NVIDIA Nemotron 3.5 Bolt 74B-A9B-24GB 是可在 24GB 显存中本地运行的视觉语言模型(VLM):74B 总参数、每 token 仅激活 9B,采用 Mamba-2 + Attention + MoE 混合骨干,并搭配 C-RADIO 视觉编码器。仓库自带完整 remote code,核心文件 modeling_nemotron_h.py 近 1800 行,从混合动态缓存到 Top-K 专家路由一应俱全。本文带你逐层拆解这份源码,新手也能读完"混合架构"的全貌。

一、模型速览:74B 总参数、9B 激活、256K 上下文

📌 关键规格(来自 config.json 与 README.md):

项目数值
总参数 / 激活参数74B / 9B(Top-9 专家路由)
架构Mamba-2 + Attention + LatentMoE 混合 + C-RADIO 视觉编码器
层数82 = 32 Mamba + 42 MoE + 8 Attention
隐层维度 / 词表4096 / 131072
最大上下文256K(262144 tokens)
量化IQ2 专家 + NVFP4 Mamba + Q8 输出头,整包 24GB
输入 / 输出文本、图像、视频 / 文本

源码分工:9 个文件,各司其职

文件行数职责
modeling_nemotron_h.py1754语言骨干:混合缓存、Mamba 扫描、MoE 路由、Attention
modeling_nemotron_h_omni.py511顶层多模态模型:图像/视频/音频融合进文本流
modeling_radio.py512C-RADIO(RADIO)视觉编码器
configuration_nemotron_h.py410NemotronHConfig:层类型清单与全部超参
configuration_nemotron_h_puzzle.py151逐层异构的 block_configs
modeling_nemotron_h_puzzle.py37让每层按自己的配置构建
configuration_nemotron_h_omni.py166顶层组合配置(llm + vision + audio)
configuration_radio.py93视觉编码器配置
ultra_v3_reasoning_parser.py53vLLM 推理内容/答案切分解析器

二、混合架构总览:layers_block_type 决定每一层是什么

与普通 LLM 只用自注意力不同,这个模型采用三种块混合的排布,层结构直接写在配置里的字符串列表中:

"layers_block_type": ["mamba", "moe", "mamba", "moe", "...", "attention", "moe"]
  • NemotronHConfig 通过_validate_layers_block_type校验列表,只允许mamba/moe/attention三种取值,层数由列表长度决定;
  • 每个 NemotronHBlock 都是"pre-norm → mixer → 残差连接"结构,mixer按block_type分派为 Mamba、Attention 或 MoE 三种实现之一;
  • 8 个 Attention 层大致每隔 9~11 层插入一个,负责精确的长距离依赖;其余 74 层由常显存的 Mamba 与高容量的 MoE 承担。

🧩 配置里还保留了 "M/E/*" 简写模式的向后兼容,可用_pattern_to_list(configuration_nemotron_h.py#L404-L407)与列表互相转换。

三、Mamba Cache 拆解:混合动态缓存如何驯服 256K 长上下文

👉 核心类:NemotronHHybridDynamicCache

纯 Transformer 的 KV Cache 随序列长度线性增长,而 Mamba 的状态是恒定的。这个类把两套缓存统一管理在同一个对象里:

缓存所属层形状(每 batch)随序列增长
key/value_cache8 个 Attention 层2 个 KV 头 × 128 维,逐 token 追加✅ 线性增长
conv_states32 个 Mamba 层(10240, 4) 环形卷积状态❌ 恒定
ssm_states32 个 Mamba 层(128 头, 64, 128) 状态矩阵❌ 恒定

也就是说,256K 上下文时"显存大头"只来自 8 层 Attention;每个 Mamba 层的 SSM 状态约 2MB(bf16),32 层合计不足 70MB——这就是长上下文能落地的原因。

Mamba 混合器内部:选择性状态扫描

NemotronHMamba2Mixer 是全模型最复杂的模块,前向流程为:

  1. in_proj把 4096 维隐层投影后拆成 gate、卷积输入、dt(离散时间步)三部分;
  2. 深度可分离因果 Conv1d(kernel=4)对卷积输入做局部平滑;
  3. 拆分出 x / B / C 后执行选择性状态空间扫描:prefill 走mamba_chunk_scan_combined分块 kernel(chunk_size=128),逐 token 解码走selective_state_update单步递推,并写回ssm_states;
  4. dt经 softplus 后截断在 [0.001, 0.1],保证递推数值稳定;
  5. 门控 RMSNorm 后再经out_proj投回 4096 维。

cuda_kernels_forward是快速路径,torch_forward则是纯 PyTorch 参考实现(把扫描手动展开成分块矩阵运算),没有安装 mamba-ssm 的机器也能读懂整段逻辑。

四、MoE 路由逐层拆解:Top-9 专家与 LatentMoE 降维

👉 核心类:NemotronHMoE 与 NemotronHTopkRouter

LatentMoE:专家在 1024 维"潜空间"里计算

每个 MoE 层的前向(modeling_nemotron_h.py#L952-L965):

hidden 4096 ──fc1_latent_proj──▶ 1024 ──路由专家(Top-9)──▶ 1024 ──fc2_latent_proj──▶ 4096 hidden 4096 ─────────────────▶ 共享专家(FFN 宽 5376) ────┘(相加输出)
  • 路由专家的 up/down_proj 全部收在 1024 维(moe_latent_size),单个专家参数量大幅缩小;
  • 共享专家在原维度并行计算,保证每个 token 都有"保底"输出;
  • 这正是"74B 总参数、每 token 只激活 9B"的实现方式。

路由器:sigmoid 打分 + 分组 Top-K

NemotronHTopkRouter 的前向:

  1. 线性层算路由 logits(float32)→sigmoid得到打分;
  2. get_topk_indices支持"先按组选 top 组、再组内选 top-K"的两段式路径,本模型n_group=1,等价于直接全局 Top-9;
  3. 命中的 9 个分数归一化后乘以routed_scaling_factor=5.0作为最终路由权重;
  4. e_score_correction_bias是免 aux-loss 的负载均衡偏置(配置中aux_loss_alpha=0)。

Puzzle 设计:每层专家数量可以不一样

这个模型的 MoE 层不是同构的:config.json 里的block_configs给每个 MoE 层配置了各自的专家数(240~496)与 FFN 宽度(1536~2560),是 Star Elastic 架构搜索的结果。实现见 NemotronHPuzzleConfig:

  • get_nemotron_h_config_for_layer 把某层的块级字段叠加到全局配置,为每层生成一个独立的NemotronHConfig;
  • NemotronHPuzzleForCausalLM 只有 37 行,通过临时替换块类的方式让每层"按自己的配置构建",最大化复用了主干代码。

五、视觉分支:C-RADIO 编码器 + Pixel Shuffle 投影器

👉 入口:NemotronH_Omni_Reasoning_V3

图像输入共四步:

  1. 切块与定位
  • 人工智能
  • 大模型
  • 多模态
  • 本地部署
  • 模型量化

【免费下载链接】NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB
点击查看免费下载
上一篇:Buzz交互设计:创建直观用户界面的原则与实践
下一篇:终极Claude技能开发指南:如何让AI助手成为你的超级工作伙伴?

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 1:29:15

开源物联网平台实战:设备接入、物模型与规则引擎详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/19 1:27:09

STM32+华为云IoT+Qt:智能家居物联网全链路开发实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/19 1:24:01

从缺货到替代:国产MCU选型与替换实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/19 1:24:00

新能源汽车类型识别:VOC数据集解析与YOLO训练实战

简介:面向新能源汽车品牌识别与目标检测任务,这份数据集以VOC格式组织标注信息,覆盖特斯拉、北汽新能源、宝马、比亚迪秦/宋/唐、奇瑞、福特、江淮等常见车型,适用于智慧交通、车辆检索、辅助驾驶等视觉场景。压缩包共2000个XML文…

作者头像 李华