Hidden Decoding:不加层,给每个 token 多走几步暗路
有一种很朴素的扩展大模型办法:模型答题前,让它多想一会儿。
我们已经熟悉可见的“多想”:让模型写更长的 chain-of-thought,采样更多候选答案,或者在测试时多花 compute。问题是,这些“多想”大多发生在输出文本里。它们会变长、变慢,也会把推理痕迹暴露给用户。
这篇论文问了一个更工程化的问题:如果一个很强的 Transformer 骨干已经训练好了,我们能不能不加层、不加宽、不重新从头预训练,只让每个 token 在模型内部多走几步?
论文给出的答案叫 Hidden Decoding。直觉上,它像给每个 token 开了几条“暗路”:同一个 token 不再只对应一个 embedding,而是被展开成 n 个 stream。前 n-1 条 stream 不直接预测下一个词,只在内部积累状态;最后一条 stream 才接语言模型头、承担 next-token loss。模型看起来仍然是同一个 Transformer 骨干,但每个 token 在进入预测前,已经沿着序列维度多经过了几段隐性计算。

先把三个概念放在桌面上
第一是“固定骨干缩放”。通常我们说 scaling,是把模型做大:更多层、更宽 FFN、更多专家、更久预训练。但对已经很大的模型来说,这意味着昂贵的新一轮训练和部署成本。固定骨干缩放的野心更克制:Transformer 的主体参数不变,只改变每个 token 使用这些参数的方式。
第二是“latent computation”。它不是让模型在屏幕上多写几行思考,而是在 hidden state 里多做中间步骤。你可以把它想成草稿纸被藏在模型内部:最终答案只从最后一格交卷,但前面的格子可以帮它整理候选、排除噪声、积累上下文。
第三是“序列维度”。过去很多 latent computation 方法走的是深度循环:同一批 hidden state 反复穿过同一套层,像在楼梯间来回跑。Hidden Decoding 换了方向:不反复走楼梯,而是把走廊加长。每个 token 展开成多条 stream,作为更长的输入一次穿过模型。这个选择看似绕,但它正好避开了大规模 MoE 训练里最要命的 pipeline parallelism 冲突。
为什么“循环几遍 Transformer”不够用?
我们可能会想:既然要让 token 多算几步,最直接的办法就是把同一组 Transformer block 重复用 K 次。参数没变,计算变多,听上去很自然。
问题出在规模上。
大型 MoE 模型训练依赖 pipeline parallelism。它默认一个输入顺着模型阶段向前流动,每个 stage 接力处理,这样 GPU 才能持续忙起来。深度循环打破了这个节奏:同一批 hidden state 要回到前面的 stage 再跑一轮,流水线会被迫等待,GPU 利用率下降。论文指出,looped language models 因此一直没真正进入超大规模:最大的是 40B dense LoopCoder,而且没有使用 pipeline parallelism;其他 looped 模型多停留在几十亿参数量级。
Hidden Decoding 的关键工程判断是:别在深度上回头,改在长度上前进。长度扩展只是把输入变长,仍然是一次 forward pass,天然适配大模型训练栈。每个原始 token x_i 通过 n 个独立 embedding table 变成 E1(x_i), E2(x_i), …, En(x_i),再交错排成长度 nL 的序列。loss 只打在最终流 En 的位置上,用它预测下一个 token;前面的 stream 没有直接监督,充当中间隐状态。
这一步很重要:它不是简单复制 token。论文特意使用 n 个独立 embedding table,让不同 stream 从一开始就有不同初始表示;同时保留中间 stream 的 KV cache,让这些隐性计算不仅影响当前 token,也能作为后续 token 的上下文。
真正的瓶颈:长度变长后,注意力会爆炸
把每个 token 展开成 4 条 stream,听上去像只是 4 倍长度。但如果每一层都在完整 nL 序列上做 dense attention,注意力成本不是 4 倍,而是 n² 倍。n=4 时就是 16 倍;长上下文和大 MoE 下,这基本不可训练。
论文的解法叫 Stream-Factorized Attention。它做了一个很务实的切分:多数层只允许同一条 stream 内部 causal attention,少数层才允许跨 stream 混合。这样,每条隐流大部分时间各自向前走,偶尔在关键层交换信息。

