让记忆长在模型里:近300B的MemT 1.0记忆原生模型开源,把"记笔记"变成可训练的参数化能力

让记忆长在模型里:近 300B 的 MemT 1.0 记忆原生模型开源

Part One:当模型只能靠"给下一代写信"传承经验

过去两年,大模型的能力一路狂飙,但有一个缺口始终没有真正补上——记忆。

规则、方法、踩过的坑,今天可以以文本形式躺在外部笔记或向量库里,模型每次都"看得到";可一旦新一轮推理开始,模型权重没有任何改变,它又像第一次上班一样从头来过。一位开发者的吐槽很形象:当下模型积累经验的方式,像是"只能靠给下一代写信来传承知识"——信写得再详尽,读信的人本身并没有变强。

2026 年 10 月 20 日,来自上海的记忆张量(MemTensor)团队正式发布并开源了业内首个记忆原生基座模型 MemT 1.0,第一次把历史信息编码成可持续存在、可逐 Token 更新的内部记忆状态,让参数化记忆能持续参与后续每一步生成。它包含两个型号:

  • MemT-1.0-Flash:288B 总参、17B 激活、336M 动态记忆,基座是进一步后训练的 DeepSeek-V4-Flash;
  • MemT-1.0-Nano:36B 总参、3B 激活、10M 动态记忆,基座是"源神" Qwen3.6-35B-A3B。

这是目前业内最大的开源参数化记忆模型,也是记忆原生路线第一次在近 300B 规模上完成工程验证。权重在 Hugging Face、ModelScope 开放,技术报告挂在 arXiv(2610.26825),GitHub 仓库为 MemTensor/MemT-1.0。

在 Hinton 牵头、22 位作者(含 Bengio、OpenAI 首席科学家 Pachocki、Anthropic 联创 Jack Clark)联署的 RSI(递归自我改进)论文引发热议的当口,MemT 切中的正是 RSI 的一个前置问题:一次改进,如何成为下一次改进的起点? 承接这件事的底层能力,是记忆。如果经验无法被高效地保留、更新和调用,递归自我改进就没有"递归"的载体。

这篇文章我们系统拆一拆:记忆原生和我们熟悉的外挂记忆到底有什么本质区别?MemT 在 Transformer 里加了一条什么样的"记忆通路"?Gated DeltaNet-2 的逐 Token 更新、四种门控、MoS 混合存储各自解决什么问题?它在 11 项记忆基准和 SWE-bench 智能体任务上的成绩,又说明了哪些边界?

Part Two:三种旧记忆,和"记忆原生"的范式转变

要看懂 MemT 的取舍,先盘点大模型里现存的三类记忆。技术报告把它们的读写效率差异讲得很清楚:

记忆类型存在哪优点硬伤
激活记忆上下文窗口 + KV Cache即用即取、最精确会话结束即消失,成本随历史长度线性增长
参数记忆模型权重可隐式调用、无检索更新一次要微调整个模型,无法逐条编辑
外部记忆外部知识库/向量库可编辑、可溯源、可审计每次都要靠检索才能"想起来",不改变模型本身

过去两年主流的长期记忆工程,几乎都是外挂式的第三类:把记忆原文、检索证据甚至抽象方法塞回上下文,让模型复用。RAG、记忆库、各种 MemGPT 式方案都属此类。它们解决了大量实际问题,却没有改变模型本身——模型依然是那个"权重不变、每次重读书"的模型。

记忆原生(memory-native)要换一条路:历史不再以文本形式反复注入上下文,而是被编码成持续存在、尺寸固定、可更新的内部状态矩阵,由模型在每个 Token 的生成中直接读写。打个比方,外挂记忆像是"随身带一个永远翻不完的笔记本,做题前先翻笔记";记忆原生则是"知识真的长进了脑子,做题时直接想起来"。

这里有一个关键的观念转变:把记忆从一个数据问题,变成一个优化问题。

  • 如果写入和读取只是前向计算(把文本压缩进状态再读出来),模型学到的充其量是"怎么压缩文本";
  • MemT 的做法是让来自回答预测的误差梯度,沿记忆读出路径、再沿更早的存储操作一路反传更新回去。这就像让一次考试的错题,反过来决定你平时该记什么笔记、怎么记。

报告里有一句很精辟的总结:记忆的"所有权"第一次落在了模型这一侧。部署时,系统把记忆状态与某个用户/任务轨迹绑定,通过序列化、保存、恢复实现跨会话延续;外部存储只负责承载这些状态和原始资料,而记忆的形成、更新和使用全部由模型内部机制完成。

