只用一半训练 token 就追平 OLMo-3-7B:NCP-ArchPreview 把「下一个概念预测」搬进了预训练
训练大模型这么久,有个问题一直挺扎眼的:模型hidden state里明明长出了语义概念、世界模型这类高层抽象,但监督信号永远只落在单个 token 上。就像我们教学生,只考他"下一个字写啥",从不考"下一句想表达什么"。这些高层结构完全是副产品——没人直接教过它。
这篇 arXiv 2609.10715 的 NCP-ArchPreview 就是冲着这个缺口来的:在标准 next-token prediction 旁边,加一条 Next Concept Prediction(NCP) 的显式目标,让模型直接预测"跨多个 token 的下一个离散概念"。
核心摘要:NCP-ArchPreview 在 OLMo-3-7B 骨干上插入一个 8 层 Concept Module,用乘积量化从模型自己的 hidden states 里学出一套离散概念词表,然后让模型在概念层面做自回归预测,再把预测出的概念注入回 token 流。8.9B 参数、5.73T token 训练下来,它只用 51.3% 的训练 token 就追平了 OLMo-3-7B 的最终预训练 loss(1.95 倍收敛加速),下游宏观平均分高出 2.45 个点,GSM8K 单项涨 5.99。我的判断:这不是又一篇"加点小 trick 涨点"的论文,而是 latent-space language model 这条线第一次在前沿规模上站住了脚——虽然"ArchPreview"这个名字也坦白告诉你,它还是个预览版。
📖 论文信息
- 标题:NCP-ArchPreview Technical Report: Moving towards Latent Space Language Models through Next Concept Prediction
- 作者:Intern-NCP Team(Jiaqi Cao、Chiyu Chen、Shuang Cheng 等 27 人,通讯含 Dahua Lin、Bowen Zhou)
- 机构:Shanghai AI Lab;LUMIA Lab, Shanghai Jiao Tong University
- 链接:https://arxiv.org/abs/2609.10715
- 发布时间:2026 年 9 月 9 日
- 开源内容:模型权重、推理脚本、训练配方、中间评测 checkpoint 全部放出
🎯 为什么需要这篇论文
先说说 latent-space 语言模型这条线的现状。视觉领域早就验证过表征空间的价值——latent diffusion 把生成从像素空间搬进紧凑的连续空间,效率和可扩展性都上了一个台阶。语言这边也不是没人试过:Hourglass Transformer、MegaByte 用固定的层级结构;BLT、H-Net 搞动态分块;Meta 的 Large Concept Model 在连续句子嵌入空间做预测;ConceptLM 则预测离散概念。
但这些工作大多卡在两个地方:要么规模太小,说不清能不能 scale;要么潜在表示是"固定切分"出来的,不是模型自己学出来的。
还有一条更优雅的路线是 JEPA——直接在潜空间里预测未来表示。I-JEPA、V-JEPA 在图像和视频上都打出来了,LeCun 也一直在吆喝这条路。但语言建模上,显式地以潜空间目标做监督的工作几乎没有。MTP(Multi-Token Prediction)算沾边,可它的 loss 还是拴在一个个表面 token 上。
NCP-ArchPreview 的位置就在这里:把 JEPA 式的"在潜空间做预测"落到语言模型上,监督目标是从模型自己 hidden states 里学出来的离散概念,而且直接干到 8.9B / 5.73T token 的规模。
🏗️ 方法核心:三段式骨架 + 学出来的概念词表

