RAG新范式MemLong:用于長文本生成的記憶增強檢索 精華
傳統的注意力機制由于時間和空間復雜度的二次方增長,以及在生成過程中鍵值緩存的內存消耗不斷增加,限制了模型處理長文本的能力。相關的解決方案包括減少計算復雜度、改進記憶選擇和引入檢索增強語言建模。
檢索增強生成(RAG)和MemLong的記憶檢索流程。 (a) 當檢索到的信息長度超過模型的處理能力時,RAG甚至可能會降低生成性能(黃色)(b) MemLong利用外部檢索器來獲取歷史信息,然后將這些信息以鍵值對(K-V)的形式而不是文本形式傳遞給模型。
圖片
提出一種新方案MemLong,結合一個非可微分的檢索-記憶模塊和一個部分可訓練的解碼器語言模型,來增強長文本上下文的語言建模能力。
MemLong利用外部檢索器來檢索歷史信息,并通過細粒度、可控的檢索注意力機制,將語義級別的相關信息塊整合到模型中。這種方法不僅提高了模型處理長文本的能力,還保持了信息分布的一致性,避免了訓練過程中的分布偏移問題。
MemLong的一個示例:在底層,模型保持靜態,對整個數據塊Ci進行因果語言建模,隨后,Ci被緩存為嵌入和鍵值對(K-V)形式。最后,上層進行微調,以協調檢索偏好并整合檢索到的內容。
圖片
MemLong的核心原理包括以下幾個方面:
- 檢索-記憶模塊:MemLong通過檢索-記憶模塊來存儲過去的上下文和知識,并利用這些存儲的嵌入向量來檢索輸入模型的塊級關鍵值(K-V)對。
- 檢索注意力機制:MemLong引入了一種細粒度、可控的檢索注意力機制,允許模型在局部上下文和通過檢索獲得的塊級過去上下文之間進行注意力分配。
檢索因果注意力的說明。局部因果注意力應用于最近的上下文,而通過檢索方法獲得的塊級鍵值對(K-V)允許雙向注意力,由于它們的歷史性質,不會導致信息泄露。
圖片
- 動態記憶管理:當內存溢出時,MemLong使用計數器機制智能地更新內存,保留最有價值的信息,刪除最不相關的數據,以控制內存大小并提高檢索效率。
- 推理過程:在處理超出模型最大處理長度的輸入時,MemLong將文本存儲為記憶庫中的上下文信息,并在給定最近生成的文本塊時,使用檢索器顯式檢索過去的信息,通過索引對齊獲得額外的上下文信息。
通過這些原理,MemLong在多個長文本上下文語言建模基準測試中表現出色,證明了其在處理長文本方面的有效性和優越性。MemLong可以將單個3090 GPU上的上下文長度從4k擴展到80k。
不同上下文窗口擴展模型在PG19、Proof-pile、BookCorpus、Wikitext-103上的滑動窗口困惑度。所有實驗均在一塊3090 24GB GPU上進行。LongLLaMA-3B和MemLong-3B帶有?標記的表示在沒有內存的情況下進行評估,而帶有?標記的LongLLaMA-3B表示在無限內存的情況下進行評估。還評估了MemLong在4K/32K內存場景下的表現。"- / 6.95"表示模型在單個GPU上導致內存不足(OOM)錯誤,而在雙GPU上則產生了相應的結果。
圖片
https://arxiv.org/pdf/2408.16967
https://github.com/Bui1dMySea/MemLong
MemLong: Memory-Augmented Retrieval for Long Text Modeling本文轉載自??PaperAgent??

