先给一张架构全景:

                         当前 Token 的隐藏状态 h
                                  |
              +-------------------+-------------------+
              |                                       |
              v                                       v
   +---------------------+              +-----------------------------+
   |   原有注意力通路      |              |      记忆注意力通路 (新增)    |
   |  standard attention  |              |  memory query  -> 读动态矩阵 |
   +---------------------+              |  -> 归一化 -> 输出门控         |
              |                         +-----------------------------+
              |                                       |
              +-------------------+-------------------+
                                  v
                     融合 (相加)  -> 进入后续层
                                  ^
                                  |  轮次结束时写入
        +-------------------------+--------------------------+
        | 动态局部记忆 local memory(每轨迹从 0 开始,可变)     |
        |   投影生成 key/value,擦除/写入/遗忘三门控逐 token 更新 |
        +-----------------------------------------------------+
        | 超记忆 hyper memory(投影+门控参数,在线交互时冻结)    |
        +-----------------------------------------------------+

Part Three:一条与注意力并联的记忆通路,和两种记忆

MemT 在选定的 Transformer 模块里,给原本的注意力机制并联了一条记忆分支。当前输入一路走原注意力路径,另一路通过"记忆查询"去读取历史状态,两路结果相加融合后进入后续计算。这样,前几轮交互留下的信息就能影响当前 Token 的生成,而无需把历史原文再喂一遍。

记忆本身由两部分构成:

  1. 动态局部记忆(local memory):一个压缩历史的状态矩阵,保存这条对话/任务轨迹的具体经历。每条新轨迹开始时它从零矩阵初始化,随交互不断更新。
  2. 超记忆(hyper memory):提供投影矩阵和各种门控的可训练参数,决定"怎么写、怎么读、怎么忘"。它在训练阶段学习,在在线交互阶段保持冻结——变的是经历,不变的是"记笔记的方法论"。

这个分工很巧妙:带上新经历时,只需要更新对应任务轨迹的动态状态,不必每次微调整个主干网络。这就把"更新知识"和"更新能力"解耦了——你可以让模型持续积累,而不必为每条新经验付出全参数微调的代价。

3.1 写入:投影 + 三门控

一轮对话结束后,输入和回答的隐藏状态经过投影,生成记忆的键(key)和值(value),然后通过三个门控逐 Token 地塑造状态:

  • 擦除门控(erase gate):调整、淡化旧关联,决定旧记忆里哪些该被覆盖;
  • 写入门控(write gate):注入新信息,决定新经历以多强的权重写入;
  • 遗忘门控(forget gate):控制保留强度,处理记忆的自然衰减。

读取时,当前输入被映射成记忆查询,从矩阵读出相关信息,经归一化和**输出门控(output gate)**后,与普通注意力输出相加,参与后续生成。输出门控控制的是"记忆对当前回答该施加多大影响"——避免无关旧经历喧宾夺主。

下面用一段简化 Python 展示这种"擦除/写入/遗忘"逐 Token 更新状态矩阵的核心数学直觉(教学示意,非官方实现):

import numpy as np

def sigmoid(x):
    return 1.0 / (1.0 + np.exp(-x))

class ToyMemoryState:
    """
    教学版记忆状态更新:M 是固定大小的记忆矩阵。
    每个 token 用 erase / write / forget 三个门控更新 M。
    类比 Gated DeltaNet 风格的关联记忆写入。
    """
    def __init__(self, d_k=32, d_v=32):
        self.M = np.zeros((d_v, d_k))          # 动态局部记忆,从零开始

    def update(self, k, v, W_erase, W_write, W_forget, x):
        # 由当前输入算出三个 0~1 的门控
        e = sigmoid(x @ W_erase)               # erase gate
        w = sigmoid(x @ W_write)               # write gate
        f = sigmoid(x @ W_forget)              # forget gate

        # 1) 遗忘:整体衰减旧记忆(保留强度)
        self.M = self.M * f
        # 2) 擦除:按 key 方向定向淡化旧关联(外积形式)
        self.M = self.M * (1 - np.outer(v * 0 + 1, e))   # 简化:按 e 缩放列
        # 3) 写入:把新的 key->value 关联加进矩阵
        self.M = self.M + w * np.outer(v, k)
        return self.M

    def read(self, q):
        # 查询:q 与记忆矩阵相乘,取出关联的 value
        return q @ self.M.T

# 模拟一条轨迹:先后写入两条经验,看模型能否"想起"早先那条
rng = np.random.default_rng(1)
d = 32
mem = ToyMemoryState(d, d)
W_e, W_w, W_f = [rng.normal(size=(d, d)) * 0.1 for _ in range(3)]

# 第一轮:记住"会议改到周三"
k1, v1, x1 = rng.normal(size=(3, d))
mem.update(k1, v1, W_e, W_w, W_f, x1)
# 后续很多轮无关对话(遗忘门控会让旧记忆缓慢衰减)
for _ in range(20):
    k, v, x = rng.normal(size=(3, d))
    mem.update(k, v, W_e, W_w, W_f, x)

