Engram:DeepSeek开源的大模型静态记忆增强工具,实现记忆与计算的最优分配
一、Engram是什么
Engram是由DeepSeek AI开源的大语言模型条件记忆模块,作为混合专家(MoE)之外的互补稀疏性方案,它将经典N-gram嵌入现代化,实现了O(1)时间复杂度的知识查找。该模块通过在Transformer架构中融入静态记忆查找表,重新分配神经计算与静态记忆的参数比例,在严格等参数、等FLOPs约束下,270亿参数的Engram模型在知识、推理、代码、数学等领域的性能显著优于纯MoE基线模型。Engram还具备显存优化、长上下文处理能力强等特性,支持将大规模嵌入表卸载到主机内存,可广泛应用于知识密集型任务、超长上下文处理、边缘设备部署等场景。
Engram的核心理念是将条件记忆作为神经计算的补充稀疏轴,简单来说,它就像是给大模型装上了一个“海马体”和“高速外接硬盘”。传统Transformer架构只有神经网络,如同单一的CPU,而融入Engram的增强型Transformer则形成了“神经网络 + 静态记忆查找表”的双系统,相当于CPU搭配高速缓存。模型不再需要通过神经计算死记硬背所有知识,而是可以通过高效的查表操作获取静态模式和基础知识,从而将更多的计算资源留给复杂的逻辑推理任务。
从命名来看,Engram兼具“记忆痕迹(Engram)”与“N-gram”的双关含义,它复活了经典的N-gram思想,并通过现代化的神经组件重新融入Transformer架构,实现了静态记忆存储与动态神经计算的结构分离,是对当前“用算力换记忆”的大模型发展范式的重要反思与革新。