这不是一个纯理论口号,论文给了实测成本。HD4 表示 n=4。按 dense attention,4 倍扩展应接近 16 倍注意力成本;而在 WeLM-HD4-80B 上,256k 扩到 1M 的 per-batch time 是 baseline 的 5.1×;在 WeLM-HD4-617B 上,32k 扩到 128k 是 4.4×。这两个数都接近线性的 4×,远低于 16×。
这里还有一个 WeLM 特有的工程加成:KV-mirror。论文说在 80B 和 617B 模型里,最后三分之一层是 mirrored layers;因为中间 stream 不直接承受 loss,部分 mirrored 层可以跳过中间 stream 的计算。一个 80B、32k 训练设置中,这个优化把 per-batch time 从 15 秒降到 12 秒,约 20% reduction,也就是 1.25× speedup。但论文也很清楚:这个 KV-mirror saving 是 WeLM 架构特定的;Stream-Factorized Attention 的近线性设计,才是方法本身可迁移的部分。
617B 规模上的证据:它确实涨分,但比较边界要看清
论文最强的 claim 是:Hidden Decoding 第一次把这种 sequence-length scaling 展示到了 100B+ MoE 规模。主实验训练了 WeLM-HD4-80B 和 WeLM-HD4-617B,两者都是 n=4,Transformer 骨干不加层不加宽,activated parameters per token 分别仍是 3B 和 23B。
训练预算也值得注意。80B 的 non-HD base path 总计 20.39T tokens;HD4 从 19.32T 位置启动,之后只训练 0.50T 的 32k continuation 和 0.57T 的 256k continuation,总计 1.07T。617B 的 non-HD path 是 17.06T;HD4 从 15.86T 启动,之后 0.59T 32k 加 0.30T 256k,总计 0.90T。换句话说,HD 的高成本阶段集中在训练很晚的位置,约等于完整 non-HD base path 的 5.3%。
在 early SFT-only 后处理下,HD 模型在九个共享 hard benchmarks 上都优于匹配的 non-HD 模型。80B 上,SciCode 从 45.8 到 50.0,PHYBench 从 69.8 到 73.8,FrontierMath 从 45.8 到 49.0。617B 上,GPQA Diamond 从 89.1 到 91.2,HLE 从 33.6 到 35.4,FrontierMath 从 49.0 到 51.0,MMMLU 从 86.4 到 87.5。
这组结果的意义,不在于“某个榜单刷高了几分”,而在于 controlled comparison:同一骨干、同一 early SFT recipe、无 RL,只把 Hidden Decoding 打开。论文还补充,617B 的 HD long-context stage 反而比 non-HD 更短:0.30T vs. 0.61T,所以这部分增益至少不是靠更多 long-context tokens 简单堆出来的。
但边界同样要写清。Kimi K2.6 被放进表 2 只是 absolute score scale 的参考,不是严格同训练配方比较。论文自己也提醒,mature WeLM release scores 不在本文范围内;这里的后处理是 short SFT schedule,没有 reinforcement learning。因此我们能说的是:在匹配的 early-SFT 控制条件下,HD4 改善了 WeLM 80B/617B;不能说它已经在完整产品级 post-training 后必然保持同等幅度,也不能说它普遍优于所有外部 frontier 模型。
n 真的像一个缩放旋钮吗?
如果 Hidden Decoding 只是 n=4 的一次工程特例,那它的理论意义会弱很多。论文因此做了 progressive expansion:从 n=1 到 2、4、8,逐步扩展。
在 dense Qwen3-8B-Base 上,图 1 给出的平均准确率从 78.2 到 80.1、81.0、81.6,随 n 增大持续上升。表 14 里可以看到具体任务:BBH 从 78.8 到 83.9,MMLU 从 79.8 到 82.2,HellaSwag 从 79.7 到 85.3,GSM8K 从 92.5 到 94.6,MATH 从 56.0 到 61.1。

同样趋势也出现在 80B MoE。表 13 显示,Pile-test BPB 从 base 的 0.386 降到 n=8 的 0.378;MMLU 从 85.1 到 87.5;BBH 从 87.5 到 90.6;MATH 从 60.4 到 71.7。中间并非每个点都单调,比如 MMLU 在 n=2 是 85.0,比 base 的 85.1 略低,MBPP+ 在 n=2 也下滑;但到 n=8,整体最强。论文的结论更稳妥:n 是一个可用的 scaling knob,不是每个 benchmark 每个中间点都严格单调。
这里还有一个容易被忽略的成本:embedding 参数会增长。Qwen3-8B 的 embedding params 从 1.2B 到 n=8 的 5.6B;80B MoE 从 6.1B 到 n=8 的 48.4B;617B HD4 的 embedding 从 26.9B 到 107.4B。论文强调这些是 sparse lookup,不进入 attention/FFN 矩阵乘法,因此 activated Transformer parameters per token 不变。但它们仍然是存储和工程复杂度的一部分,不能被当成“完全免费”。
中间流到底在做事,还是只是多占位置?
这是这篇论文里最有意思的部分。因为如果只看最终涨分,我们还不能排除一些简单解释:是不是因为序列变长了?是不是因为多了预测目标?是不是把几个 stream 的输出加起来就行?
论文做了几个 ablation。6B MoE 上,同样 n=2,baseline loss 是 1.908;all-token loss 是 1.880;sum 是 1.877;Hidden Decoding 是 1.874。下游也类似,HD 在 MMLU、ARC-C、C-Eval、CMMLU 四项都最好,其中 ARC-C 是 74.3,而 sum 是 71.9,all-token loss 是 65.8。n=3 的 HD loss 进一步到 1.857,四项分数继续上升。这个结果支持“只监督最终流”不是随便选的,而是在同等设置里优于给所有 stream 都打 loss 或显式求和。
KV retention 的小规模检查也指向同一方向。21B MoE、HD n=2 下,用 per-stream KV 的平均准确率高于 shared KV:1 个 full layer 时是 64.23 vs. 63.46;4 个 full layers 时是 64.66 vs. 63.90。论文很谨慎地说这是 qualitative check,因为设置较小、任务列也有噪声;但两个布局的平均方向一致,说明中间 stream 的独立 KV 不是完全冗余。

