文章目录一、N-gram 哈希计算公式1.1 公式说明1.2 数学表达式步骤 1混合计算XOR 混合步骤 2哈希索引计算1.3 完整公式1.4 设计要点二、门控机制计算公式2.1 公式说明2.2 数学表达式步骤 1相似度计算点积步骤 2门控激活函数特殊设计步骤 3值融合2.3 完整公式三、残差连接公式3.1 公式说明3.2 数学表达式3.3 设计要点四、时间偏移公式4.1 公式说明4.2 数学表达式4.3 示例五、公式总结5.1 核心公式列表5.2 数据流六、关键设计思想七、参考文献Engram的github仓库地址https://github.com/deepseek-ai/Engram本文档详细说明了 Engram 架构中使用的核心数学公式及其解释。一、N-gram 哈希计算公式1.1 公式说明N-gram 哈希是 Engram 架构的核心用于将 N-gram 序列映射到哈希索引实现 O(1) 的查找。1.2 数学表达式对于 N-gram 序列[t₀, t₁, ..., tₙ₋₁]步骤 1混合计算XOR 混合mix (t₀ × m₀) ⊕ (t₁ × m₁) ⊕ ... ⊕ (tₙ₋₁ × mₙ₋₁)参数说明tᵢ第 i 个 token 的 ID压缩后的 token IDmᵢ该层第 i 个位置的随机乘数奇数通过r × 2 1生成⊕按位异或XOR运算代码实现mix(tokens[0]*multipliers[0])forkinrange(1,n):mixnp.bitwise_xor(mix,tokens[k]*multipliers[k])步骤 2哈希索引计算hash mix mod p参数说明mix混合后的值p质数模数每个头使用不同的质数减少哈希冲突mod取模运算代码实现head_hashmix%mod# mod 是质数1.3 完整公式对于 N-gram 大小为 n第 j 个头的哈希索引hash_{n,j} ((t₀ × m₀) ⊕ (t₁ × m₁) ⊕ ... ⊕ (tₙ₋₁ × mₙ₋₁)) mod p_{n,j}其中p_{n,j}是第 n 个 N-gram 的第 j 个头使用的质数模数。1.4 设计要点XOR 混合的优势快速计算良好的分布特性可逆性在已知乘数的情况下质数模数的优势减少哈希冲突更好的分布均匀性数学上更稳定多层乘数每层使用不同的随机乘数确保不同层的哈希函数不同通过种子确保可复现性seed_layer seed PRIME_1 × layer_id二、门控机制计算公式2.1 公式说明门控机制用于动态融合静态 N-gram 记忆与动态隐藏状态决定 N-gram 记忆的融合强度。2.2 数学表达式步骤 1相似度计算点积s (K_norm · Q_norm) / √d参数说明K_norm归一化后的键从 N-gram 嵌入生成K Linear_key(E_ngram)K_norm RMSNorm(K)Q_norm归一化后的查询从隐藏状态生成Q hidden_states[:, :, hc_idx, :]Q_norm RMSNorm(Q)d隐藏层维度hidden_size·点积内积运算代码实现keyself.key_projs[hc_idx](embeddings)normed_keyself.norm1[hc_idx](key)queryhidden_states[:,:,hc_idx,:]normed_queryself.norm2[hc_idx](query)gate(normed_key*normed_query).sum(dim-1)/math.sqrt(backbone_config.hidden_size)步骤 2门控激活函数特殊设计gate σ(√(|s| ε) × sign(s))参数说明s相似度值ε 1e-6防止除零的小常数sign(s)符号函数保留原始符号σSigmoid 函数σ(x) 1 / (1 e^(-x))代码实现gategate.abs().clamp_min(1e-6).sqrt()*gate.sign()gategate.sigmoid()激活函数设计说明先取绝对值并限制最小值|s| ε开方√(|s| ε)恢复符号sign(s) × √(|s| ε)最后应用 sigmoidσ(...)这种设计可以增强门控的区分度更好地控制 N-gram 记忆的融合强度避免梯度消失问题步骤 3值融合output gate ⊙ V_proj参数说明V_proj投影后的 N-gram 嵌入值V_proj Linear_value(E_ngram)gate门控值形状为[B, L, 1]⊙逐元素乘法Hadamard 积代码实现valuegates*self.value_proj(embeddings).unsqueeze(2)2.3 完整公式对于第hc_idx个 hyper-connection 通道K Linear_key(E_ngram) Q hidden_states[:, :, hc_idx, :] s (RMSNorm(K) · RMSNorm(Q)) / √d gate σ(√(|s| ε) × sign(s)) V Linear_value(E_ngram) output gate ⊙ V三、残差连接公式3.1 公式说明通过短卷积增强特征并使用残差连接保持梯度流动。3.2 数学表达式output V_gated Conv(V_gated)参数说明V_gated门控后的值gate ⊙ V_projConv短卷积操作深度可分离卷积残差连接逐元素相加代码实现outputvalueself.short_conv(value)3.3 设计要点残差连接的优势保持梯度流动允许模型学习残差增量改进提高训练稳定性短卷积的作用捕获局部模式增强序列依赖关系提高特征表达能力四、时间偏移公式4.1 公式说明时间偏移用于构建 N-gram 序列通过填充和截取实现不同位置的 token 组合。4.2 数学表达式对于位置i的 tokenN-gram 序列为[tᵢ₋ₖ, tᵢ₋ₖ₊₁, ..., tᵢ]参数说明k偏移量0 ≤ k ntᵢ₋ₖ当i - k 0时使用pad_id填充代码实现defshift_k(k:int)-np.ndarray:ifk0:returnx shiftednp.pad(x,((0,0),(k,0)),modeconstant,constant_valuesself.pad_id)[:,:T]returnshifted4.3 示例对于序列[t₀, t₁, t₂, t₃]和 3-gramshift_0:[t₀, t₁, t₂, t₃]无偏移shift_1:[pad, t₀, t₁, t₂]偏移 1shift_2:[pad, pad, t₀, t₁]偏移 2在位置i2的 3-gram 为[t₀, t₁, t₂]来自shift_0[2]、shift_1[2]、shift_2[2]五、公式总结5.1 核心公式列表公式类型数学表达式作用N-gram 哈希hash ((t₀×m₀) ⊕ (t₁×m₁) ⊕ ... ⊕ (tₙ₋₁×mₙ₋₁)) mod pO(1) 查找索引门控相似度s (K_norm · Q_norm) / √d计算相似度门控激活gate σ(√(s值融合output gate ⊙ V_proj Conv(gate ⊙ V_proj)融合记忆并增强5.2 数据流输入文本 ↓ Token 压缩 ↓ N-gram 哈希: hash XOR_mix(tokens) mod prime ↓ 嵌入查找: E_ngram Embedding[hash] ↓ 门控计算: gate σ(√(|K·Q|/√d ε) × sign(K·Q)) ↓ 值融合: V gate ⊙ Linear_value(E_ngram) ↓ 卷积增强: output V Conv(V) ↓ 输出增强的隐藏状态六、关键设计思想O(1) 查找通过确定性哈希函数相同 N-gram 总是映射到相同的嵌入表索引实现 O(1) 的查找复杂度。条件记忆通过门控机制动态决定 N-gram 记忆的融合强度而不是固定融合提高了模型的灵活性。稀疏激活仅在特定层如第 1 层和第 15 层使用 Engram实现稀疏激活平衡计算效率和性能。多头设计每个 N-gram 使用多个头如 8 个头每个头使用不同的质数模数减少哈希冲突。七、参考文献Engram 论文Conditional Memory via Scalable Lookup: A New Axis of Sparsity for Large Language Models代码实现engram_demo_v1.py需要我帮你提取文档中的核心公式代码片段并整理成可直接运行的 Python 示例吗