給大模型加上第三種記憶格式,把寶貴的參數從死記硬背知識中解放出來!
中科院院士鄂維南領銜,上海算法創新研究院等團隊推出 Memory3,比在參數中存儲知識以及 RAG 成本都更低,同時保持比 RAG 更高的解碼速度。
在實驗中,僅有 2.4B 參數的 Memory3 模型不僅打敗了許多 7B-13B 的模型,在專業領域任務如醫學上的表現也超過了傳統的 RAG 方法,同時推理速度更快,“幻覺”問題也更少。
目前相關論文已上傳到 arXiv,并引起學術界關注。
這一方法受人腦記憶原理啟發,獨立于存儲在模型參數中的隱性知識和推理時的短期工作工作記憶,給大模型添加了顯式記憶。
具體來說,人類的記憶大致可以分為三部分:
顯式記憶:可以主動回憶的長期記憶,比如讀過的文章。獲取顯式記憶很容易,但提取時需要一定的回憶過程。
隱式記憶:無意識使用的長期記憶,比如騎自行車的技能。獲取隱式記憶需要大量重復練習,但使用時毫不費力。
外部信息:存在大腦之外的信息,如考試時的備考資料。獲取和使用都很輕松,但遇到新問題時作用有限。
可以看出,三種記憶形式在獲取和使用的效率上形成了鮮明的互補。人腦會根據知識的使用頻率,巧妙地在它們之間分配存儲位置,從而最小化整體開銷。
反觀大模型,目前主要依賴在參數中以隱式記憶的形式來存儲知識,這導致兩個問題:
知識分配效率低:無論一個知識使用得多頻繁,都一視同仁塞進參數里,導致大量冷知識占用了寶貴的參數空間。
知識提取效率低:每次使用知識,都得動用大量參數參與計算。
目前在訓練階段,團隊將大模型比作顯式記憶能力受損的患者,靠學習如何系鞋帶一樣的大量重復練習才能背下一點知識,消耗大量的數據和能量。
在推理階段,大模型又好像一個人每寫一個單詞時都要回憶起畢生所學的一切,就很不合理。
基于以上思路,團隊按照知識的預期使用頻率(橫軸)計算了讀寫成本(縱軸),陰影區域表示給定記憶格式的最小成本區域。
結果發現,把常用知識塞進模型參數里成本最低,但容量有限;不常用的知識直接檢索效率最高,但每次讀取都要重新編碼,成本高;而顯式記憶則是個平衡點,對于使用次數中等的大部分知識最劃算。
團隊進一步在論文中提記憶電路理論,在大模型語境下重新定義知識和記憶,以確定哪些知識更適合存儲為顯式記憶,以及什么樣的模型架構適合讀寫顯式記憶。
通過分析一些已知的大模型內部機制,如事實問答、搜索復制粘貼等,團隊認為大模型中的每條知識都可以表示為一個輸入-輸出關系,加上實現這個關系的內部電路(circuit)。
電路指計算圖中的一個子圖,由一些注意力頭和 MLP 神經元組成,這些電路的輸入輸出具有一定的語義關聯。大模型的知識可進一步分為兩類:
具體知識(specific knowledge):電路的輸入和輸出都具有明確的語義,如常識、常見短語等。
抽象知識(abstract knowledge):電路的輸出語義可變,如搜索、復制、粘貼,需要通過輸入推理出輸出。
接下來,作者引入可分離知識(separable knowledge)的概念:如果一個知識可以僅通過文本實現而不必內置到模型參數里,那它就是可分離的。
可模仿知識(imitable knowledge)是可分離知識的一個特例,可以直接用描述這條知識自身的文本去“教會”另一個不具備這條知識的大模型,無需通過參數來編碼。
一個核心結論是,具體知識都是可模仿的,因此也是可分離的,都可轉化為顯式記憶。論文從理論上給出了(非形式化)證明。
團隊進一步把具體知識按使用次數分成“無關緊要”、專業知識和常見短語三個等級,不同等級按照讀寫成本分別適合三種不同的記憶格式。
那么如何實現顯式記憶呢?
以注意力層的 key-value 向量作為顯式記憶的載體,在推理之前,Memory3 模型將所有引用文本轉換為顯式記憶,并將它們保存在硬盤或非易失性內存設備上。
在推理時,模型會查詢與當前上下文最相關的一些顯式記憶,將它們并入注意力機制中,與上下文的 key-value 向量一起計算注意力分數,生成下一個 token。
然而,海量文本轉化成的顯式記憶不僅需要更多的磁盤空間,而且在推理過程中還會占用 GPU 內存,從而損害 LLM 生成的吞吐量。
為此,Memory3 采取了多維度壓縮優化策略:
layer 維度:只有前半部分的注意力層(記憶層)產生和存取顯式記憶,后半部分仍然是普通的注意力層。
head 維度:每層只有少部分 head(如 1/5)負責處理顯式記憶的 key-value,其他 head 保持原樣。
token 維度:對于每個 head,只選取參考文本中最相關的少量 token(如 8 個),提取其 key-value 作為顯式記憶。
最后再進一步用向量量化(vector quantization)壓縮每個 key 和 value 向量到更短的表示。
多級壓縮的組合,使得顯式記憶的規模從 45.9TB 壓縮到 4.02TB,壓縮到一個 GPU 集群通常配備的存儲容量之內。
另外,團隊在顯式記憶的讀寫上還有一些值得注意的細節設計:
推理時為了避免不同文本片段重復檢索顯式記憶,Memory3 每隔 64 個 token 做一次檢索,中間共享檢索結果。
頻繁調用顯式記憶會產生 IO 開銷。為此,Memory3 在內存中維護了一個固定大小的緩存,存儲最近訪問過的顯式記憶。
對于參考文本,模型使用不同的輸入符號(“<s>Reference:”)將其與普通文本區分開,避免干擾文本理解。
對于顯式記憶中的不同文本片段,模型為其分配了同一區間的位置編碼,保留局部上下文。這種”平行”位置編碼避免了長文本中間部分被忽略的問題。
最終訓練出來的 Memory3 模型,在 HuggingFace 排行榜上的評測結果如下,顯式記憶將平均分數提高了 2.51%。
相比之下 Llama2-7B 和 13B 之間的分數差異為 4.91%,而 13B 模型的非嵌入參數數量接近 7B 模型的兩倍。
因此,可以說顯式記憶可以將“有效模型大小”提高了 2.51/4.91≈51.1%。如果用 Qwen-1.8B 和 4B 來做參考,計算結果相似,“有效模型大小”提高 49.4%。
在幻覺評估上,Memory3 避免了將文本壓縮到模型參數中可能會導致的信息丟失,表現的比大部分模型要好。
論文中還詳細報告了從數據到訓練、微調和對齊過程的具體設置,感興趣的可以查看原文。
論文地址
https://arxiv.org/abs/2407.01178
參考鏈接
[1]https://x.com/rohanpaul_ai/status/1809782336021537094
本文來自微信公眾號:量子位(ID:QbitAI),作者:夢晨
本文鏈接:http://www.tebozhan.com/showinfo-45-5088-0.html院士領銜推出大模型的第 3 種記憶:比參數存儲和 RAG 都便宜,2.4B 模型越級打 13B
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com