图 1:NCP-ArchPreview 整体架构。Token Encoder 与 Token Decoder 维持 token 级表示,中间的 Concept Module 把 token 片段压缩成概念,在乘积量化学到的离散概念词表上预测下一个概念,再注入回 token 流。IRC/CRC 分层残差连接让信息跨层、跨模块流动。
一句话讲清核心 idea:每 4 个 token 压缩成一个概念,模型先想"下一个概念是什么",再回过头来写"下一个 token 是什么"。
具体拆成几块。
概念从哪来:Token Encoder(16 层)产出 token 级 hidden states \(\mathbf{h}_{1:T}\),每 \(k=4\) 个连续 token 做 mean pooling 得到一个连续概念向量 \(\mathbf{c}_m\),概念序列长度缩为原来的四分之一。
离散概念词表怎么学:用乘积量化(Product Quantization)。每个概念向量切成 \(S=32\) 段,每段独立配一个 128 条目的 codebook,每段找最近码字。单段词表虽小,组合起来却有 \(128^{32}\) 种可能——概念空间的容量相当可观,而 codebook 本身极小。VQ loss 只对 codebook 做更新(对 encoder 输出 stop-gradient),让码字去贴合概念分布,不反向污染 token 表示:
概念怎么预测:Concept Module(8 层 Transformer)吃概念历史,对每个段输出一个 codebook 上的概率分布 \(\boldsymbol{\pi}_m^s\),然后不取 argmax、不采样,直接按分布做加权组合 \(\hat{\mathbf{c}}_m^s=\sum_n \pi_{m,n}^s\mathbf{e}_n^s\)。这个设计挺讨巧的——预测路径全程可微,但预测结果又被约束在 codebook 张成的空间里,不会像直接回归连续目标那样自由漂移。NCP 用 MSE 监督:
怎么回到 token 层面:预测出的概念重复 \(k\) 次对齐 token 分辨率,加一个因果 shift 防信息泄漏,再跟 token hidden state 做残差相加,交给 16 层 Token Decoder 做标准的 next-token 预测。
分层残差连接:借鉴 MUDDFormer 的动态稠密连接,模块内部每层用一个轻量 MLP 对历史各层状态学一组带符号的组合权重(IRC),模块之间再用 softmax 加权的跨模块连接(CRC)。初始状态退化成标准残差,训练中逐步学会"翻旧账"。
总训练目标就是三项加权:\(\mathcal{L}_{\mathrm{total}}=\mathcal{L}_{\mathrm{NTP}}+\alpha\mathcal{L}_{\mathrm{NCP}}+\beta\mathcal{L}_{\mathrm{VQ}}\),NTP 提供每个位置的稠密监督,保证模型行为上还是标准的自回归语言模型——推理时没有任何额外开销或流程变化。
🧪 实验:1.95 倍收敛加速不是吹的
训练 loss:同数据下的硬碰硬

图 2:Stage-1 全程 5.73T token 的 loss 对比。NCP-ArchPreview 的收敛速度是 OLMo-3-7B 的 1.95 倍,末期 loss 低 0.091,且差距随训练推进持续拉大。

图 3:Stage-2(Dolma 3 Dolmino 数据)上收敛加速 1.51 倍,最终 loss 低 0.027,曲线波动也更小。
两个模型吃完全一样的数据。Stage-1 结束时 loss 差距拉大到 0.091;NCP-ArchPreview 只消耗 51.3% 的 token 就摸到了 OLMo-3-7B 的终点线。Stage-2 优势收窄到 1.51 倍,但依然稳定。
说实话看到 51.3% 这个数的时候我的第一反应是去翻消融——因为这种量级的加速,最常见的解释就是"参数变多了"或者"计算变多了"。
消融:涨点确实来自架构和目标,不是堆料
作者做了我认为这篇论文里最值钱的一组实验。Concept Module 每层参数量约等于一个标准 block,但序列长度只有四分之一,所以计算量也只有四分之一左右。于是构造三个对齐基线:
| 模型 | 结构 | 参数量 | 计算量 |
|---|---|---|---|
| NCP-ArchPreview | 16+16 token 层 + 8 概念层 | \(40P_{blk}\) | \(34F_{blk}\) |
| Vanilla(OLMo-3-7B) | 32 层 | \(32P_{blk}\) | \(32F_{blk}\) |
| Vanilla computation-aligned | 34 层 | \(34P_{blk}\) | \(34F_{blk}\) |
| Vanilla size-aligned | 40 层 | \(40P_{blk}\) | \(40F_{blk}\) |

