無限上下文,多級記憶體管理! 突破ChatGPT等大語言模型上下文限制

原文來源:AIGC開放社區

圖片來源:由無界 AI生成

目前,ChatGPT、Llama 2、文心一言等主流大語言模型,因技術架構的問題上下文輸入一直受到限制,即便是Claude 最多只支援10萬token輸入,這對於解讀上百頁報告、書籍、論文來說非常不方便。

為了解決這一難題,加州伯克利分校受操作系統的記憶體管理機制啟發,提出了MemGPT。 該模型的最大創新是模仿操作系統的多級記憶體管理機制,通過數據在不同的記憶體層級之間的傳輸,來打破大語言模型固定上下文的限定。

開源位址:

論文:

MemGPT主要包含主上下文和外部上下文兩大記憶體類型。 主上下文相當於操作系統的主記憶體,是大語言模型可以直接訪問的固定長度上下文視窗。

外部上下文則相當於磁碟存儲,保存了主上下文之外的額外資訊。 MemGPT還提供了豐富的功能調用,允許大語言模型主動管理自己的記憶體而無需人工干預。

這些功能調用可以將資訊在主上下文和外部上下文之間進行導入匯出。 大語言模型可以根據當前任務目標,自主決定何時移動上下文資訊以更好利用有限的主上下文資源。

研究人員在多個測試環境中進行了評估,結果表明,MemGPT可以有效處理遠超大語言模型上下文長度限制的文本內容,例如,MemGPT可以處理長度遠超過GPT-3.5和GPT-4上下文限制的文檔

當取回的文檔數增加時,固定上下文模型的性能受限於取回器的品質,而MemGPT可以通過調用分頁機制取回更多文檔,其問答準確率也獲得提升。

在新提出的多步嵌套關鍵詞提取任務中,MemGPT通過多次調用外部上下文,成功完成了需要跨文檔進行多跳查詢才能得出解的任務,而GPT-3.5和GPT-4的準確率在嵌套層數增加時急劇下降到0。

主上下文

MemGPT中的主上下文相當於操作系統中的“主記憶體”,是大語言模型可以直接訪問的固定長度上下文視窗。 研究人員將主上下文分為三個部分:

**系統指令:**這部分保存了MemGPT的基本控制邏輯,例如,函數調用模式等,長度固定且只讀。

**對話上下文:**這是一個先入先出的佇列,保存了最近的使用者交互歷史,只讀且會在長度超限時裁剪前段對話。

**工作上下文:**這是一個讀寫臨時存儲,大語言模型可以通過功能調用自主向其中寫入資訊。

需要注意的是,這三個部分合起來,不能超過底層大語言模型的最大上下文長度。

外部上下文

外部上下文保存了主上下文之外的額外資訊,相當於操作系統中的「磁碟存儲」。。 外部上下文需要明確的函數調用才能將資訊導入主上下文供模型訪問,包括以下兩種類型:

**回溯存儲:**保存完整的歷史事件資訊,相當於對話上下文的無壓縮版本。

歸檔存儲:通用的讀寫資料庫,可以作為主上下文的溢出空間保存額外資訊。 在對話應用中,歸檔存儲可以保存有關用戶或系統角色的事實、喜好等額外資訊。

回溯存儲允許檢索特定時間段的歷史交互。 在文件分析中,歸檔存儲可以支援更大的文檔集搜索。

自主編輯與檢索

MemGPT通過大語言模型產生的函數調用在記憶體層級之間主動移動數據,實現自主的編輯與檢索。 例如,可以自主決定何時在上下文之間移動資訊,以適應當前任務目標,無需人工參與。

創新點在於系統指令中詳細描述了記憶體體系結構和功能調用方法,指導大語言模型學習使用這些工具管理記憶體。

大語言模型可以根據反饋調整調用策略。 同時,當主上下文空間不足時,系統會提醒大語言模型及時保存重要資訊,引導其管理記憶體。

鏈式調用

在MemGPT中,各種外部事件會觸發大語言模型進行推理,這包括使用者消息、系統記憶體警告、使用者交互事件等。

功能調用可以請求獲取控制權,從而實現鏈式調用。 例如,檢索結果分頁流覽時,連續調用可以將不同頁面的數據收集到主上下文中。

而Yield調用則會暫停大語言模型,直到下一個外部事件觸發才再啟動推理。 這種基於事件的控制流協調了記憶體管理、模型推理和使用者交互之間的順暢溝通。

解析器與優化

MemGPT使用解析器驗證大語言模型生成的函數調用,檢查參數等是否正確。 調用後會將結果反饋給模型,這樣可以學習調整策略,減少錯誤。

此外,MemGPT的系統指令可以進行即時更新,以便在不同任務上給模型加入定製化的記憶體管理指導,實現持續優化。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 轉發
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate App
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)