二、功能特色
Engram凭借独特的设计理念和技术实现,展现出六大核心功能特色,不仅在性能上实现了对纯MoE模型的超越,还在系统效率、可解释性等方面具备显著优势:
(一)O(1)时间复杂度高效查表
这是Engram最核心的性能特色之一。通过确定性哈希映射和多头哈希技术,Engram能够以O(1)的时间复杂度从大规模嵌入表中检索静态记忆向量,无需复杂的索引结构和迭代计算。相比之下,传统大模型需要通过多层神经网络的逐步计算来重构静态知识,耗时且低效。这种查表方式让模型获取基础知识的速度大幅提升,就像人们翻笔记复习一样高效,而不是每次都重新学习基础内容。
(二)等参数/等FLOPs下性能全面超越纯MoE
在严格的等参数、等FLOPs(浮点运算次数)约束下,Engram模型展现出了碾压性的性能优势。以270亿参数的Engram-27B模型为例,其在知识、推理、代码、数学四大核心领域的表现均优于同规格的纯MoE模型:知识类任务中,CMMLU提升4.0分、MMLU提升3.4分;通用推理任务中,BBH提升5.0分、ARC-Challenge提升3.7分;代码与数学领域,HumanEval提升3.0分、MATH提升2.4分。值得注意的是,Engram并未增加模型的总参数量,只是调整了参数的分配方式,将部分参数从神经网络转移到静态记忆表,却实现了性能的跨越式提升。
(三)遵循U型缩放定律,实现记忆与计算的最优分配
DeepSeek团队通过大规模实验,首次发现并量化了神经计算(MoE)与静态记忆(Engram)之间的U型缩放定律,为参数分配提供了科学依据。在固定总参数量的前提下,模型性能随Engram记忆占比的变化呈现出U型曲线特征,具体分布如下表所示:
表1:Engram记忆占比与模型性能的U型关系
| Engram记忆占比 | 模型性能表现 | 核心原因 |
|---|---|---|
| 0%(纯MoE) | 性能基线 | 模型被迫用专家参数记忆静态知识,计算资源利用效率低 |
| 10%-30%(最优区间) | 性能飙升 | 记忆与计算达到黄金配比,静态知识由查表获取,计算资源聚焦推理 |
| 50% | 性能下降 | 记忆占比过高,神经计算能力不足,无法支撑复杂推理 |
| 100%(纯查表) | 性能崩溃 | 完全失去神经计算能力,仅能机械查表,无任何推理能力 |
| 实验表明,在270亿总参数下,将20%-25%的参数分配给Engram(约50-67亿参数的嵌入表)时,模型效果最佳,相比纯MoE模型性能提升3-5个百分点。 |
(四)减轻模型浅层负担,提升有效推理深度
通过注意力可视化和LogitLens分析发现,Engram能够显著减轻模型浅层网络的计算负担。在纯MoE模型中,前6层网络往往需要花费大量精力重建“北京=首都”“达芬奇画了蒙娜丽莎”这类静态模式和事实性知识;而融入Engram后,模型前6层可以直接通过查表获取这些基础信息,无需再进行重复的神经计算,相当于模型的有效深度增加了6层,更多的网络层数能够被用于处理复杂的逻辑推理、多跳思考等高级任务,这也是Engram在推理任务中提升更为显著的核心原因。
(五)显存占用大幅降低,支持低成本部署
Engram采用了基础设施感知的系统级优化设计,其确定性寻址特性支持将大规模的静态记忆嵌入表从昂贵的GPU显存卸载到成本更低的CPU主机内存。实验数据显示,将嵌入表卸载到CPU后,模型的显存占用降低60%,而推理延迟仅增加5%,吞吐量仅下降8%。这一特性让大模型的部署门槛大幅降低,270亿参数的Engram模型甚至可以在24GB显存的消费级GPU上运行,同时主机内存的成本比GPU显存低约100倍,极大地降低了模型的训练和推理成本。
(六)可解释性更强,知识存储局部化
与纯MoE模型的黑箱式计算不同,Engram的记忆查找过程具备更强的可解释性。一方面,Engram的嵌入表呈现出知识局部化的特征,特定区域的嵌入表会存储特定领域的知识,类似人脑的知识分区,研究人员可以清晰地追溯知识的存储位置;另一方面,上下文感知门控机制会根据当前的语境动态筛选记忆内容,当检索到的记忆与上下文不符或存在哈希冲突噪声时,门控值会趋近于0,抑制无效记忆的融入,这一过程的决策逻辑可通过门控值的变化进行观察和分析。
三、技术细节
Engram的优秀性能源于其精巧的技术设计,从基础的词表处理到复杂的多分支融合,再到系统级的优化,形成了一套完整的技术体系。其核心技术细节主要包括分词器压缩、多头哈希检索、上下文感知门控、轻量级卷积融合、多分支集成以及稀疏性分配与系统优化六大模块,各模块协同工作,实现了静态记忆与动态计算的高效结合。
(一)分词器压缩(Tokenizer Compression)
传统的子词分词器(如BPE)为了保证文本的无损还原,会给语义等价但形式不同的词分配不同的Token ID,比如“Apple”“apple”“ apple”(带前缀空格)会被视为三个不同的Token。这种设计对于N-gram查表建模极为不利,会导致相同语义的短语因形式差异映射到不同的嵌入位置,降低了记忆表的语义密度。
为解决这一问题,Engram引入了分词器压缩技术,通过预计算一个映射函数P: V → V',将原始Token ID投影到规范化的ID,具体操作包括:采用NFKC标准化进行Unicode兼容分解、统一所有词的大小写、去除前缀空格等无意义的变体。经过这一处理,128k规模的原始词表可被压缩约23%,最终缩减至99k左右。需要注意的是,词表压缩并非为了节省参数,而是为了提高记忆表的语义密度,让相同语义的短语共享同一个嵌入向量,从而增强模型的泛化能力。
(二)多头哈希检索(Multi-Head Hashing)
直接存储所有可能的N-gram组合在工程上是不可行的,以3-gram为例,99k规模的词表会产生约10¹⁵种组合,远超硬件的存储极限。为此,Engram采用了哈希嵌入 + 多头机制的检索方案,既解决了存储爆炸问题,又降低了哈希冲突的影响。
哈希映射:对于每个N-gram阶数n(如2-gram、3-gram),Engram使用轻量级的乘法-XOR哈希函数φ_{n,k},将N-gram序列映射到嵌入表的索引位置,实现O(1)的快速查找。
多头设计:为了减少哈希冲突(不同N-gram映射到同一索引位置),Engram为每个N-gram阶数维护K=8个独立的嵌入表,每个表的大小为质数M_{n,k}(规模从几百万到几十亿不等)。同一个N-gram会通过8个不同的哈希函数从8个表中各检索1个嵌入向量,最终将这些向量拼接起来作为检索结果。这种设计类似于布隆过滤器的思想,不同哈希表的冲突概率相互独立,8个向量拼接后能有效放大有效信号、平均噪声信号。
(三)上下文感知门控(Context-Aware Gating)
这是Engram与传统N-gram模型最核心的区别,也是其实现“静态记忆动态适配”的关键。检索到的记忆向量是静态的,同一个N-gram在任何语境下查到的向量都是相同的,但实际语言中存在哈希冲突和一词多义的问题(如“bank”可表示银行或河岸),如果直接将静态记忆融入模型,会引入无效噪声。
Engram的上下文感知门控机制通过当前层的隐藏状态(h_t)作为Query,对检索到的静态记忆向量(e_t)进行动态筛选,具体步骤为:
将隐藏状态h_t和记忆向量e_t分别通过RMSNorm归一化处理;
计算归一化后两者的点积,得到门控值α_t;
用门控值α_t对记忆向量e_t进行加权,若α_t接近0,则表示检索到的记忆与当前上下文不符,会被大幅抑制;若α_t接近1,则表示记忆有效,会被充分融入。
这一机制让Engram实现了“按需回忆”,只有当记忆与当前语境匹配时,才会通过残差连接融入主干网络,既解决了哈希冲突和一词多义问题,又让静态查表具备了动态适应性。
(四)轻量级卷积融合
经过门控筛选后的记忆向量仅包含当前位置的信息,无法捕捉相邻位置的依赖关系,而语言中的语义往往与上下文的局部序列相关。为了弥补这一缺陷,Engram在门控操作后加入了深度可分离因果卷积层,具体参数为:卷积核大小w=4,膨胀率δ=3(等于模型采用的最大N-gram阶数),并搭配SiLU激活函数和残差连接。
这一轻量级的卷积设计为记忆模块赋予了“局部视野”,能够有效捕捉相邻位置的语义依赖,同时因果卷积的特性保证了模型的自回归推理逻辑,避免了未来信息的泄露。卷积层的计算量极低,不会对模型的整体推理效率造成显著影响。
(五)多分支集成(Integration with Multi-branch)
Engram并非为标准Transformer设计,而是深度适配DeepSeek V3/V4的Manifold-Constrained Hyper-Connections(mHC)多分支架构。在mHC架构中,模型的残差流被扩展为4个并行分支,Engram通过特定的参数共享策略实现了与多分支架构的高效融合:
共享参数:Value投影矩阵W_V和所有静态记忆嵌入表由4个分支共享,大幅节省了参数规模;
独立参数:Key投影矩阵W_K^{(m)}为每个分支独立设计,允许不同分支根据自身的隐藏状态计算独立的门控值α_t^{(m)}。
这种设计让不同分支能够根据自身的计算需求差异化地利用记忆内容,同时共享参数的设计将多个分支的记忆查找操作融合为一个密集的FP8矩阵乘法,大幅提升了GPU的利用率。
(六)稀疏性分配与系统级优化
稀疏性分配:Engram通过公式化稀疏性分配问题,明确了MoE与Engram的参数配比原则。除了核心的U型缩放定律,团队还通过消融实验验证了Engram的插入位置策略——通常将其插入Transformer的浅层(如第2层)和中层(如第15层)。浅层插入可快速卸载静态知识的重建负担,中层插入则能让门控机制获得更丰富的上下文信息,平衡建模效果与系统延迟。
系统级优化:在训练和推理阶段,Engram分别采用了不同的优化策略。训练阶段,将嵌入表按行切分到多个GPU,通过All-to-All通信实现嵌入向量的收集和梯度的分发;推理阶段,利用确定性寻址的特性,在模型前向计算开始前就预先计算出所有N-gram的哈希索引,通过“预取+重叠计算”的方式,将嵌入表从GPU显存卸载到CPU主机内存,推理延迟仅增加2.8%-5%,实现了存储成本与推理效率的平衡。

