In-Place TTT:给LLM装上"临时记忆插槽",让它边读边学
——ByteDance Seed的测试时训练框架,用MLP的$W_down$做快速权重,让4B模型在长上下文上干翻7B-14B
一、引子:LLM的"训练完就僵化"困境
大语言模型有一个与生俱来的悖论:
它在训练时吸收了数万亿token的海量知识,学会了语法、逻辑、推理和常识。但一旦部署,它的权重就被冻结了。你喂给它一篇全新的论文、一段实时的对话、一个刚刚发生的事件——它只能把这些信息塞进上下文窗口,通过注意力机制临时"看看",不能真正把它们吸收进自己的参数里。
这就像一个人读了一辈子的书,但读完的书不能改变他的大脑结构。他只能依赖短期记忆(上下文窗口)来处理新信息,窗口一满,前面的内容就被遗忘。
现有的应对策略分两类:
🔄 RAG(检索增强生成):把外部知识做成向量数据库,用时检索。但这只是把知识当参考书,模型本身没有真正"学会"新知识。
🔄 In-Context Learning(上下文学习):把新信息直接写进prompt里。但注意力机制是O(n²)的复杂度,上下文窗口越长越慢,而且模型容量有限,不能真正消化所有上下文信息。
有没有一种方法,让模型在推理时"边读边学"——就像人类读文章时,每读完一段,大脑就在悄悄调整神经连接,把新信息内化?
这就是 Test-Time Training(TTT,测试时训练) 的承诺。🧠
---
二、TTT的理想与现实:为什么之前的方案都卡住了
TTT的概念并不新。早在2020年,Yu Sun等人就提出"测试时训练"——在测试阶段用无监督任务(如旋转图像预测)更新模型参数,提升分布偏移下的泛化能力。2024年的TTT-Linear/MLP更进一步:把RNN的隐藏状态替换成一个可在线更新的线性模型,让序列模型在理论上拥有无限记忆容量。
但TTT在LLM生态里落地时,撞上了三座大山:
🪨 第一座:架构不兼容。TTT-Linear和TTT-MLP需要替换Transformer的注意力层,用专门的TTT层取而代之。这意味着你有一个基于标准Transformer训练的模型(比如Qwen、LLaMA),想用TTT?抱歉,你得从头预训练一个全新架构。成本高得离谱,而且生态割裂——社区积累的所有工具、微调方法、量化方案都不能直接复用。
🪨 第二座:计算低效。传统TTT的更新机制是逐token进行的——每处理一个token,就更新一次快速权重。这在现代加速器(GPU/TPU)上是噩梦:GPU的并行性被浪费,小chunk限制导致计算碎片化和内存带宽瓶颈。如果一个序列有128k token,你不可能逐个更新,效率会崩溃。
🪨 第三座:目标函数错位。传统TTT用的是一个通用的重建目标(reconstruction objective):给定当前输入,预测自己。这类似于自编码器的去噪任务。但LLM的核心任务不是"重建自己",而是 Next-Token Prediction(NTP)——给定前文,预测下一个token。重建目标和NTP在数学上不等价,快速权重存储的信息可能对"预测下一个"这件事并不那么有用。
三座大山横亘在前,TTT从概念到工程落地,中间隔着一条巨大的鸿沟。
ByteDance Seed和北京大学联合提出的In-Place TTT,填平了这条鸿沟。🎯
---
三、In-Place TTT的核心设计:三座大山的解法
论文作者(Guhao Feng, Shengjie Luo等,ByteDance Seed + 北大)的思路异常清晰:不改动架构,不替换注意力,只复用现有组件。三个设计对应三座大山:
---
3.1 解法一:复用MLP的$W_down$作为快速权重
Transformer里每个block都有MLP。标准Gated MLP的结构是:
$$ O = φ(HW_gate^T) ⊙ (HW_up^T) W_down^T $$
其中$W_gate$和$W_up$负责把隐状态升维并做门控,$W_down$负责把结果投影回原始维度。$W_down$是MLP的 最终投影矩阵。
In-Place TTT的洞察是:$W_down$天然适合做快速权重。原因有三:
- 它已经是模型参数的一部分,不需要新增任何层或模块;
- 它处于MLP的最后一步,输出直接作为block的残差连接,影响全局;
- 它的维度适中(比如从4×hidden_size投影回hidden_size),有充足的表达能力。
这就是"In-Place"的含义——原地操作,不动架构,不增不减。就像给一个已经建好的大楼加装一个"临时记忆插槽",而不是推倒重建。
---
3.2 解法二:块级更新(Chunk-wise Update),与Context Parallelism原生兼容
传统TTT的逐token更新是串行的,现代加速器无法并行。In-Place TTT改用 块级更新:
- 把长序列切成chunk(比如512-1024个token);
- 每个chunk内部,用当前的快速权重计算输出;
- chunk结束后,用该chunk的梯度更新一次快速权重;
- 下一个chunk用更新后的权重继续。
更关键的是,这种更新方式与 Context Parallelism(上下文并行) 天然兼容。在多卡分布式推理中,不同卡处理不同chunk,每个卡计算自己的梯度增量,然后通过前缀和(Prefix Sum)累积全局更新。三步并行算法:
Step 1: 各卡并行计算 $ΔW_i = V_i^T Z_i$
Step 2: 单次前缀和累积 $PrefixSum([ΔW_1, ..., ΔW_T])$
Step 3: 各卡并行应用有效权重,计算输出
这意味着In-Place TTT可以无缝接入现有的分布式训练/推理框架,不需要写专门的TTT并行逻辑。
---
3.3 解法三:LM-Aligned目标函数——让快速权重真正"预测下一个"
这是In-Place TTT最深层的创新,也是论文花大量篇幅做理论分析的地方。
传统TTT的重建目标是:给定当前token,预测当前token。这在数学上等于学习一个自编码器。但LLM的任务是 预测下一个token,不是重建当前token。
In-Place TTT提出的 LM-Aligned目标 是:用当前信息预测 下一个token的嵌入。具体实现:
V̂ = Conv1D(X^0) W_target
- X^0:词嵌入层输出(原始token表示);
- Conv1D:一维卷积,核大小控制"看多远"的未来信息;
- W_target:可学习投影,把未来信息投影到合适维度;
- 因果padding:确保严格因果性,不能偷看未来。
损失函数是Frobenius内积:
$$ L = -⟨V̂, Z·W_down⟩_F $$
梯度更新规则简洁到优雅:
$$ W_down^(i) = W_down^(i-1) + η V̂[i]^T Z[i] $$
这意味着快速权重的更新方向直接由"预测下一个token"的任务驱动,而不是"记住当前token"。
---
四、理论保证:在归纳头设定下的严格证明
论文的Theorem 1给出了一个严格的理论分析,在 归纳头(Induction Head) 设定下比较两种目标函数的效果:
| 目标类型 | 正确token v*的logit变化 | 其他token w的logit变化 |
|---|---|---|
| LM-Aligned目标(V_t = E_{x_{t+1}}) | 显著增加 ≥ λ_lr · c²_norm · c_align | 几乎不变 ≤ λ_lr · ε · c_align |
| 重建目标(V_t = E_{x_t}) | 几乎不变 ≤ λ_lr · ε · c_align | — |
- LM-Aligned目标保证快速权重存储的是 预测性有用 的信息——它明确提升正确下一个token的logit;
- 重建目标不能做到这一点,因为"记住当前token"和"预测下一个token"在数学上是不同的任务;
- 这个差距在归纳头(一种需要从前文复制token的模式)中尤为显著,因为这种模式本质上就是在"预测下一个"——从前文找到匹配的token并复制到当前位置。
---
五、实验结果:4B模型在长上下文上干翻7B-14B
实验一:作为Drop-in增强(Qwen3-4B-Base)
在Qwen3-4B-Base上,用两阶段持续训练(~20B tokens @ 32k → ~15B tokens @ 128k)+ YaRN位置扩展,然后对比基线(同样持续训练但无TTT)和In-Place TTT。
RULER基准(长上下文检索与推理,平均准确率%):
| 上下文长度 | 基线 | In-Place TTT | 提升 |
|---|---|---|---|
| 4k | 96.6 | 96.1 | -0.5(正常波动) |
| 8k | 94.1 | 95.6 | +1.5 |
| 16k | 92.1 | 92.7 | +0.6 |
| 32k | 88.7 | 89.3 | +0.6 |
| 64k | 74.3 | 78.7 | +4.4 |
| 128k | 74.8 | 77.0 | +2.2 |
| 256k(外推) | 41.7 | 43.9 | +2.2 |
与SOTA模型对比(128k上下文):
| 模型 | 参数量 | 128k准确率 |
|---|---|---|
| Mistral-7B | 7B | 13.8% |
| GLM3-6B | 6B | 42.0% |
| Phi3-medium-14B | 14B | 46.1% |
| Llama3-8B | 8B | 69.5% |
| Qwen3-4B (Instruct) | 4B | 66.0% |
| Qwen3-4B + In-Place TTT | 4B | 77.0% |
实验二:扩展到更多模型
| 模型 | 方法 | 4k | 8k | 16k | 32k | 64k | 64k+YaRN |
|---|---|---|---|---|---|---|---|
| LLaMA-3.1-8B | 基线 | 93.9 | 92.1 | 92.5 | 91.1 | 81.6 | — |
| LLaMA-3.1-8B | In-Place TTT | 94.4 | 93.0 | 93.3 | 91.7 | 83.7 | — |
| Qwen3-14B | 基线 | 96.8 | 95.0 | 94.6 | 90.7 | 67.9 | 81.3 |
| Qwen3-14B | In-Place TTT | 97.2 | 95.7 | 95.2 | 91.2 | 70.6 | 82.5 |
实验三:从头预训练对比
在500M/1.5B模型上,从0开始在Pile数据集预训练,对比Sliding Window Perplexity(SWA)、GLA(线性注意力)、DeltaNet、LaCT和In-Place TTT。
结果:在32k上下文上,In-Place TTT的perplexity持续下降,表现最优。其他方法(如SWA)的perplexity在更长上下文上反而上升或停滞。
在4B模型上,综合下游任务评估:
| 任务类型 | 具体基准 | 基线(Full Attn) | +In-Place TTT | 基线(SWA) | +In-Place TTT |
|---|---|---|---|---|---|
| 常识推理 | HellaSwag | 55.67 | 55.85 | 54.92 | 55.24 |
| 常识推理 | ARC-E | 64.52 | 64.98 | 64.18 | 64.60 |
| 常识推理 | ARC-C | 33.19 | 32.34 | 32.85 | 33.70 |
| 常识推理 | MMLU | 36.43 | 37.42 | 36.06 | 36.48 |
| 常识推理 | PIQA | 72.63 | 73.29 | 72.58 | 72.03 |
| 长上下文 | RULER-4k | 45.77 | 49.98 | 14.77 | 28.33 |
| 长上下文 | RULER-8k | 38.09 | 43.82 | 9.91 | 26.80 |
| 长上下文 | RULER-16k | 6.58 | 19.99 | 5.07 | 7.57 |
---
六、消融实验:关键设计选择的重要性
a) 状态大小(State Size):
- 4×状态 > 1×状态 > 0.5×状态
- 验证:更大的快速权重 = 更强的上下文适应能力。这是参数量的直接回报。
- 最优区间:512-1024
- C=256:性能较差(更新过于频繁,噪声大)
- C=2048:性能下降(更新过于稀疏,粒度粗)
- C=1024:效率与性能的最佳平衡
| 配置 | RULER-4k | RULER-8k | RULER-16k |
|---|---|---|---|
| w Conv, w Proj(完整) | 最佳 | 最佳 | 最佳 |
| w/o Conv(无卷积) | 下降 | 显著下降 | 大幅下降 |
| w/o Proj(无投影) | 轻微下降 | 下降 | 下降 |
| w/o Conv, Proj(纯嵌入) | 最差 | 最差 | 最差 |
---
七、效率分析:额外开销<5%
| 指标 | 上下文 | Baseline-SWA | TTT-SWA | Baseline-Full | TTT-Full |
|---|---|---|---|---|---|
| Prefill吞吐量 | 8k | ~18K tok/s | ~18K tok/s | ~15K tok/s | ~15K tok/s |
| 32k | ~12K tok/s | ~12K tok/s | ~5K tok/s | ~5K tok/s | |
| 128k | ~3K tok/s | ~3K tok/s | ~1K tok/s | ~1K tok/s | |
| 峰值内存 | 8k | ~8GB | ~8GB | ~10GB | ~10GB |
| 32k | ~25GB | ~25GB | ~35GB | ~35GB | |
| 128k | ~55GB | ~55GB | OOM | OOM |
---
八、讨论:为什么是MLP的$W_down$ ?
论文选择$W_down$作为快速权重,不是随意的,而是有深层考量:
注意力 vs. MLP:
- 注意力层负责token之间的交互,权重(Q/K/V投影)影响的是 关系建模。如果把它变成快速权重,每处理一个chunk就要重新学习所有token之间的关系,计算开销大且不稳定。
- MLP负责特征变换,$W_down$做的是从升维空间投影回原始维度的线性映射。它的更新更像"调整特征的混合比例",而不是"重新学习关系"——这更稳定、更高效。
- $W_up$把隐状态升维并做门控,$W_down$负责降维。升维操作需要捕获更丰富的特征,降维操作负责"综合输出"。
- 把$W_down$当快速权重,相当于让模型在每个chunk后"重新综合"一次输出方式,而不是"重新学习特征提取"。这更贴近"快速适应新信息"的直觉。
- In-Place TTT与稀疏注意力(Longformer, SWA)、线性注意力(GLA, DeltaNet)、状态空间模型(Mamba)是 正交互补 的——可以叠加使用。
- 与传统TTT(TTT-Linear, LaCT)是 直接竞争 的,但In-Place TTT更优,因为它不需要替换注意力层。
九、局限与未来
论文坦诚指出了局限:
1. 通用短上下文任务:在4k等短上下文上,提升很小甚至持平(-0.5%)。In-Place TTT的优势在长上下文才显现,对于短文本生成、对话等场景,收益有限。
2. 持续预训练成本:虽然不需要从头训练,但作为"Drop-in增强"仍需要持续预训练(~20B+15B tokens)。这不是"零成本"即插即用,而是"低成本"增强。
3. 快速权重的初始化:论文使用$W_down$的预训练权重作为初始化,但如果基础模型和任务分布差异太大,适应效果可能下降。
未来方向:
- 与流式推理(streaming inference)结合,实现真正的"边读边学";
- 探索其他快速权重位置(如注意力头的value投影);
- 在更多下游任务(如代码生成、数学推理)上验证;
- 压缩快速权重的存储和传输成本,使其更适合边缘部署。
十、结论:从"训练完就僵化"到"边读边学"
In-Place TTT的最大价值,不是它刷新了某个具体的SOTA数字,而是它 证明了TTT可以在不改动架构的情况下,让现有LLM获得动态适应能力。
这打开了一个全新的范式:
- 未来部署LLM时,可能不需要一个"静态模型+外部检索"的组合,而是一个"基础模型+快速权重插槽"的架构——每个用户会话、每个文档、每个任务,都可以有自己的快速权重状态。
- 模型在推理时不再只是"读取"信息,而是"学习"信息——权重被实时更新,知识被内化,而不是被塞进上下文窗口里临时看看。
- 长上下文不再只是"窗口能装多长"的问题,而是"模型能消化多长"的问题——通过快速权重的逐步更新,超长文档的信息被分层吸收,而不是一次性塞进有限容量的注意力机制里。
LLM的"训练-部署"静态范式,可能正在被打破。取而代之的,是一个模型能边读边学、边用边更新的新世界。
---
参考与数据来源:
- Feng et al., "In-Place Test-Time Training", arXiv:2604.06169, 2026 (ICLR 2026 Oral)
- 代码开源:https://github.com/ByteDance-Seed/In-Place-TTT
- 机构:ByteDance Seed + 北京大学
- 对比基线:TTT-Linear, TTT-MLP, LaCT, Titans, GLA, DeltaNet, SWA, Full Attention
- 评估基准:RULER(长上下文检索与推理),HellaSwag, ARC-E, ARC-C, MMLU, PIQA
- 测试模型:Qwen3-4B/8B/14B, LLaMA-3.1-8B
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens