阅读研究雷达投资体系
登录 / 注册
← 返回阅读
资讯实质变化2 分钟阅读DisconfirmAI 编辑部

NVIDIA Dory 4B循环推理块:从GGUF文件头预测成本,以及一个默认跑四圈的陷阱

MarkTechPost实践者Sana Hassan用一篇完整的代码教程演示了NVIDIA Dory 1.0 4B循环推理模型的成本预测方法:从GGUF文件头读取架构参数,推算每圈token的参数量和KV缓存大小,再与运行中的服务器日志对照验证。过程中发现两个实际陷阱——GGUF内置默认循环次数为4而非模型卡推荐的2,以及last_loop缓存模式在分块处理时与per_loop产生可测量的分布差异。

2026-11-08 03:22

NVIDIA Dory 1.0 4B的架构核心是一个共享的循环推理块:中间层构成一个可重复应用的模块,每个token可以经过一次、两次、三次或四次处理。每次额外循环增加计算量但不增加任何参数,因此同一个3.7 GB的GGUF文件可以在四种不同计算预算下运行,无需重新训练。这等于把测试时计算变成了一个加载时设置。

MarkTechPost实践者Sana Hassan的教程展示了一种可复用的验证方法:先从GGUF文件头读取架构元数据,预测每种配置的成本,再启动服务器对照实际日志验证预测是否成立。Dory的72个层条目分为16个输入层、40个共享循环层和16个输出层,循环块占模型39.8亿参数中的18.4亿。一个token经过输入块、循环块(每圈一次)、输出块和语言模型头,因此四圈施加的参数量是单圈的2.51倍,读取的权重字节是单圈的2.28倍。

KV缓存的行为取决于循环次数和缓存模式的组合。per_loop模式为循环块中每个注意力层的每一圈保留独立缓存,在4096上下文长度下从单圈的306 MiB增长到四圈的816 MiB;last_loop模式只保留一份缓存,无论几圈都维持306 MiB。这一差异在分块处理长提示时会产生可测量的后果:当提示被切成16个token的小块时,last_loop和per_loop的下一token分布出现分歧,因为早期块只保留最后一圈的键值。

教程暴露的第一个陷阱是默认值。GGUF文件头内置的循环次数是4,而NVIDIA模型卡推荐2。不显式覆盖这个设置,服务器静默运行最昂贵的配置。第二个陷阱是版本锁定:Dory在llama.cpp上游的支持仍是一个开放草稿PR(编号30306),没有已发布的二进制能加载这个模型,必须从特定fork的特定提交构建。

在30道配对GSM8K题目上的评估显示,四圈比单圈生成更少的token——中位数比值的95%置信区间上界低于1,即整个区间都在1以下,但解码速度显著下降。由于样本量小,精确度差异无法在统计上区分。作者明确标注了不可测试的声明:模型卡上的SWE-bench、Terminal-Bench、GPQA基准表、256K上下文和NVFP4预训练均无法在此教程中验证。

两条实操教训不依赖具体测量数字:始终显式设置循环次数,因为GGUF默认四圈;始终固定fork提交哈希,因为上游支持尚未合并。

来源

  • marktechpost.comMarkTechPost↗
带入研究 →
登录 / 注册
阅读研究雷达投资体系