四、应用场景
Engram的设计特性使其能够适配大语言模型的多种应用场景,尤其在知识存储、推理优化、低成本部署等方面具备独特优势,目前已被验证可有效应用于以下四大核心场景:
(一)知识密集型任务处理
在医疗、法律、金融、教育等知识密集型领域,大模型需要掌握大量的专业术语、事实性知识和行业规则,传统模型容易出现知识遗忘、幻觉等问题,且需要通过海量参数和训练数据来记忆这些知识。
解决方案:将领域专属的专业知识预加载到Engram的静态记忆表中,模型可通过O(1)查表快速获取精准知识,无需通过神经计算重新推导。
应用效果:在医疗问答、法律条文解读、金融数据分析等任务中,模型的准确率可提升10-15%,同时知识幻觉率显著降低,知识的更新也更为便捷——只需更新记忆表中的内容,无需对整个模型进行微调。
(二)超长上下文处理
当前大模型的上下文窗口不断扩大(如128K、200K),但在处理长文档、长对话时,仍容易出现“前序内容遗忘”的问题,注意力机制难以兼顾全局上下文和局部细节。
解决方案:将长文档、长对话中的关键信息(如实体、核心观点、时间线)实时写入Engram的记忆表,模型在推理过程中可随时查表获取前序关键信息,释放注意力机制去关注全局上下文的逻辑关联和复杂推理。
应用效果:在长文档摘要、多跳问答、对话式AI等任务中,模型的准确率提升20%以上,例如在Multi-Query NIAH长上下文检索任务中,准确率从84.2提升至97.0,Variable Tracking任务准确率从77.0提升至89.0。
(三)边缘设备与低算力环境部署
手机、IoT设备、嵌入式系统等边缘设备的算力和显存资源有限,难以运行大参数量的大模型,而传统模型的轻量化方案往往会牺牲性能。
解决方案:采用“云边协同”的部署方式,将Engram的静态记忆表部署在边缘设备的CPU内存中,神经网络的核心计算部分卸载到云端,边缘设备仅需完成查表和轻量级的门控融合操作。
应用效果:边缘设备的本地响应延迟可控制在100ms以内,同时云端的计算压力大幅降低,让大模型能够在手机、智能家居、工业物联网等低算力设备中落地应用。
(四)多租户推理服务
在大模型即服务(MaaS)场景中,服务提供商需要为多个客户提供定制化的大模型服务,不同客户的知识需求、业务场景存在差异,若为每个客户单独训练或微调模型,成本极高。
解决方案:采用“共享神经网络 + 独立Engram记忆表”的多租户架构,所有客户共享同一个核心的Engram模型神经网络,而每个客户拥有专属的静态记忆表,存储自身的定制化知识。
应用效果:模型的显存占用降低70%以上,能够同时支持1000+租户的推理服务,客户的定制化需求可通过更新专属记忆表快速实现,无需修改核心模型,大幅降低了服务提供商的运营成本。
五、使用方法
Engram项目已完全开源,代码仓库包含演示脚本、论文原文、架构图等资源,用户可快速完成本地部署和体验。项目的使用门槛较低,仅需具备基础的Python编程能力和深度学习环境,具体使用方法如下:
(一)前置环境要求
编程语言:Python 3.8及以上版本;
核心框架:PyTorch(建议1.13及以上版本);
硬件资源:CPU内存16GB及以上(显存要求低,24GB消费级GPU即可运行27B模型);
依赖库:numpy、transformers、sympy等,均为深度学习常用库。
(二)快速安装与运行
克隆项目仓库
打开终端,执行以下命令克隆Engram的官方GitHub仓库到本地:
git clone https://github.com/deepseek-ai/Engram.git cd Engram
安装依赖库
通过pip命令安装项目所需的依赖库,建议在虚拟环境中执行,避免版本冲突:
pip install torch numpy transformers sympy
运行演示脚本
项目提供了核心逻辑演示脚本engram_demo_v1.py(部分版本为demo.py),该脚本模拟了Attention、MoE、mHC等组件,聚焦展示Engram模块的数据流和核心功能,执行命令如下:
python engram_demo_v1.py
运行成功后,终端会输出Engram模块的查表过程、门控值计算、特征融合等关键步骤的日志信息,帮助用户直观理解模块的工作流程。
(三)核心代码解读
为了帮助用户理解Engram的核心逻辑,项目提供了简化的代码实现,以下是Engram查找模块的核心代码解读(基于PyTorch):
import torch import torch.nn as nn class EngramLookup(nn.Module): def __init__(self, vocab_size, dim, n_gram=2, num_heads=8): super().__init__() self.n_gram = n_gram # N-gram阶数,默认2-gram self.num_heads = num_heads # 多头哈希的头数 # 初始化多头静态记忆嵌入表 self.embeddings = nn.ModuleList([ nn.Embedding(vocab_size ** n_gram, dim) for _ in range(num_heads) ]) def hash_ngrams(self, input_ids): """将输入token转换为N-gram哈希键""" batch_size, seq_len = input_ids.shape # 生成N-gram序列 ngram_seqs = [input_ids[:, i:i+self.n_gram] for i in range(seq_len - self.n_gram + 1)] ngram_seqs = torch.cat(ngram_seqs, dim=1) # 确定性哈希计算(简化版,实际使用乘法-XOR哈希) hash_keys = torch.sum(ngram_seqs * torch.pow(10, torch.arange(self.n_gram)), dim=-1) return hash_keys def forward(self, input_ids, hidden_states): # 1. 将输入转为N-gram哈希键 ngram_keys = self.hash_ngrams(input_ids) # 2. 多头O(1)查表,获取静态记忆向量 memory_list = [emb(ngram_keys) for emb in self.embeddings] memory = torch.cat(memory_list, dim=-1) # 3. 与动态隐藏状态拼接融合 output = torch.cat((hidden_states[:, :memory.shape[1], :], memory), dim=-1) return output
上述代码实现了Engram的核心功能:初始化多头记忆嵌入表、将输入Token转换为N-gram哈希键、通过多头查表获取记忆向量、与模型的动态隐藏状态融合。需要注意的是,这是简化版的演示代码,官方的生产级实现包含了上下文感知门控、轻量级卷积、多分支融合等更复杂的逻辑,且对哈希函数、嵌入表存储进行了深度优化。
(四)进阶使用建议
自定义记忆表:用户可根据自身业务需求,将领域知识、定制化规则转换为N-gram序列,写入Engram的静态记忆嵌入表,实现模型的知识定制化;
调整参数配比:根据U型缩放定律,调整Engram记忆表与MoE的参数占比,对于27B模型,建议将20%-25%的参数分配给记忆表;
系统级优化:在推理阶段,通过修改代码将嵌入表卸载到CPU主机内存,可参考项目文档中的
inference_optimize.py脚本;结合多分支架构:若需要适配mHC多分支架构,可参考项目中
mhc_integration.py的代码示例,实现Engram与多分支网络的融合。

