1. 从暴力计算到条件记忆:Engram的诞生背景
在大型语言模型(LLM)的发展历程中,计算效率与资源消耗始终是核心矛盾。传统Transformer架构采用"全量计算"模式——无论输入问题的复杂度如何,模型都会对所有token执行完整的注意力计算。这种设计虽然保证了泛化能力,却造成了显著的算力浪费。
举个例子,当模型处理"1+2=?"这类基础算术问题时:
- 输入文本被分词为["1", "+", "2", "=", "?"]
- 每个token经过embedding层转换为特征向量
- 通过自注意力机制计算Q、K、V矩阵
- 执行多头注意力计算
- 经过前馈网络输出结果
这种计算过程与人脑的认知机制存在明显差异。人类面对简单问题时(如1+2),会直接调用长期记忆中的答案;而遇到复杂问题(如999+345)才需要启动计算推理。Engram的核心理念正是模拟这种"条件化记忆"机制——让模型能够区分哪些知识可以直接调用,哪些需要实时计算。
关键洞察:Engram不是要替代传统注意力机制,而是为其增加一个"快速通道"。当模型识别到已知模式时,可以绕过部分计算直接获取结果。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Engram架构深度解析
2.1 基于N-Gram的记忆查找机制
Engram的核心组件是一个可扩展的键值存储系统,其工作流程可分为三个阶段:
记忆写入阶段(训练时):
- 模型在处理输入序列时,动态记录2-Gram和3-Gram的中间表示
- 对每个Gram组合计算哈希值作为键
- 将当前层的隐藏状态作为值存储
记忆查询阶段(推理时):
python复制def query_engram(current_token, prev_tokens):
# 生成2-Gram和3-Gram组合
bigram = (prev_tokens[-1], current_token)
trigram = tuple(prev_tokens[-2:] + [current_token])
# 多哈希表查询
for hash_table in self.hash_tables:
bigram_key = hash(bigram)
trigram_key = ha
