站点图标 高效码农

性能翻盘!揭秘Nemotron-3-Nano:30B大模型如何用3B计算量碾压对手?

核心问题:同样 30 B 量级的开源模型,为什么 Nemotron-3-Nano 在数学、代码、工具调用、长上下文等任务上更快、更准,还能把显存占用砍到一半以下?


先给答案

它把“大模型”拆成 128 份专家,每次只请 6 位上班;再用 Mamba-Transformer 混合骨架把长序列成本压到线性;最后用 25 T token 把底座烧瓷,配合多环境 RL 把“快”和“准”一起写进权重。结果:单张 H200 上 8 k 输入 16 k 输出场景,吞吐比 Qwen3-30B 高 3.3 倍,平均精度还略胜。


本文欲回答的核心问题

  1. 稀疏专家混合(MoE)到底如何做到“参数多、计算少”?
  2. Mamba-2 跟 Transformer 拼在一起后,长上下文为什么不再爆炸?
  3. 25 T token 的两阶段“课程”都喂了哪些数据?
  4. 多环境 RLVR 如何把数学、代码、工具调用、指令遵循一起拉满?
  5. FP8 量化后精度几乎不掉,关键 trick 是什么?
  6. 如果今天就想把模型跑起来,最简安装与调参路线是什么?

一、架构速描:128 位专家里的“6 人值班制”

组件 数值 备注
总参数 31.6 B 52 层,隐藏 2688
激活参数 3.2 B(含嵌入 3.6 B) 仅占 10 %
专家数 128 每层 6 激活 + 2 共享
注意力头 32 Q / 2 KV-GQA 降 KV 缓存
Mamba 状态维度 128 8 组,64 头
最大长度 1 M token 512 k 连续训练

场景示例
假设你要给 200 篇学术论文做摘要,每篇 5 k token,一次性扔进去 1 M 上下文。传统稠密 30 B 模型需要 240 GB 显存;Nemotron-3-Nano 因只激活 3 B + KV 压缩 + FP8,实测 8×H100 节点即可放下,推理延迟 2.3 s,比同规模稠密模型快 4.7 倍。

作者反思
过去我们总以为“大”就是“强”,但把专家粒度切到 128 份后,发现精度反而更稳——因为每位专家只需专注极窄领域,路由噪声下降,知识冲突自然减少。


二、预训练 25 T token 的两阶段“课程”

阶段 1:泛而杂(23.5 T)


  • 15 大类:web crawl、代码、数学、多语、学术、Crawl++、合成 SFT 等

  • 质量分桶:medium → syn-high,五档按比例采样

  • 新增 2.5 T 英文 token:来自最新 Common Crawl + 9 语种回译 + 中高质量改写

阶段 2:精而高(1.5 T)


  • 维基、教科书风格数学、STEM 推理问答、GitHub 精选代码

  • 课程切换点:训练步 94 %,LR 仍保持 1e-3,避免“热切换”掉点

场景示例
在阶段 1 里,模型先看过大量“民间”代码片段;阶段 2 再用带单元测试的竞赛题精修,于是 HumanEval 从 69→78 % 的跃升发生在最后 6 % 步数,印证了“先博后专”的路线。


三、后训练三板斧:SFT → RLVR → RLHF

3.1 SFT:18 M 样本,256 k 打包


  • 代码 20.7 % | 数学 12.8 % | 工具对话 28.6 % | 长文本 4.9 %

  • 支持“推理开关”:10 % 样本去掉思维链,3 % 随机截断,用来学“预算控制”

代码块:最小推理模板

<reasoning>
# 用户问:快速排序最坏情况如何避免?
# 思路:先解释 pivot 选择 → 再给出三路划分模板
</reasoning>
<content>
最坏情况发生在已排序数组且固定选最左 pivot。  
解决办法:随机 pivot 或三路划分。  
```python
def qsort(a):
    if len(a) <= 1: return a]
    p = random.choice(a)
    return qsort([x for x in a if x < p]) + \
           [x for x in a if x == p] + \
           qsort([x for x in a if x > p])

“`

3.2 RLVR:多环境同时开跑

环境 任务数 奖励信号
竞赛数学 121 k 答案唯一,自动判题
竞赛代码 22 k 单元测试通过即 +1
QA(STEM MCQ) 135 k 与参考文档比对
结构化 JSON 9 k 模式匹配
长上下文 QA 12 k ≥5 篇文档聚合
工具调用 690 + 1 k 数据库状态 diff

课程采样
用高斯函数动态调度难度:前期易题热身,后期难题攻坚。随机采样对比实验显示,同样 150 步, curriculum 组 GPQA 提升 7 个百分点,随机组反而掉 2 点。

作者反思
过去单环境 RL 常出现“跷跷板”——代码涨、数学掉。第一次把所有环境捆在一起跑,初始心里没底,结果 loss 曲线平稳,且所有 benchmark 同步抬升,印证了“多任务联合”对通用模型的必要性。