六、常见问题解答(FAQ)
(一)Engram与MoE的核心区别是什么?
Engram和MoE都是大模型稀疏性的实现方式,但核心定位和工作原理截然不同。MoE是条件计算,通过激活部分专家网络来处理不同的任务,相当于让模型“找专家开会”,核心解决的是计算资源的高效分配问题;而Engram是条件记忆,通过查表操作获取静态知识,相当于让模型“翻笔记复习”,核心解决的是知识的高效存储与检索问题。两者是互补关系,而非替代关系,Engram通常与MoE结合使用,实现记忆与计算的最优搭配。
(二)Engram的记忆表容量是否越大越好?
并非如此。根据Engram的U型缩放定律,记忆表的容量需要与神经计算的参数规模保持合理配比,当记忆占比超过30%后,模型的性能会逐渐下降,若完全采用纯查表模式(100%记忆),模型会失去推理能力。在实际应用中,需根据模型的总参数量调整记忆表规模,27B模型的最优记忆占比为20%-25%,模型规模越大,最优记忆占比可适当提升,但一般不超过30%。
(三)Engram支持哪些大模型架构?
目前Engram主要适配DeepSeek自研的mHC(Manifold-Constrained Hyper-Connections)多分支架构,同时也可兼容标准的Transformer架构和MoE架构。项目提供了与不同架构融合的代码示例,用户可根据自身需求进行修改和适配,适配过程的核心是确定Engram的插入位置和特征融合方式。
(四)Engram的记忆表如何更新和维护?
Engram的静态记忆表支持离线更新和在线微调两种方式。离线更新适用于知识的批量更新,用户可直接修改记忆嵌入表中的向量值,无需重新训练模型;在线微调则是在模型推理过程中,根据用户的反馈和新的训练数据,对记忆表进行小幅度的参数更新,这种方式需要搭配轻量级的优化器,避免影响模型的稳定性。
(五)Engram的推理延迟是否会显著增加?
不会。Engram采用了确定性寻址和预取优化技术,将嵌入表卸载到CPU主机内存后,推理延迟仅增加2.8%-5%,而吞吐量仅下降8%,这一性能损耗在实际应用中几乎可以忽略。相比之下,模型性能的提升和显存成本的降低远大于这一微小的延迟增加。
(六)Engram的开源协议是什么?是否可商用?
Engram遵循Apache 2.0开源协议,用户可自由使用、修改、分发项目代码,且允许商业用途,无需向DeepSeek AI支付授权费用。但在商业应用中,需遵守协议的相关规定,保留版权声明和许可证信息。
(七)如何解决Engram的哈希冲突问题?
Engram主要通过多头哈希和上下文感知门控两种方式解决哈希冲突。多头哈希采用8个独立的哈希函数和嵌入表,不同N-gram在多个表中同时冲突的概率极低;上下文感知门控则会对检索到的记忆进行动态筛选,若哈希冲突导致记忆与上下文不符,门控值会趋近于0,从而抑制噪声的融入。

