一个4B参数的模型,在SWE-bench Verified上拿到61.8。英伟达自己给出的对照表里,Qwen3.5-9B是61分——参数量是它的两倍多。分数更高,体积更小,听起来像是稳赢的一手。
但截至10月18日,这个模型在原生llama.cpp、vLLM、Transformers上都跑不起来。三家的支持要么没合并,要么压根没有。它叫NVIDIA Nemotron Labs Dory 1.0 4B,10月16日出现在Hugging Face上,带着模型卡和GGUF仓库,没有配套博客,模型卡里也没挂论文链接。
分数和可用性之间的这道缝,就是Dory现在的全部处境。
“4B”只是磁盘上的体积
Dory是循环结构,每个token不是过一次固定层栈就完事。它分三块:8层输入块、20层共享循环块、8层输出块。循环块每个token可以跑1、2、3或4次,次数在启动时选,不用重新训练。输入块在每一轮循环里都会被重新喂回去。
1次循环,一个token过8+20+8=36层;4次循环,就是8+80+8=96层。磁盘上它还是4B,但4次循环时,每个token付出的算力相当于一个深得多的模型。英伟达推荐的默认值是2次,模型卡的原话是“循环带来的大部分精度增益来自第二次”。4次循环留给SWE-bench、Terminal-Bench这类智能体编程任务。
其余规格:归一化GPT架构,滑动窗口注意力(窗口1024 token)与全注意力层混用,每三层滑动配一层全注意力;256K上下文;词表131,072;隐藏维度2,560;16个查询头、4个KV头、头维度256。预训练约6T token,前约4.5T用NVFP4原生训练,其余用BF16,之后是300B token的上下文扩展,再做SFT和基于GRPO的强化学习,覆盖数学、代码、科学等环境。仅英文,训练含43种编程语言。许可证是OpenMDW v1.1,模型卡写明“可用于商业或非商业用途”。
强在智能体,弱在记事实
下面这些数字全部来自英伟达自己的评测框架,目前没有找到任何独立复现。模型卡里那张Artificial Analysis指数图是内部估算,英伟达自己说明可能与官方分数有偏差。
循环次数从1加到4,AA-Omniscience这一项几乎不动:10.03、10.08、10.03。循环给的是更多推理步数,变不出4B参数里本来就没装进去的事实。GPQA和HLE同理,各个循环次数下Dory都落后于Qwen3.5-4B。
它赢的地方是另一类:IFBench指令遵循,比Qwen3.5-4B高出20多分;长上下文推理AA-LCR;以及跑2次以上循环后的SWE-bench。这个画像适合当本地编程智能体或工具调用工人,不适合当口袋百科。
对照表还有几处要留神。卡里同时列了Gemma 4 26B A4B和Qwen3.6-35B-A3B,都是更大的模型,其中Qwen3.6的SWE-bench 73.4分是引用数字,英伟达没跑。卡里没有Phi的行,也没有同尺寸的Gemma。想看Dory对Phi-4-mini的同算力对比,英伟达没发。
内存账:循环的代价在KV缓存
模型卡没给最低内存要求,只能从文件和配置推。默认的per_loop模式下,每次穿过循环块都保留自己的缓存。config.json里有9个全注意力层:输入块2个、循环块5个、输出块2个。每层每token存4个KV头×256维×K和V×2字节=4 KiB。per_loop下循环块那5层按循环次数重复计,2次循环就是14份全注意力缓存,32K上下文约1.75 GiB,跑满256K约14 GiB。4次循环是24份,256K下约24 GiB。滑动窗口层永远只存1024 token,基本不计。
解法是last_loop模式,不管跑几次循环,每个循环注意力层只留一份缓存,回到9份,256K约9 GiB,32K约1.1 GiB。英伟达的说法是精度“接近per_loop模式”。内存紧张就先改这个。
现在怎么跑:靠一个PR构建
支持在llama.cpp的PR #30306里。它是草稿状态,需要两个批准,还在等CISC和ggerganov的评审。10月17日有人问是否还有阻塞项,至今没回复。PR描述自己写着Metal未测试、长上下文资格验证没做完。
GGUF模型卡给的构建说明偏偏是Apple Silicon上的Metal,用的是作者fork里的固定提交:
- git init llama.cpp-dory
- cd llama.cpp-dory
- git remote add origin https://github.com/brianchmielNV/llama.cpp.git
- git fetch --depth 1 origin 98a74c97ea09ac72f6ceda1559808fc0a2f447ce
- git checkout --detach FETCH_HEAD
完整的macOS cmake调用(Metal、Apple BLAS、只编server)在GGUF页面上。Linux加NVIDIA卡,按常规方式编同一个提交即可(cmake -B build -DGGML_CUDA=ON)。PR报告CPU和CUDA上96/96项数值检查通过,但英伟达没发Linux配方。
仓库里的文件名是NVIDIA-Nemotron-Labs-Dory1.0-4B-Q5_K_M.gguf,模型卡的命令却写dory-q5_k_m.gguf,下载后要改名。校验再起服务:
- echo "96080be49ffd67b916018b7bdef8c484762576fb52780e10ab98ac4978a660e0 dory-q5_k_m.gguf" | shasum -a 256 -c -
- ./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:per_loop"
想拿精度换速度就改dory.num_loops,1到4。想压缓存就把per_loop改成last_loop。--no-context-shift是必须的,PR不支持上下文平移,撞到4096 token请求就停,内存够就调大--ctx-size。给编程智能体用时,模型卡要求在extra_body里传"chat_template_kwargs": {"force_nonempty_content": True}。
Ollama、vLLM、Transformers各自卡在哪
GGUF页面的Hugging Face Local Apps菜单提供ollama run hf.co/nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-GGUF:Q5_K_M,但模型卡只写了llama.cpp PR构建,从没提Ollama或通过它覆盖循环参数。这行命令现在大概率跑不通:Ollama只能跑引擎支持的架构,dory架构不在上游llama.cpp里,PR也完全没提Ollama。等合并,再等一个Ollama版本。
vLLM的支持在PR #60149,开着,零批准。有维护者要求先把模型并进Transformers,免得vLLM反复改配置;作者回复没有提Transformers PR的计划,维护者退而求其次,按Transformers配置惯例尽力兼容。另外作者主张PR走原生实现而非vLLM的Transformers后端,目前没有vLLM维护者回应。编那个分支的话,模型卡的serve命令大致是:
- vllm serve --model nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-BF16 --hf-overrides '{"n_recurrent_loops": 2, "recurrent_kv_cache_mode": "per_loop"}' --max-model-len 262144 --max-num-seqs 128 --enable-prefix-caching --async-scheduling --reasoning-parser nemotron_v3 --tool-call-parser qwen3_coder --enable-auto-tool-choice
vLLM里推理始终开着。显存装不下256K的per_loop缓存,就调低--max-model-len。
Transformers是最怪的一环。仓库标着library_name: transformers,模型卡却没有Transformers代码片段。config.json声明"model_type": "dory",仓库里没有modeling_*.py,截至今天Transformers主分支没有models/dory目录(PyPI最新版5.20.1)。vLLM讨论串里作者说英伟达目前不打算提Transformers PR,所以在当前发行版上大概率报未知架构错误。
这周值不值得试
8GB空闲内存的Mac,值得。编那个固定提交,用last_loop跑2次循环,接一个小型编程智能体。循环设计是今年4B发布里最有意思的东西,启动时能改深度,这个特性希望每个小模型都有。
其他环境,建议再等两周。分数是自己报的,两个运行时PR都可能再改配置键名,知识类分数意味着依赖记忆事实的活还是得交给Qwen3.5-4B。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.