多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Metis:把历史对话记忆压入大模型参数

Metis:把历史对话记忆压入大模型参数 一句话总结Metis 把跨多轮历史压缩进固定大小的原生记忆状态推理时上下文不含历史信息也能完成记住、更新、遗忘、反思与问答它不替代外挂记忆而是走一条延迟更稳、存储恒定的互补路线论文标题Metis: Memory Foundation Model论文地址https://arxiv.org/abs/2607.26760作者背景记忆张量、中国人民大学、新加坡国立大学、上海交通大学、同济大学代码地址https://github.com/MemTensor/Metis模型地址https://huggingface.co/collections/IAAR-Shanghai/metis一、动机多模态、长思维链这些年陆续被内化成 llm 的原生能力agent 记忆却大多仍挂在模型外面检索一段相关历史再拼回提示词。外挂记忆可解释、能跨模型复用目前也是工业界最有效的方案但它有三个结构性缺口目标脱节外挂记忆优化的是拼出一段好上下文模型优化的是在给定上下文上做语言建模。两边各训各的目标未必一致梯度断路检索、重排、拼接都是离散操作端到端后训练几乎没有可导路径。用强化学习绕过去只能部分缓解还有效率问题在线开销这些操作都需要额外调用服务可能会增加线上推理延迟作者认为存哪些、读哪些信息本身就是预测经常有意图和内容缠在同一句话里的情况离散规则难以拆干净取的时候无论是按语义相似度、按情绪还是按多种隐含指标的组合写多少规则都还是可能会漏。于是展开设想能否让记忆也落尽连续函数空间融入模型与前向计算焊在一起这条路线称为记忆基础模型内化后的能力叫原生记忆历史以参数形式驻留模型记住 / 遗忘 / 更新在前向里自动完成。Metis 就是这条路线的第一个原型二、实现方案2.1 架构设计Metis 不动骨干原有的注意力和 FFN只在每层 Transformer 块里加一个 Metis 块。它分两部分本地记忆随会话变化每层一个固定大小的矩阵 M 和向量 SM 相当于把历史各轮的「键 × 值」累加、压扁后的 KV 缓存S 是这些键的累加和用于归一化。会话开始时两者为零每轮结束改写一次大小始终不变超记忆上线后冻结一组中期训练学出的静态权重重要性向量 W_agg 决定哪些 token 值得写记忆键 / 值投影 W_k / W_v 决定写成什么记忆查询投影 W_q 决定怎么读2.2 记忆存取一轮对话结束后超记忆块通过学成的自适应函数把本轮上下文聚合成紧凑表示。具体地先给本层每个 token 的隐状态打重要性分按 top-ρ 挑一小撮出来把它们的隐状态投影成记忆键和值再按折扣因子融进 M旧信息按比例衰减S同步更新。top-p 截断本身不可导训练时用直通估计器把梯度绕回稠密分布实现端到端学习读取时不复用原始 query而是额外投影出一个专门的记忆 query 读 M 与 S再与当前步的因果自注意力按权重混合作者理论证明了这一做法近似于于插入了「虚拟记忆前缀」历史不以文字回到提示词而以数值直接参与计算二者之间的误差可控如此一来层内原注意力、记忆读出、记忆写入彼此无串行依赖原则上可并行记忆状态大小固定读出成本不随历史轮数线性涨。2.3 数据工程从 27 个公开基准合成 35.7 万条约 4.06 亿 token覆盖记住、遗忘、更新记忆以及把多条事实串起来的反思从而让模型具备记忆操纵的能力。同一事实写显式指令与隐式叙述两种说法并插入干扰轮逼模型从意图推断而非抓关键词除此之外还收集了 60.9 万条辅助数据专门治两类病干扰易混事实绑错、忘掉甲却弄坏乙与记忆污染闲聊或不需要记忆的问题仍把已记内容写进回答。训练时冻结骨干只更新记忆相关参数三、实验结果3.1 记忆操作能力测试测试对象包括各尺寸的 Qwen 原版、本文提出的 Metis 以及其他零上下文记忆框架 Temp-LoRA 和 δ-Mem外加完整、部分完整RAG上下文的对照组。测试任务包括记忆操作和基于记忆的问答结果如以下两张表所示可见 Metis-27B 在几乎所有评测项上都达到了最高分数更小尺寸的版本也明显强于对照方案3.2 消融实验把门控换回线性加权整体相对跌幅只有 0.58%操作类任务甚至略升发生断崖下跌的是自适应聚合状态大小固定时选哪些 token 写进去是重中之重去掉独立 query 与归一化的跌幅也与理论一致共享矩阵里要靠专用 query 和归一化压噪声3.3 记忆容量一块固定大小的记忆到底装得下多少记忆作者做了两方面测试步级容量一次写入能装多少把一批事实一次性写进记忆再回头抽查最早、中间、最新的三条。塞进去的越多答得越差其中最早那条崩得最快说明单次写入的信息量有明显上限轨迹级容量反复更新能留住多少把 40 条事实分批写进记忆每轮都抽查最早、中间和最新的三条。更新轮数一多最早那条几乎一路走低中间和最新的也跟着起伏。这说明新写入并不是干净地覆盖掉最旧的记录而是把干扰散布到了整块记忆状态上3.3 域外和通用能力测试在记忆操作场景下测试数据流水线之外的记忆基准可见平均情况下是 Metis 领先但并未能全盘超越对照组通用能力测试结果如下可见在初始状态下尚未注入记忆Metis 与初始的 Qwen 模型相比并没有显著改变模型行为而诸如无关文本后效果明显下降这类似于在上下文中增加无关提示词而导致模型能力退化
返回列表