一句话结论:NVIDIA Nemotron Labs 的 Dory 1.0 4B 用一份 3.7GB 的 GGUF 权重就能跑出四档算力,从 1 圈到 4 圈共享同一个检查点,切换靠推理时的一个参数,不重训也不换模型。
过去两年小模型的路线很固定。要么做大参数换准确率,要么砍小换速度,两头都在互相挤。NVIDIA Nemotron Labs 10 月 16 日发布的 Dory 1.0 4B 换了个思路,把层堆拆成输入块、循环块、输出块三段,中间那 20 层做成可复用的共享块,推理时决定它跑几遍。跑一遍省算力,跑四遍换准确度,同一份权重服务全部四档需求。
这批成绩单在 11 月被一份 llama.cpp 实操指南带进了大众视野,指南把整条链路从编译、下载、校验一路跑到服务端实测。下面按架构、跑分、显存、部署四层把它拆开。
36 层拆成 8 + 20 + 8 的循环架构
Dory 1.0 4B 的架构官方称为 looped (latent-recurrent) normalized-GPT,底层是 nGPT 骨架,交替使用滑动窗口注意力与完整注意力层。总参数量 4B,上下文长度最高 256K,官方支持语言为英语。
关键在层堆的三段划分。输入块 I 有 8 层,循环块 R 有 20 层,输出块 O 有 8 层。R 块不是一个复制四遍的副本,而是一组共享权重,每一轮循环都会把输入重新注回去。
这个设计带来两个直接后果。参数量在所有档位下恒定,循环增加的是每个 token 的计算量,而不是权重规模。另一层后果更反直觉,NVIDIA 的模型卡明确写了,循环次数增加时模型完成同一批任务所需的生成 token 反而更少,多出来的算力被花在了隐空间推理上,而不是更长的输出里。
训练侧还有一条容易被忽略的信息。Dory 的预训练原生跑在 NVIDIA 自家的 NVFP4 四位浮点格式上,之后再切到 BF16 继续训练。数据规模是 6 万亿 token 预训练加 3000 亿 token 上下文扩展,强化学习阶段用了 GRPO,覆盖数学、代码、科学、指令遵循、多步工具调用、多轮对话与结构化输出。
发布格式一共四种。BF16 是原版,基准分都出自这一版。MXFP8 是 8 位权重 16 位激活,NVFP4 是 4 位权重 16 位激活。给本地跑的还有 Q5_K_M 的 GGUF 量化版。在 DGX Spark 上相对 BF16,MXFP8 的推理加速在 1.69 倍到 1.84 倍之间,NVFP4 是 2.17 倍到 2.44 倍。
循环档位的真实分数差:官方跑分全表
下面是 NVIDIA 在统一评测框架下测出的完整分数。表内前三列是 Dory 自己在 1 圈、2 圈、4 圈下的成绩,后四列是对照模型。
| 任务 | Dory 1 圈 | Dory 2 圈 | Dory 4 圈 | Qwen3.5-4B | Qwen3.5-9B | Gemma 4 26B A4B | Qwen3.6-35B-A3B |
|---|---|---|---|---|---|---|---|
| SciCode | 27.3 | 34.94 | 35.11 | 25.82 | 28.21 | 40.32 | 37.24 |
| SWE-bench Verified | 50.3 | 59.5 | 61.8 | 54.7 | 61 | 57.40 | 73.4 |
| Terminal-Bench 2.1 | 12.5 | 18.1 | 22.2 | 15 | 24 | 35 | 43 |
| τ³-bench (Banking) | 11.6 | 12.89 | 14.69 | 5.03 | 7.22 | 13.66 | 9.54 |
| GDPval-AA-V2 (Elo) | 815 | 946 | 967 | 424 | 546 | 751.6 | 987 |
| GPQA Diamond (无工具) | 69.19 | 72.41 | 72.16 | 77.71 | 80.93 | 80.43 | 85.35 |
| HLE (纯文本,无工具) | 8.25 | 10.89 | 10.43 | 11.31 | 15.43 | 17.79 | 19.18 |
| IFBench | 74.29 | 77.94 | 79 | 53.83 | 59 | 77.89 | 57.44 |
| AA-LCR | 63 | 71 | 73 | 64.7 | 68.4 | 64.6 | 68.5 |
| AA-Omniscience (准确率) | 10.03 | 10.08 | 10.03 | 15.02 | 18.05 | 21.13 | 19.95 |
表里有几处值得停下来看。
代码类任务对循环最敏感。SWE-bench Verified 从 1 圈的 50.3 涨到 4 圈的 61.8,提升 11.5 分,Terminal-Bench 2.1 从 12.5 涨到 22.2,接近翻倍。4 圈的 Dory 在这两项上都压过了 Qwen3.5-4B 与 Gemma 4 26B A4B。
但循环不是万能药。GPQA Diamond 在 2 圈是 72.41,4 圈反而回落到 72.16。HLE 同样是 2 圈 10.89 领先,4 圈退到 10.43。通用知识项 AA-Omniscience 三档几乎完全没动,10.03 / 10.08 / 10.03。模型卡给出的解释是,循环带来的准确率增益大部分来自第二圈,第三圈往后收益迅速变小。NVIDIA 推荐把 2 圈作为默认起点。
对照里最扎眼的是 AA-Omniscience 一列。Qwen3.5-4B 拿 15.02,Qwen3.5-9B 拿 18.05,Gemma 4 26B A4B 拿 21.13,Dory 三档全在 10 出头。4B 规模的知识储备就是知识储备,靠循环补不回来。终端指令类的 IFBench 是另一面,Dory 1 圈 74.29 已经压过 Qwen3.5-9B 的 59。
值得单独记一笔的是 GDPval-AA-V2 的 Elo。Dory 从 1 圈的 815 跳到 2 圈的 946,再到 4 圈的 967,已经逼近 Qwen3.6-35B-A3B 的 987,而后者参数是它的近九倍。真实工作交付能力上的差距,比知识题上的差距要小得多。
两种 KV 缓存模式,显存差出几倍
一般的循环架构有个通病。权重共享了,但每一圈仍要各存一份 KV cache,循环次数一加,显存就跟着涨。Dory 为此提供了 last-loop 缓存模式,每个循环注意力层只保留最后一份 KV 状态。
启用后,无论循环设几圈,KV 缓存占用都保持在与 1 圈等效的水平,等于把循环的额外成本完全压回计算侧。NVIDIA 内部实验记录,last-loop 与 per_loop 的准确率接近,输出长度也几乎没有差别。
两种模式在参数层面就是一个开关。per_loop 是 dory.recurrent_kv_cache_mode=str:per_loop,last_loop 是把值换成 last_loop。模型卡同时提到,per_loop 模式下每加一圈内存就涨一档,last_loop 模式下则保持 1 圈的尺寸不变。
对小模型本地部署来说这一点分量很重。KV cache 常年是长上下文场景的显存大头,同样是 8K 上下文,per_loop 的 4 圈配置和 last_loop 的 4 圈配置在显存账上是两张完全不同的表。站内关于固定 KV 缓存与并发实测的讨论可以参考 EdgeRock-4B 开源:72 MiB 固定 KV,AIME 82.9 分,同一套显存账的算法在更小的模型上更极端。
3.7GB 的 GGUF 怎么跑起来
现在到实操环节。截至目前 llama.cpp 上游还没有合并 Dory 的支持,相关 PR 仍是草稿状态,所以必须按模型卡指定的 commit 编译,不能直接用发行版。
指定分支是 NVIDIA 工程师 Brian Chmiel 的 fork,commit 为 98a74c97ea09ac72f6ceda1559808fc0a2f447ce。Apple Silicon 编译要带上 Metal 相关 flag,CUDA 机器则需要按自己显卡的算力版本编译内核。
权重文件是 NVIDIA-Nemotron-Labs-Dory1.0-4B-Q5_K_M.gguf,预期大小 3,673,288,864 字节。校验值给了 SHA-256,可以直接对着比。
echo "96080be49ffd67b916018b7bdef8c484762576fb52780e10ab98ac4978a660e0 dory-q5_k_m.gguf" | shasum -a 256 -c -
服务端的启动参数里,真正决定档位的是 –override-kv 那一段。dory.num_loops 设成 1、2、3、4 任一整数都行,dory.recurrent_kv_cache_mode 决定用哪种缓存。完整命令大致是这样。
./build/bin/llama-server -m ./dory-q5_k_m.gguf --alias dory \
--host 127.0.0.1 --port 8080 -ngl 999 \
--ctx-size 4096 --parallel 1 \
--batch-size 512 --ubatch-size 512 \
--cache-type-k f16 --cache-type-v f16 \
--flash-attn off --no-context-shift \
--jinja --reasoning on \
--temp 1.0 --top-p 0.95 --top-k 0 --min-p 0 --repeat-penalty 1 \
--override-kv "dory.num_loops=int:2,dory.recurrent_kv_cache_mode=str:last_loop"
服务起来后 Web 界面在 8080 端口,OpenAI 兼容接口同样在 8080 的 /v1 路径下,模型标识取 –alias 设的名字。采样参数官方建议温度 1.0、top_p 0.95。
如果是多卡或要压吞吐,vLLM 侧也有对应支持,但当前同样在 PR 阶段,需要按 PR 号安装。相关的部署细节,站内 Ollama 并发怎么设:NUM_PARALLEL 实测与四种崩法 那篇讲的本地服务并发调优,对照着看能少踩一些坑。
什么场景该用几圈
把上面的分数翻译成决策规则,其实不复杂。
日常问答、分类、摘要这类不吃知识的活,1 圈足够。4 圈在 AA-Omniscience 上和 1 圈一样是 10.03,多花三倍算力换不到任何东西,纯亏。
代码修改、终端操作、多步工具调用这类要动手的活,2 圈是甜点。SWE-bench 从 50.3 跳到 59.5,Terminal-Bench 从 12.5 到 18.1,两项都是最大单跳增幅。
只有当准确率压过一切时才上 4 圈。SWE-bench 4 圈 61.8,GDPval Elo 967,都是全场最高,但 GPQA 和 HLE 反而不如 2 圈,而且吞吐会按比例往下掉。
显存紧张的机器优先开 last_loop 缓存,这样 4 圈和 1 圈的缓存占用一样,代价只是算得更慢。上下文长度也要匹配着调,模型卡给的 256K 是上限,本地实跑的常见起点是 4096。
同一档位内部还有选择空间。4B 这个体量放在消费级卡上跑得动,但要不要选它,取决于你的任务是不是本地推理。本地模型选型的显存账怎么算,站内 Qwen-Image 与 FLUX 显存对比:22GB 卡跑 1024 实测 里算的是图像任务,换成文本任务时口径会松一些,但权重大小先决定能不能装下的道理是通的。像 Recursive Flint 开源:40B 只激活 2.5B,本地跑 131 tok/s 那样用稀疏激活压低实际算力需求,和 Dory 用循环换准确度,是同一张牌的两面。
常见问题
Dory 1.0 4B 到底是什么,和普通小模型的最大区别在哪
它是一个 4B 参数的 looped 小模型,核心差别是中间 20 层做成共享块,可以在推理时决定跑 1 到 4 遍。同一份权重因此能服务四档算力预算,不需要重训也不需要换模型,普通模型的速度与能力取舍在训练时就固化了。
循环开到 4 圈就一定更好吗
不一定。代码类任务确实持续变好,SWE-bench Verified 从 50.3 涨到 61.8。但 GPQA Diamond 4 圈 72.16 比 2 圈 72.41 低,HLE 也从 10.89 退到 10.43。NVIDIA 自己的建议是 2 圈起步,收益的大头在第二圈。
本地跑 Dory 需要什么硬件
一份 3.7GB 的 Q5_K_M 量化权重加一张消费级显卡就能起步,Apple Silicon 走 Metal。但需要自己按指定 commit 编译 llama.cpp,官方发行版目前还加载不了这个模型。官方没给明确的最低显存要求,实际占用取决于上下文长度、循环档位和是否开 last-loop 缓存。
小结
Dory 1.0 4B 把小模型的一个长期矛盾换了个问法。以前要速度就得把模型做小,要能力就得把模型做大,现在可以在推理时按任务调节计算量,一份权重覆盖从 1 圈到 4 圈的需求,而且加圈数不掉参数不掉显存(前提是开 last-loop 缓存)。
它当然不是万能答案。知识储备那一栏它就是打不过同规模的 Qwen 与 Gemma,4 圈也补不上。真正亮眼的是代码与终端任务,以及 GDPval 那个 967 的 Elo。编码智能体在这个尺寸上的能力基线有多高,可以对照 Recursive Flint 开源 与 Hy-Nomas 拆解 两篇本地实测看看。
延伸阅读
- OpenAI 拟融资 300 亿美元:1.25 万亿估值背后的算力账单2 周前
- Together AI 编译器提速推理 2.6 倍:单配置 24 小时内3 天前
- llm-d 1.0发布:17000节点吞吐提升2.9倍,首token延迟砍掉85%3 周前
- 阶跃星辰 600B MoE 旗舰 Step 5 Preview 上线 22 小时 GPU Kernel 优化到 508 TFLOPS1 月前
继续读
同一批更新里这几篇值得一看:
- Ollama 并发怎么设:NUM_PARALLEL 实测与四种崩法2026-11-08
- ComfyUI API 批量出图:提交成功却拿不到图的五个坑2026-11-08
- DeepSeek Harness 密钥放哪:四层解析与五个报错2026-11-08
