對于問題「北京是中國的首都」,需要推理嗎?
應(yīng)該是不需要,地球人都知道
但現(xiàn)在,Transformer 只有一種處理方式:全靠算
DeepSeek 大半夜的,發(fā)布了一篇新論文Conditional Memory via Scalable Lookup:A New Axis of Sparsity for Large Language Models
![]()
https://github.com/deepseek-ai/Engram
這篇論文中,做了一個新方法 Engram,并給到觀點:
該查表的查表,該算的算,兩件事分開處理
對此,他們 Engram 的模塊,專門負責(zé)「查」,和負責(zé)「算」的 MoE 配合使用
結(jié)果就是,Engram-27B 在等參數(shù)、等算力條件下,全面超越純 MoE baseline
代碼已開源:https://github.com/deepseek-ai/Engram
![]()
一個具體的例子
論文里有個很直觀的案例
模型處理「Diana, Princess of Wales」這個實體時,內(nèi)部發(fā)生了什么:
層數(shù)
模型此時「認為」這是什么
第 1-2 層
Wales,一個國家
第 3 層
Wales,歐洲的一個國家
第 4 層
Princess of Wales,一個頭銜
第 5 層
Princess of Wales,威爾士親王的妻子
第 6 層
Diana, Princess of Wales,戴安娜王妃
六層網(wǎng)絡(luò),才把這個實體識別出來
但「戴安娜王妃」這個知識是固定的,不會因為上下文變化而變化。模型花六層來「算」出這個結(jié)果,本質(zhì)上是在用計算重建一個靜態(tài)的查找表
這六層深度,本可以用來處理更復(fù)雜的推理任務(wù)
Engram 怎么做
技術(shù)方案不復(fù)雜:用連續(xù)幾個 token(N-gram)作為「查詢詞」,從一個大表里查出對應(yīng)的向量,融合到模型的中間狀態(tài)里
幾個關(guān)鍵設(shè)計:
詞表壓縮
標(biāo)準(zhǔn)分詞器會給「Apple」和「apple」分配不同的 ID,但它們語義上是同一個東西。Engram 先做一層歸并,把這類 token 映射到同一個規(guī)范化 ID
實測 128k 詞表壓縮了 23%
多頭哈希
不可能真的存下所有 N-gram 組合,那是天文數(shù)字。用哈希函數(shù)把 N-gram 映射到有限大小的表里,犧牲一點精度換存儲空間
上下文門控
查出來的向量是「靜態(tài)先驗」,可能和當(dāng)前上下文不匹配。比如「蘋果」在討論水果時和討論手機時含義不同
解決方案:用當(dāng)前位置的隱藏狀態(tài)(已經(jīng)通過 Attention 聚合了上下文信息)作為「裁判」,給查出來的向量打分。語義不匹配時,把這個向量的權(quán)重壓低
放在哪一層
Engram 不是每層都加。放太淺,隱藏狀態(tài)還沒積累足夠上下文,「裁判」不準(zhǔn);放太深,錯過了分擔(dān)早期層負擔(dān)的時機
實驗發(fā)現(xiàn):放在第 2 層效果最好。如果要放兩個,第 2 層和第 15 層的組合最優(yōu)
參數(shù)怎么分配
這里有個核心問題:給定固定的參數(shù)預(yù)算,多少給 MoE,多少給 Engram?
論文定義了一個分配比例 ρ
? ρ = 100%:全給 MoE,沒有 Engram
? ρ = 0%:全給 Engram,沒有 MoE 的路由專家
實驗掃了一遍,結(jié)果是 U 型曲線:
![]()
這兩個極端,都不好
全給 MoE(ρ = 100%):沒有專門的記憶模塊,模型被迫用計算來重建靜態(tài)知識
全給 Engram(ρ → 0%):失去了動態(tài)計算能力,復(fù)雜推理做不了
最優(yōu)點在 75%-80%
也就是說,把 20-25% 的稀疏參數(shù)從 MoE 轉(zhuǎn)給 Engram,效果最好
這個比例在不同的計算預(yù)算下都穩(wěn)定,有一定的普適性
效果數(shù)據(jù)
四個模型對比:
? Dense-4B:稠密模型,基線
? MoE-27B:純 MoE 架構(gòu)
? Engram-27B:把 MoE-27B 的 72 個路由專家減到 55 個,省出的參數(shù)給 5.7B 的 Engram
? Engram-40B:進一步擴大 Engram 到 18.5B
全部訓(xùn)練 262B tokens,激活參數(shù)都是 3.8B(等算力)
![]()
挑幾個關(guān)鍵數(shù)據(jù):
任務(wù)類型
具體任務(wù)
MoE-27B
Engram-27B
提升
知識
MMLU
57.4
60.4
+3.0
知識
CMMLU(中文)
57.9
61.9
+4.0
推理
BBH
50.9
55.9
+5.0
推理
ARC-Challenge
70.1
73.8
+3.7
代碼
HumanEval
37.8
40.8
+3.0
數(shù)學(xué)
MATH
28.3
30.7
+2.4
知識類任務(wù)提升在預(yù)期內(nèi),畢竟加了個「記憶」模塊
但推理類任務(wù)提升更大,這就有意思了
一個「記憶」模塊,怎么讓「推理」能力變強?
為什么推理也變強了
這是論文最有價值的部分
他們用了兩個分析工具
LogitLens:看每一層輸出的預(yù)測置信度
結(jié)果:Engram 模型在早期層就達到了高置信度,預(yù)測收斂速度明顯更快
CKA:看不同層之間的表示相似度
結(jié)果:Engram 模型第 5 層的表示,和 MoE 模型第 12 層的表示最相似
這說明什么?
Engram 等效于增加了網(wǎng)絡(luò)的有效深度
邏輯是這樣的:有了 Engram 分擔(dān)靜態(tài)知識的檢索,早期層不用再花深度做這件事。省出來的深度,可以用于更復(fù)雜的推理
Attention 的容量也被釋放了。本來要處理局部依賴(比如識別「張仲景」是一個人名)的注意力頭,現(xiàn)在可以專注于全局上下文
長上下文任務(wù)上這個效果更明顯:
![]()
任務(wù)
MoE-27B
Engram-27B
Multi-Query NIAH
84.2
97.0
Variable Tracking
77.0
89.0
Engram 到底存了什么
做了個消融實驗:把 Engram 的輸出完全屏蔽,看各類任務(wù)的性能保留多少
? 事實問答(TriviaQA):只剩 29%
? 閱讀理解(C3):保留 93%
? 推理任務(wù):居中
結(jié)論很清晰:
事實知識主要存在 Engram 里,屏蔽后崩得厲害
閱讀理解依賴上下文,答案就在文章里,Engram 幫不上忙
推理任務(wù)的提升是間接的,來自 Engram 釋放的網(wǎng)絡(luò)深度,而不是 Engram 直接提供推理能力
門控可視化 ![]()
紅色表示門控激活(采納了查表結(jié)果),顏色越深激活越強
規(guī)律很明顯:
? 多 token 實體觸發(fā)高激活:「Alexander the Great」「Milky Way」「Princess of Wales」
? 固定搭配觸發(fā)高激活:「By the way」
? 中文也能識別:「四大發(fā)明」「張仲景」「醫(yī)圣」「傷寒雜病論」
需要結(jié)合上下文理解的 token,門控會壓低
工程:offload 效率
這部分對開發(fā)者有參考價值
Engram 的查表索引是確定的。知道輸入是什么 token,就知道要查哪些行,不依賴中間計算結(jié)果
MoE 不一樣,路由決策要等隱藏狀態(tài)算出來才能做
這個區(qū)別讓 Engram 可以做預(yù)取:模型在計算前幾層的時候,同時從主機內(nèi)存異步加載 Engram 需要的數(shù)據(jù),兩邊并行
實測結(jié)果:
配置
吞吐量
Dense-4B
9,031 tok/s
Dense-4B + 100B
Engram(CPU offload)
8,858 tok/s
Dense-8B
6,315 tok/s
Dense-8B + 100B
Engram(CPU offload)
6,140 tok/s
100B 參數(shù)的 Engram 表完全放主機內(nèi)存,吞吐量下降不到 3%
N-gram 的訪問還符合 Zipf 分布,少數(shù)高頻模式占了絕大多數(shù)訪問量。可以做多級緩存:熱門的放 GPU 顯存,長尾的放主機內(nèi)存甚至 SSD
組件消融
哪些設(shè)計貢獻最大:
? 多分支集成:重要
? 上下文門控:重要
? Tokenizer 壓縮:重要
? 輕量卷積:影響不大
? 4-gram:在當(dāng)前參數(shù)預(yù)算下不如 2-gram + 3-gram 組合
Engram 放在第 2 層效果最好,越往深層放效果越差
跑起來
pip install torch numpy transformers sympy
python engram_demo_v1.pyGitHub 上的 demo 是演示版,mock 了 Attention/MoE 等標(biāo)準(zhǔn)組件,用于展示 Engram 的數(shù)據(jù)流
總結(jié)一下:
MoE 管算,Engram 管查,兩種機制處理兩類任務(wù)
代碼:https://github.com/deepseek-ai/Engram
論文:https://raw.githubusercontent.com/deepseek-ai/Engram/refs/heads/main/Engram_paper.pdf
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.