我最近一直在思考持續學習的問題,特別是它與長期運行的代理有關(並且進行了一些與 MLX 的小實驗)。 當前的提示壓縮與遞歸子代理的結合實際上非常有效。看起來我們可以在這方面走得很遠。(提示壓縮 = 當上下文窗口接近滿時,模型生成一個較短的摘要,然後從摘要開始重新生成。遞歸子代理 = 將任務分解為較小的任務,以應對有限的上下文窗口) 遞歸子代理可能永遠都是有用的。但提示壓縮似乎有點低效(儘管非常有效)的技巧。 我知道還有兩個其他替代方案:1. 在線微調和 2. 基於記憶的技術。 在線微調:在模型在部署期間遇到的數據上訓練一些 LoRA 適配器。一般來說,我對此不太樂觀。除了為每個用例/用戶部署自定義模型/適配器的工程挑戰外,還有一些根本性問題: - 在線微調本質上是不穩定的。如果你在目標領域的數據上進行訓練,可能會災難性地破壞你不針對的能力。解決這個問題的一種方法是保持一個混合數據集,包含新舊數據。但這會迅速變得相當複雜。 - 在線微調的數據究竟是什麼樣的?你是否根據目標領域生成 Q/A 對來訓練模型?你還面臨著在有限容量下優先考慮數據混合中信息的問題。 基於記憶的技術:基本上是一種保持有用記憶並丟棄不需要的記憶的策略。這更像是人類保留信息的方式:“用或失去”。你只需要幾樣東西來使這個工作: - 一個驅逐/保留政策。類似於“如果在過去的 10k 個標記中至少被訪問過一次,就保留記憶”。 - 該政策需要能夠高效計算 - 一個地方讓模型存儲和訪問長期記憶。也許一個稀疏訪問的 KV 緩存就足夠了。但為了高效訪問大量記憶,層次數據結構可能會更好。