更直观的是 probes。Qwen3-8B-Base + HD n=8 里,同一个 token 的不同 streams 在输入处几乎对齐,mean cosine 是 0.987;到中间层分离到 0.637;最后又部分靠近到 0.783。最终预测流 E7 还会读其他 stream,尤其 E0 的 attention affinity 峰值达到 0.52。LM-head probe 也显示,中间 stream 的 top-1 token 经常不同于最终 E7,最大差异率约 63%;熵上,n=8 的最终流 E7 是 2.09 bits,而多个中间流仍高于 3 bits。
一个自然解释是:中间流保留更宽的候选空间,最终流把它收束成预测。但我们也要保持边界:probe 证明的是相关的内部结构和读取路径,不等于完整解释了“模型如何思考”。它支持“中间流承载有用状态”,还不是一套可因果追踪每个答案生成的机制理论。
推理成本:交互场景友好,大 batch 长上下文会疼
训练可行不等于服务免费。论文在 WeLM-HD4-80B 上,用同样 8 张 H20 GPU 比较开启 HD 和关闭 stream expansion 的 matched baseline,只统计 decoding-only completion TPS,排除 prefill latency;每个 cell 五次运行,30 秒 warmup、45 秒 measurement、最大输出 8192。
结果很符合直觉:小 batch 时,GPU 可能 memory-bandwidth bound,额外 stream 能吃掉一些空闲 compute,所以代价不大。batch size 1 时,HD 在所有输入长度 bucket 下保持 baseline throughput 的 83–88%。短输入、2k、8k bucket 下,到 batch size 4 仍有 69–88%。
但长输入和大 batch 会把额外 per-token compute 直接暴露出来。batch size 16 时,short/2k/8k/32k 分别降到 60%、54%、49%、44%;最大测量设置 32k input、batch size 32,只剩 27%。所以 Hidden Decoding 更适合 latency-oriented、小到中等 batch 的服务窗口;如果你的业务是长上下文、大批量吞吐,HD4 的代价会非常真实。
这篇论文证明了什么,没有证明什么
它证明了四件事。
第一,sequence-length expansion 可以作为固定 Transformer 骨干的 scaling path,而且不只是小模型玩具。WeLM-HD4-80B 和 WeLM-HD4-617B 把它推到了 100B+ MoE scale。
第二,关键工程设计是可训练的。Stream-Factorized Attention 把 n=4 的实测 per-batch time 控制在 5.1× 和 4.4×,而不是 dense attention 的 16×。
第三,n 增大通常带来更强模型。Qwen3-8B 的平均准确率 78.2→81.6,80B 的 MMLU 85.1→87.5、Pile BPB 0.386→0.378,说明 expansion factor 确实像一个新的缩放旋钮。
第四,中间 streams 不是明显的空转。final-stream supervision、per-stream KV、hidden-state separation、E7 读取 E0、LM-head entropy 等证据,共同支持“隐流在承担中间计算状态”的解释。
它没有证明的也有几件事。
第一,它没有证明 Hidden Decoding 普遍优于更大骨干模型。外部模型如 Kimi K2.6 只是参考,不是同等训练预算、同等后处理的因果比较。
第二,它没有证明 mature RL/post-training 后增益仍保持同样形态。主表是 early SFT-only、无 RL 的 controlled comparison;这正是它可信的地方,也是它的边界。
第三,它没有证明所有架构都能获得 WeLM 的训练效率。近线性 attention 设计可迁移,但 KV-mirror 跳过 mirrored layers 是 WeLM 特有优化。
第四,它没有解决所有服务成本问题。小 batch 下 throughput 保持较好,但 32k input、batch 32 只有 27% baseline TPS。这不是一个可以无脑打开的开关。
Big Picture:下一代 scaling 可能不只在“模型有多大”
过去几年,大模型进步的主叙事是参数、数据、训练 compute 的扩大。Hidden Decoding 指向另一个方向:同一套 Transformer 权重,可以通过“每个 token 如何使用它”继续释放能力。
这和 test-time scaling 的精神相通,但位置不同。test-time scaling 往往把额外计算放在可见输出或多次采样里;Hidden Decoding 把额外计算放回模型内部,把“多想几步”变成每个 token 的隐性轨道。它不让模型显得更会说,而是让预测前的隐藏状态多经历几次内部整理。
如果这个方向继续成立,未来的 scaling law 可能不只问三件事:多少参数、多少数据、多少训练 FLOPs。它还会问第四件事:每个 token 在固定骨干里被允许走多少内部路径?
这篇论文的价值不在于宣布“大模型扩展问题解决了”。更准确地说,它提供了一个工程上可信的新旋钮:当继续加大 Transformer 骨干越来越贵时,我们可以把一部分新增计算塞进序列维度,保持大规模训练流水线可用,并在可控服务窗口里换取能力提升。这个旋钮不免费,也不万能;但它第一次在 617B MoE 这种规模上显示出,固定骨干并不等于固定能力。