七、相关链接
项目GitHub仓库:https://github.com/deepseek-ai/Engram
论文原文:https://github.com/deepseek-ai/Engram/blob/main/Engram_paper.pdf
DeepSeek官方网站:https://www.deepseek.com/
八、总结
Engram是DeepSeek AI开源的大语言模型条件记忆模块,作为大模型稀疏性的全新维度,它通过将经典N-gram嵌入现代化,实现了O(1)时间复杂度的知识查找,构建了“神经网络 + 静态记忆查找表”的双系统架构,核心解决了传统Transformer架构用神经计算低效模拟知识检索的问题。该模块遵循U型缩放定律,在20%-25%的记忆参数占比下实现了记忆与计算的最优分配,在等参数、等FLOPs约束下,27B的Engram模型在知识、推理、代码、数学等领域的性能显著优于纯MoE模型,同时还具备显存占用低、可解释性强、部署成本低等特性。Engram的技术设计涵盖分词器压缩、多头哈希检索、上下文感知门控等关键模块,可广泛应用于知识密集型任务、超长上下文处理、边缘设备部署、多租户推理服务等场景,其开源代码仓库提供了完整的演示脚本和核心逻辑实现,遵循Apache 2.0协议可自由商用。Engram不仅是对大模型“用算力换记忆”范式的重要革新,也为下一代稀疏大模型的设计提供了全新的思路,实现了静态记忆存储与动态神经计算的高效协同,让大模型能够更高效地利用计算资源,在提升性能的同时降低部署和使用成本。
相关软件下载
DeepSeek
版权及免责申明:本文由@AI工具集原创发布。该文章观点仅代表作者本人,不代表本站立场。本站不承担任何相关法律责任。
如若转载,请注明出处:https://www.aipuzi.cn/ai-news/engram.html