图 4:前 200B token 的训练 loss 消融。六条曲线:三个标准基线 + 渐进式加入 Concept Module、分层残差、NCP loss 的三个配置。右下放大图显示最后 8k step,组件逐级带来稳定的 loss 下降。
结果很干净:NCP-ArchPreview 明显优于同计算的 computation-aligned 基线;只用 85% 的计算量就逼近了 size-aligned 基线。渐进消融也显示 Concept Module、分层残差、NCP loss 每一级都带来实打实的 loss 下降。也就是说,提升不是来自"多塞了 8 层参数",而是潜空间层级结构 + 概念级监督本身。
Scaling law 实验进一步确认:在计算最优训练配置下,NCP-ArchPreview 的 Pareto 计算效率是 OLMo-3 的 1.74 倍。

图 5:Scaling law 对比。每个标记是在固定 FLOPs 预算下搜索超参和模型/数据配比后的最优验证 loss。NCP-ArchPreview 的拟合曲线整体左移,对应 1.74 倍计算效率。
下游任务:涨 2.45 个点,数学最猛
Stage-1 完整预训练后(30 个 benchmark 家族,OLMo 评测协议):
| 领域 | OLMo-3-7B | NCP-ArchPreview | 差值 |
|---|---|---|---|
| MMLU 平均 | 54.50 | 56.73 | +2.24 |
| MATH 平均 | 20.79 | 24.54 | +3.75 |
| Code 平均 | 25.15 | 27.79 | +2.64 |
| MC-STEM 平均 | 84.47 | 86.93 | +2.47 |
| MC-Non-STEM 平均 | 70.08 | 74.71 | +4.63 |
| GenQA 平均 | 54.29 | 54.76 | +0.47 |
| Overall AVG | 46.59 | 49.04 | 涨 2.45 个点 |
单项亮点:GSM8K 39.27→45.26(+5.99),PiQA 一口气涨了 8.60 个点。数学领域整体提升幅度接近 18%——这个规律挺值得琢磨,概念级监督对多步推理类任务的帮助明显大于知识问答类任务,符合"概念是推理的中间骨架"这个直觉。
不过 Stage-2 的故事就没那么漂亮了:宏观平均只涨 0.59,Code 平均还掉了 0.65。作者自己的解释是 Stage-2 数据里代码只占约 10%,loss 更低≠下游更好,数据分布和评测域错配时两者会脱钩。他们还在附录里专门用 capability-aware proxy 研究了 mid-training 数据配比——这种"loss 降了但能力没涨"的坦白,比强行包装成全面胜利要诚实得多。
数值稳定性:一个意外收获
还有个工程向的发现值得单独说。用 OLMo-3 的逐层 Q/K 归一化 + Muon 优化器训练时,注意力 logits 会持续增长,少数 outlier head 主导 pre-softmax 分数,最后梯度爆炸。消融显示根源是 Muon 的全矩阵更新与逐层 Q/K 归一化之间的相互作用——全矩阵更新把多个 head 的更新耦合在一起,而逐层归一化只约束整体尺度,管不住单个 head。换成 per-head Q/K 归一化后完全压住。不过为了跟 OLMo-3-7B 严格对照,主实验仍然保留了原始配置。踩过 Muon 训练坑的同学应该会对这条有共鸣。
🔬 预训练之后:概念空间还能干什么
这部分是我个人觉得这篇论文最有想象力的地方——学出来的离散概念空间不是训练完就扔的脚手架,它变成了两个实用接口。
轻量领域适配:冻结整个 token 级骨干,只更新 VQ codebook 和概念预测头——一共 17M 参数。结果:
| 适配方式 | 可训练参数 | 代码域平均 | 数学域平均 | TriviaQA | 通用平均变化 |
|---|---|---|---|---|---|
| VQ(本文) | 17M | 30.04→32.69(+2.65) | 30.56→34.83(+4.27) | 40.28→49.47(+9.19) | -0.42 / +0.39 / +0.03 |
| LoRA(对齐 17M) | 17M | 唯一全任务提升的是 VQ | +3.15 | +17.48 | 代码 - / 数学 -0.42 / 知识 - |
| 全量微调 | 8.9B | MBPP+ 暴跌 22.49 个点 | +6.16 | +18.00 | 数学 -0.97 |
VQ 适配在代码上是唯一四个任务全部提升的方案;数学上赢过 LoRA 且几乎无遗忘;知识类任务上打不过全量和 LoRA——作者也给了合理解释:事实性知识存在骨干的 FFN 里,冻结骨干自然改不动它。
效率差距更夸张:

