30秒快速回答
Test-Time Training(TTT,推理时训练) 是一种让模型在推理阶段”边读边学”的技术:序列的隐藏状态不再是一个固定向量或不断增长的 KV 缓存,而是一个小模型(线性层或 MLP)。每读入一个 token,这个小模型就通过自监督损失做一步梯度更新——推理过程本身变成了训练过程。TTT 以线性复杂度和恒定内存实现超长上下文建模,记忆表达能力远超 RNN 的固定向量与 SSM 的线性状态。
核心价值:TTT 是继 Mamba 之后最被看好的”注意力替代方案”,2026 年被视为大模型从”一次训练、永久冻结”走向”测试时持续自适应”的关键技术,也为长上下文本地部署提供了新的效率路径。
1. 从”存记忆”到”学记忆”:序列建模的记忆瓶颈
所有线性时间架构都要把历史压缩进固定规模的状态,问题是这个状态有多强的表达能力:
| 家族 | 隐藏状态 | 记忆表达能力 | 复杂度 |
|---|---|---|---|
| RNN / LSTM | 固定向量 | 弱,长距离信息易丢失 | O(n) |
| SSM / Mamba | 线性递归状态 | 中等,16k token 后困惑度不再下降 | O(n) |
| Transformer | 增长的 KV 缓存 | 强,近乎无损但成本随长度增长 | O(n²) |
| TTT | 小模型权重(梯度更新) | 强,状态本身可学习 | O(n) |
TTT 的灵感来自一个观察:自监督学习能把海量数据压缩进模型权重——大语言模型能把整个互联网压缩成静态参数,那么一个 TTT 层为什么不能把当前序列压缩成一组快速权重?于是论文提出:隐藏状态 = 一个小模型 f(·; W),W 本身就是记忆。
2. TTT 的核心机制:两个循环
TTT 不是”测试时才突然开始训练”,它由两层嵌套循环构成:
- 外层循环(训练时):元学习。在预训练阶段学习内层模型的初始权重、学习率和投影矩阵——也就是学习”怎么在测试时学习“。外层参数训好后冻结。
- 内层循环(推理时):把输入序列当作无标签训练数据。对每条序列,用自监督重建损失做一步梯度下降,得到每个 token 时刻的 W₁, W₂, …, Wₜ。
概念版伪代码如下——注意前向里藏了一次反向:
# 概念版 TTT 层:隐藏状态是一个线性模型,每个 token 更新一次
class TTTLayer:
def __init__(self, d_model):
self.W = nn.Linear(d_model, d_model) # 隐藏状态 = 一个小模型
self.reconstruct = nn.Linear(d_model, d_model) # 自监督重建头
self.lr = 0.01 # 内循环学习率(外层元学习得到)
def forward(self, x_seq):
outputs = []
for x in x_seq:
x_hat = self.reconstruct(self.W(x)) # 1. 自监督目标:重建输入
loss = F.mse_loss(x_hat, x.detach())
grad = torch.autograd.grad(loss, self.W.parameters())
with torch.no_grad(): # 2. 推理时梯度更新
for p, g in zip(self.W.parameters(), grad):
p -= self.lr * g
outputs.append(self.W(x)) # 3. 用更新后的模型输出
return torch.stack(outputs)
关键点:推理管线变成了训练管线。每条输入序列都会产出一组专属权重,模型针对当前任务”特化”。直觉理解:外层训练给了模型”怎么学习”的能力,推理时它每读一段内容就把要点写进自己的”便签”,越读越懂。
3. 两个变体与工程加速
论文给出了两种实现:
- TTT-Linear:内层模型是线性层 f(W, x) = Wx + b。速度快、内存省,是默认选择。
- TTT-MLP:内层模型是两层 MLP(隐藏宽度为输入的 4 倍,GELU 激活)。表达更强,长上下文潜力更大,但需要存储中间激活,内存 I/O 开销更高。
为了让”每 token 一次梯度更新”在 GPU 上真正跑得动,论文配套了两个工程技巧:
- mini-batch TTT:攒够一小批 token 后做梯度平均、再统一更新权重,牺牲逐 token 最优性,换来数值稳定与可并行。
- dual form(对偶形式):把内层更新重写为高度优化的矩阵乘,匹配张量核心,比朴素实现快 5 倍以上。
实测效果(125M~1.3B 参数):TTT-Linear 与 TTT-MLP 均匹敌或击败同规模 Transformer 与 Mamba;在 32k 上下文上显著优于 Mamba,且困惑度随上下文增长持续下降——不像 Mamba 那样出现”平台期”;TTT-Linear 在 2k 上下文已比 Transformer 快约 10%。
| 方案(每 token 解码) | 时间 | 内存 | 记忆可学习性 |
|---|---|---|---|
| Self-Attention | O(n)(累计 O(n²)) | 随上下文增长 | 固定 KV |
| Mamba(SSM) | O(1) | 恒定 | 固定容量 |
| TTT-Linear | O(1) | 恒定 | 可学习 |
| TTT-MLP | O(1) | 恒定 | 强可学习 |
4. 与”推理时计算扩展”(Test-time Compute Scaling)的区别
两者名字相似但层面完全不同,需要明确区分:
| 维度 | Test-time Compute Scaling(慢思考) | Test-Time Training(TTT) |
|---|---|---|
| 改什么 | 不改变模型权重,只改变推理策略 | 推理时真正更新模型权重(快速权重) |
| 手段 | 思维链、自洽投票、Best-of-N、动态算力分配 | 把注意力层替换为”会学习的隐藏状态”,自监督梯度更新 |
| 层面 | 推理流程 / 策略优化 | 模型架构 / 参数优化 |
| 关系 | 与 TTT 互补:解决”多想一会儿更准” | 解决”如何记住并学习长上下文” |
一个理论亮点:论文证明线性注意力是 TTT-Linear 的特例(线性模型 + 特定更新规则时输出完全一致),而自注意力可以看作使用非参数学习器的 TTT 层——TTT 在理论上统一了 RNN 与 Attention 两种视角。
5. 2026 最新进展与局限
- EASE-TTT(2026.06):证据对齐的选择性测试时训练。把检索到的证据块转成软注意力监督目标,指导 query 侧注意力适配,最终仍从完整上下文生成答案。在 6 个 LongBench QA 任务和 3 个小规模 decoder-only 模型上取得最强宏观平均性能,优于全上下文推理、纯检索基线和通用 qTTT。
- SR-TTT(2026.02):用内循环重建损失识别”压不缩”的高惊讶 token,路由到稀疏残差缓存,缓解纯 TTT 在 Needle-in-a-Haystack 精确召回上的失效,同时保持 O(1) 内存。
- In-Place TTT(2026.04):把 MLP 输出投影矩阵当作可更新的快速权重,无需重新预训练即可给 4B 模型注入 TTT 能力,在 128k 上下文任务上超越同类方法。
主要局限:每 token 梯度更新比普通递归更耗算力,工程加速仍是活跃方向;架构成熟度不如 SSM,大规模生产部署尚少;固定容量压缩存在”精确回忆”短板——名字、ID 等稀有 token 容易被后续梯度覆盖。
总结
- 推理即训练:TTT 把”记忆”从数据结构升级为”会学习的模型”,隐藏状态就是小模型的权重。
- 快与强可兼得:TTT-Linear 快、TTT-MLP 强,配合 mini-batch 与 dual form 已具备工程可行性。
- 与慢思考互补:TTT 解决长上下文记忆与适配,Test-time Compute Scaling 解决推理算力分配,2026 年 TTT 正从论文走向落地。
延伸阅读:
- 站内:什么是推理时计算扩展(Test-time Compute Scaling)?让AI「慢思考」更聪明的核心技术
- 站内:什么是 Mamba?SSM 状态空间模型如何突破 Transformer 的长文本瓶颈全解析
- 原始论文:Sun et al., Learning to (Learn at Test Time): RNNs with Expressive Hidden States(arXiv:2407.04620)
- EASE-TTT 论文(arXiv:2606.06906):长上下文问答中的证据对齐测试时训练