# 用第一轮的 key 作查询,检验读出向量是否仍与 v1 同向
out = mem.read(k1)
cos = float(out @ v1 / (np.linalg.norm(out) * np.linalg.norm(v1) + 1e-9))
print(f"20 轮干扰后,对早期经验的读出余弦相似度: {cos:.3f}")
print("(>0 说明固定大小的记忆矩阵仍保留了可被查询的早期关联)")

这段代码的要点是:记忆矩阵 M 的尺寸始终固定,不会随对话变长而膨胀,但通过门控写入,它能在大量干扰之后仍保留对早期经验的可查询关联。这正是"有界状态 + 可更新内容"相对"无界全文上下文"的核心差异。

Part Four:Gated DeltaNet-2 逐 Token 更新——为什么 6 分差距很关键

MemT 的更新机制建立在 Gated DeltaNet-2(GDN-2) 之上,做了稳定化处理,并取代了团队上一代系统 Metis 的 Token 选择策略。

一个核心设计是更新的时间粒度:

  • 轮内:仍按 Token 顺序逐 Token 调整状态;
  • 一轮结束后:触发门控更新,把这一轮的信息整体融入已有记忆。

为什么非要做到逐 Token,而不是一轮结束后一次性聚合?消融实验给出了很硬的答案。在 MemT-1.0-Nano 上:

  • 完整模型(逐 Token 稳定更新):记忆基准平均 47.0;
  • 去掉稳定化、退回朴素 GDN-2 更新:46.4(接近,说明稳定化是小幅增益);
  • 把逐 Token 更新换成整轮聚合:直接掉到 41.0。

6 分的差距说明:连续的 Token 级更新能更好地处理记忆衰减、并及时修正轮内关联。如果等一整轮结束才统一写入,中间那些转瞬即逝的关联信号就丢了。

稳定化修复也值得一提。MemT 让擦除操作对称化——使用经过平方根缩放的 key 和 erase gate。在论文给出的"仅擦除、单位衰减、无写入项"的受限情形下,可以证明这个映射在一个方向上收缩、且不会在正交方向上扩张,从而保证反复更新时记忆状态不会数值发散。这是把一个研究型关联记忆机制推到 288B 生产规模时必须补上的工程保险。

Part Five:记忆容量不够怎么办——MoS 混合存储

记忆内容不断积累,固定大小的记忆矩阵总会有容量上限。MemT 借助 MoE 的思想提出了 MoS(Mixture-of-Storage,混合存储)。

做法是把一个记忆原生模块扩展为多个"记忆专家",每个专家各自学习存储与使用的路由。但它和基座 MoE 的稀疏专家路由有一个关键不同——MoS 采用稠密融合:所有记忆专家都参与计算,由路由权重决定各自的贡献度,而不是只激活少数几个。

        基座 MoE(稀疏)                    MoS 记忆(稠密)
  --------------------------        ------------------------------
  Top-k 个专家参与计算               全部记忆专家都参与
  适合"计算分工"                     适合"记忆不能漏"
  专家各司其职、互不重叠             多专家共享地址、稠密加权融合

为什么记忆要用稠密而不是稀疏?直觉是:遗忘一条经验的代价,可能高于多算几个专家的代价。稀疏路由一旦没把某条记忆分给负责的专家,这条经验就可能在需要时缺席;稠密融合让每个专家的记忆都有机会对当前回答投票,容量可以靠加专家独立扩张,而基座的主干流程完全不动。在一个小容量对照实验里,4 个记忆专家在匹配的后期 checkpoint 上跑赢了 2 个专家——论文也诚实地标注这只是有限实验、尚不能当作 scaling law。

为了让模型真正"学会使用"这条新通路,团队构建了 340 亿 Token 的记忆训练语料(继续预训练 200 亿 + 后训练 140 亿),分两阶段训练:先继续预训练打底,再在后训练阶段让记忆参数去逼近一个冻结的、带完整上下文的基座教师模型——学生只能通过自己的记忆状态拿到历史,却要学会给出接近教师的答案。这是一种把"读全文"能力蒸馏进"记要点"能力的训练范式。

Part Six:实测成绩——记忆基准、智能体编程,和长历史的省存提速

光有架构不算数,看三组关键结果。

第一,11 项记忆基准综合评估。 Flash 平均 50.6、Nano 平均 47.0,在参评的参数化记忆方法里排第一、第二;对比最强的参数化基线 Temp-LoRA(38.1),分别高出 12.5 和 8.9 分,属于断崖式领先。同时整体通用能力基本保留。