图 6:全量、LoRA、VQ 三种适配方式的训练吞吐与单卡显存占用。VQ 吞吐 15,632 tokens/s/GPU,分别是 LoRA 的 1.50 倍、全量的 2.02 倍;显存只占 32.4%。
同样更新 17M 参数,VQ 吞吐比 LoRA 高 50%,显存只有 32.4%(LoRA 49.0%,全量 90.3%)。单卡 micro-batch=2 时,全量直接 OOM,LoRA 吃 87.9%,VQ 只要 51.6%。
加速投机解码:把 Concept Module 产出的概念表示注入 DFlash2 风格的块并行草稿模型(只加 0.04M 参数、零额外 Target 计算),mean accepted length 从 5.933 提到 6.180,相对提升 4.17%,HumanEval 单项涨 7.59%。概念表示给草稿模型提供了跨多 token 的一致性约束,这个思路对做投机解码的同学应该挺有启发。
与 MTP 的关系:3B 规模的受控实验显示,NCP-ArchPreview 不带 MTP 也能反超带 MTP 的残差对齐 OLMo-3-3B(loss 低 0.0075,FLOPs 还略少);给 NCP-ArchPreview 再加 MTP 还能进一步降 0.0141。概念级监督和 token 级 MTP 是互补而非替代关系。
💡 我的判断
亮点:
- 这是 latent-space 语言模型第一次被推到 8.9B / 5.73T token 的规模并且打赢了扎实的同配置基线。1.95 倍 token 收敛加速、1.74 倍 Pareto 计算效率,这两个数放在一起,"概念级监督有真东西"这件事基本立住了。
- 消融设计是同价位论文里少见的工整——参数对齐、计算对齐、渐进组件消融三层都做齐了,直接把"是不是堆料"的质疑提前掐死。
- 17M 参数的 VQ 适配接口是个意外惊喜,吞吐和显存优势在工程上很实在。
问题也得说:
- 概念的构造方式是固定 4 token 的 mean pooling——跟 BLT、H-Net 的动态分块比,这个切法挺粗糙的。作者把它叫 ArchPreview 大概也是认了这一点:先验证"概念监督有用",优雅的边界学习留给后面。
- Stage-2 的下游增益明显缩水(2.45→0.59),loss 到能力的转化率依赖数据分布,这个问题论文自己也没解决。
- 长上下文完全没测。概念路径把序列压缩了 4 倍,理论上长上下文是最有利的场景,但这篇里只有 8K 上下文,故事讲了一半。
- NCP 用的是 MSE 回归而不是对 codebook 分布的交叉熵——既然已经有了离散词表,直接做分类目标会不会更强?论文没讨论,我倾向于认为这里有空间。
跟同期工作比,它比 ConceptLM 的规模大了近一个数量级,比 LCM 的连续嵌入路线多了可微且受约束的离散结构,跟 BLT 比则赢在监督目标而非边界学习。定位上它不是某个单点的 SOTA 刷新,而是一套架构范式的规模化验证——值不值得跟进,取决于你信不信"语言模型需要在 token 之上有显式的中间抽象层"这个判断。看完这篇的数据,我的天平是往"信"这边倾斜的。
📝 收尾
如果你在做预训练架构研究,这篇的消融表格和 scaling 曲线值得打印出来贴墙上;如果你在做领域适配或投机解码,VQ 接口和概念注入这两个用法可以直接抄作业。模型权重和训练配方全开源,复现门槛不高。
更本质的追问留一个:当概念边界也从"固定 4 token"变成学出来的动态切分,这条线的上限在哪里?等正式版出来再看。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我