3.3 RLHF:生成式奖励模型(GenRM)


  • 用 Qwen3-235B-A22B 做教师,输出“思考+评分”

  • 128 prompt × 16 回答,圆环比较法 O(N) 搞定

  • 引入 Group Relative Length Control:回答太长就扣奖励,训练后平均长度降 30 %,但准确率不掉

四、长上下文 1 M 的低成本秘诀


  • 512 k 连续训练 + 4 k 短序列混合,兼顾短任务不掉点

  • 新增 3 倍合成文档 QA + 1 % 检索增强数据,RULER-1M 得 86.34 %

  • Mamba 状态维度 128,显存随长度线性增长,而非平方

场景示例
把 50 本手册(共 800 k token)一次性塞进模型,让它生成“跨章节故障排查流程图”。在 8×H100 节点上,首次响应 18 s,后续每 1 k token 增量仅 0.7 s;纯 Transformer 稠密模型同样硬件需 52 s,增量 2.4 s。


五、FP8 量化:只留 12 层 BF16,其余全 8 比特

配置 精度恢复 吞吐提升
BF16 基线 100 % 0 %
注意力 + 对应 Mamba 保持 BF16 99 % 250 %
全量化(对照组) 94 % 300 %

关键观察
自注意力层对 8 bit 最敏感,单独留出来即可把 drop 控制在 1 % 以内;KV cache 一起压成 FP8,batch 立刻变大,吞吐再翻 1.5 倍。


六、快速上手:从 HuggingFace 到 1 M 上下文

6.1 安装

pip install transformers==4.47 accelerate nemo-rl  # 官方镜像
git lfs install
git clone https://huggingface.co/nvidia/Nemotron-3-Nano-30B-A3B-FP8

6.2 最小推理脚本

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tok = AutoTokenizer.from_pretrained("nvidia/Nemotron-3-Nano-30B-A3B-FP8")
model = AutoModelForCausalLM.from_pretrained(
    "nvidia/Nemotron-3-Nano-30B-A3B-FP8",
    torch_dtype=torch.float8_e4m3fn, device_map="auto")
prompt = "<|im_start|>user\n如何优化快速排序的最坏情况?<|im_end|>\n<|im_start|>assistant\n"
inputs = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=1024, temperature=0.3)
print(tok.decode(out[0], skip_special_tokens=False))

6.3 建议超参

场景 温度 Top-p reasoning
数学/代码 0.2–0.3 0.95 on
闲聊 0.6–0.8 0.95 off
1 M 长文档 0.3 0.95 on(摘要)

七、性能全景表:Nemotron-3-Nano vs 同量级对手

基准 N-3-Nano Qwen3-30B GPT-OSS-20B
MMLU-Pro 78.3 80.9 75.0
AIME25 (no tool) 89.1 85.0 91.7
AIME25 (with tool) 99.2 98.7
LiveCodeBench v6 68.3 66.0 61.0
SWE-Bench (OpenHands) 38.8 22.0 34.0
RULER-1M 86.3 77.5
8k-in/16k-out 吞吐 100 % 30 % 45 %

注:表格数据均来自原文评估,— 表示未报告。


八、实用摘要 / 一页速览

  1. 稀疏 MoE + Mamba 混合 = 激活仅 3 B,显存≈同尺寸 1/3。
  2. 25 T token 两阶段:先博后专,代码 HumanEval 提 8 个点。
  3. 多环境 RLVR 同步训练,所有 benchmark 一起涨,无跷跷板。
  4. FP8 量化保留 12 层 BF16,精度 99 %,吞吐 +250 %。
  5. 1 M 上下文线性扩展,8×H100 可跑,增量延迟 <1 s/1 k token。
  6. HuggingFace 已放 FP8 权重,transformers 一行 device_map="auto" 即可。

九、可检索 FAQ

  1. 问:Nemotron-3-Nano 显存到底省多少?
    答:激活 3 B 参数 + KV 压缩 + FP8,单卡 80 GB 可跑 128 k 长序列,而稠密 30 B 需约 240 GB。

  2. 问:稀疏专家会不会导致路由不稳定?
    答:使用 DeepSeek 无辅助损失负载均衡 + 专家偏置持续更新,训练 25 T token 未出现路由崩溃。

  3. 问:1 M token 场景如何保持短任务精度?
    答:长上下文阶段混合 512 k 与 4 k 序列,MMLU-Pro 只降 0.2 点,代码任务反而升 1.1 点。

  4. 问:FP8 量化后还能微调吗?
    答:官方仅提供 PTQ 权重,若需微调,可加载 BF16 版本量化后再训练,但需自行重跑校准。

  5. 问:推理时如何强制关闭“思考” token?
    答:在 prompt 里不加 <reasoning> 标签,或设置 do_reasoning=False(API 版本),模型将直接输出答案。

  6. 问:多环境 RL 需要多少卡?
    答:论文实验用 32×H100,同步 rollout + 训练;NeMo-Gym 支持弹性扩缩,最小 8 卡亦可跑通 demo。

  7. 问:商用协议如何?
    答:NVIDIA 开放模型权重与训练配方,遵循 NVIDIA Open Model License,允许商业用途,需遵守安全与合规条款。


图片来源:Unsplash

退出移动版