第二,SWE-bench 智能体编程实测。 由执行框架在关键断点触发"经验写入",把过程性经验存进原生记忆(同样的指导若放文本上下文就是对照组)。在 SWE-bench Verified 的 500 项任务上、每项独立跑三次:

  • Nano 关键断点平均成功率:无经验基线 66.07% → 69.73%;
  • 三次全部成功的任务比例(pass³,衡量稳定性):54.00% → 62.80%;
  • SWE-bench Multilingual(9 种语言 300 题)平均 60.00% → 62.89%/63.56%,pass³ 45.33% → 53.67%/55.33%。

提升幅度不算惊天动地,但 pass³ 近 9 个百分点的跃升说明一件更有价值的事:记忆原生改善的不只是平均表现,更是重复执行的一致性和稳定性——模型靠内化的经验,更少出现"这次会、下次不会"的抽风。

第三,长历史的效率优势。 在双 GPU、单并发、固定生成 128 Token 的条件下,历史达到 128K 时 Nano 端到端推理速度约为完整上下文方式的 1.86 倍,256K 时达 3.99 倍;而持久化的记忆状态体积约为完整上下文 KV Cache 的 1/66。这正是"有界固定状态"对"无界增长 KV"的胜利:历史越长,优势越大。

Part Seven:边界与反思——记忆不是成绩单,文本记忆仍有强项

必须给热度降点温。MemT 自己的论文和第三方(如 alphaXiv 的编辑评述)都指出了清晰边界:

  1. 显式文本记忆在部分基准上仍然更强。 在长对话记忆基准 LoCoMo 上,Flash 得 65.1、Nano 57.5,而文本式记忆系统 MemOS 高达 85.7/83.4。也就是说,需要逐字精确回忆原话、可溯源引用的场景,“翻笔记"依然胜过"凭记忆”。
  2. 精确删除、解释、恢复更难。 参数化记忆一旦融入矩阵,想逐条审计"模型到底记住了我哪句话"、或在合规要求下精准擦除某条信息,需要额外机制;外部文本记忆天然可检查、可溯源。这与上周 ART 酶争议暴露的"输出无法区分来源"是同一类信任难题。
  3. 论文证明有适用范围。 稳定化的收缩性证明只针对"仅擦除"的受限情形,不代表整个记忆系统在所有配置下都严格稳定;MoS 的专家数增益也只是小实验,不是定标定律。

所以更准确的定位不是"记忆原生取代 RAG/文本记忆",而是两者各有分工:参数化原生记忆擅长隐式的方法复用、跨任务的"融会贯通"和长历史下的省存提速;显式文本记忆擅长精确事实、可审计、可删除。工程上大概率是混合架构——该长进脑子的进脑子,该留在台账的留台账。

Part Eight:为什么说它是 RSI 的"必要不充分条件"

回到开篇的 RSI 语境。递归自我改进要求模型的一次改进能沉淀为下一次的起点,这至少需要三种能力:形成有效方法、保留有效方法、在新任务里调用有效方法。外挂文本记忆证明了"保留和调用"可以用数据工程做出来,但那条路径下模型本身不成长;MemT 证明的是——记忆可以作为一种可训练、可微分、参与前向计算的内生能力存在,让"从经验中学习"从提示词技巧变成模型架构的一部分。

它是"必要条件"而非"充分条件":有了可积累的记忆底座,模型才谈得上跨任务持续整合经验、自主获取经验;但真正的 RSI 还需要更可靠的自我评估、改进的验证闭环,以及上面提到的记忆可解释/可删除机制。

对落地而言,团队点出了几个清晰方向:智能客服(记住每个客户的历史与偏好)、软件研发自动化(跨工单复用调试经验,SWE-bench 已验证)、个性化服务;以及一个更微妙的商业含义——业务部署方可以让开源模型快速长出"只懂自己业务、绝对保密"的独特记忆,记忆所有权和数据不必离开自己的轨迹。研发团队也明确了下一步:提升长期记忆、扩展记忆容量、降低记忆更新成本,并探索自主获取经验、跨任务持续整合记忆。

如果说推理能力决定的是模型单次智能的上限,那么记忆决定的可能是每次推理的底线。MemT 1.0 第一次在近 300B 规模上证明:模型不必每次都从零开始,它可以"会记住、会成长"。这条"Memory Scaling"曲线能走多陡,或许会成为继预训练 Scaling、推理 Scaling 之后,基座模型的下一条增长曲线。

参考资料:记忆张量 MemT-1.0 技术报告(arXiv:2610.26825)、GitHub MemTensor/MemT-1.0、HuggingFace/ModelScope 模型页、36氪、上观新闻/新民晚报、环球网、alphaXiv 等公开报道(2026-10-19/20)。文中代码为原理演示,非官方实现。