Sleeping LLM:讓 LLM 透過「睡覺」來記住事情
研究日期
2026-02-26
簡介
Sleeping LLM 是一個讓語言模型從對話中形成持久記憶的系統 — 不是透過 RAG 或資料庫,而是直接編輯模型的權重。知識存在參數裡,context window 是空的。
系統靈感來自神經科學的 互補學習系統理論(Complementary Learning Systems):清醒時快速編碼,睡眠時保護性鞏固。MEMIT 是短期記憶,LoRA 是長期記憶,Sleep 是兩者之間的轉移。
解決什麼問題?
| 問題 |
傳統方案 |
Sleeping LLM 方案 |
| LLM 沒有持久記憶 |
RAG / 外部資料庫 |
直接編輯權重 |
| Context window 有限 |
定期壓縮/摘要 |
知識在參數中 |
| 每次對話都重新開始 |
全域 context |
模型本身記得 |
核心概念
關鍵術語
| 術語 |
說明 |
| MEMIT |
Mass-Editing Memory in Transformers,一種直接編輯 MLP 權重的演算法 |
| Null-space constraints |
零空間約束,確保編輯一個記憶不會破壞其他記憶 |
| LoRA consolidation |
將 MEMIT 編輯的知識轉移到 LoRA adapter,再融合進權重 |
| Wake/Sleep 週期 |
清醒時注入記憶,睡覺時鞏固記憶 |
生物學類比
| 生物組件 |
系統實作 |
| 海馬體快速編碼 |
MEMIT 權重編輯(無約束,即時) |
| 新皮質鞏固 |
LoRA 訓練 + 融合(慢速,穩定轉移) |
| 睡眠鞏固 |
Audit + 約束刷新 + LoRA consolidation |
| 睡眠壓力 / 睏意 |
退化記憶數量超過閾值 |
| 突觸穩態 |
修剪過多編輯 + 溶解已鞏固的 MEMIT delta |
架構與原理
系統架構圖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
WAKE SLEEP (8-step maintenance + consolidation)
User ←→ Chat 1. Health Check — 測量 PPL 基線
│ 2. Curate — 提取新事實,透過 MEMIT 注入
▼ 3. Audit — 測試每個事實的 recall
Fact Extraction 4. Maintain — 刷新退化的編輯
│ 加上 null-space constraints
▼ 5. LoRA Consolidation — 訓練 LoRA
MEMIT Injection 融合進權重,per-fact gating
│ 6. MEMIT Scale-Down — 降低 MEMIT delta
│ 隨 LoRA 吸收 (1.0→0.5→0.1→0.0)
▼ 7. Validate — PPL 比較,rollback
Weights updated. 8. Report — audit/consolidation 摘要
Single forward pass.
MEMIT = short-term memory. Trigger: /sleep 指令或自動
LoRA consolidation = long-term. 「睡意信號」(退化事實超過閾值)
|
MEMIT 演算法
每個事實 (subject, relation, object) 產生一個跨目標 MLP 層的權重更新:
$$W' = W + R K^T (K K^T + \lambda C)^{-1}$$其中:
- K = key vectors
- R = distributed residual
- C = 經驗共變異數矩陣,透過 Woodbury identity 正則化
Wake 階段無約束注入 — 快速但干擾累積。Sleep 階段用 null-space constraints 刷新退化編輯 — 保證與工作記憶正交。這種不對稱創造了自然的節奏:清醒時退化,睡眠時恢復。
鞏固(Consolidation)機制
MEMIT 維護後,Sleep 訓練一個 LoRA adapter 於所有活躍事實(chat Q&A 格式),然後融合進基礎權重。每個事實有獨立的鞏固階段 (0–3):
| 階段 |
意義 |
MEMIT Scale |
| 0 |
僅 MEMIT |
1.0 |
| 1 |
LoRA 吸收中 |
0.5 |
| 2 |
LoRA 吸收中 |
0.1 |
| 3 |
LoRA 承載 |
0.0(MEMIT 已溶解) |
每次 Sleep 週期後,通過 chat recall 的事實前進一個階段;失敗的事實後退。編輯的有效 scale 是 min(fact_stages) — 保守策略,只有當編輯中的所有事實都前進時才降低 scale。一旦所有事實達到階段 3,MEMIT delta 完全溶解,LoRA-fused 權重單獨承載知識。這清除了 MEMIT 容量給新記憶,使有效終身容量無限。
主要特性
效能基準
| 模型 |
事實數 |
Recall |
PPL Drift |
硬體 |
| Llama-3.2-3B-4bit |
15 |
0.60 |
+0.3% |
MacBook Air M3, 8GB |
| Llama-3.1-8B |
14 |
1.00 (sleep 後) |
+0.5% |
2x H100 80GB |
| Llama-3.1-8B |
30 |
1.00 (sleep 後) |
+3.2% |
2x H100 80GB |
| Llama-3.1-70B-NF4 |
60 |
1.00 |
0.0% |
2x H100 80GB |
關鍵發現
- LoRA 鞏固:5/10/15/20 事實都有 100% 前進率。Chat recall 在週期 2–3 達到 1.00。
- Sleep 收斂:30 事實從 40% 初始 recall 在 4 個 sleep 週期內恢復到 100%。70B 模型快 2 倍。
- Wake 容量閾值:8B 模型在 13 個無約束編輯內維持 0.92 recall,第 14 個時崩潰到 0.57 — 這是級聯編輯干擾的劇烈相變,不是漸進衰減。
- Alignment Tax:RLHF 主動抑制 LoRA 注入的知識。3B: 47% recall。8B: 37%。70B: 0%。這個反向縮放導致放棄 wake 時直接 LoRA 訓練 — 但 LoRA 在 sleep 時鞏固有效,因為 per-fact gating 和累積融合避免了 alignment 衝突。
安裝與設定
Apple Silicon (MLX)
1
2
3
|
git clone https://github.com/vbario/sleeping-llm.git && cd sleeping-llm
pip3 install -r requirements.txt
python3 -m src.main
|
首次執行會下載模型(~1.8 GB)。需要 macOS 14+、Apple Silicon。
NVIDIA GPU (PyTorch)
1
2
3
|
git clone https://github.com/vbario/sleeping-llm.git && cd sleeping-llm
pip3 install -r requirements-torch.txt
python3 -m src.main --config experiments/configs/8b_consolidation.yaml
|
需要 CUDA 12+,8B (BF16) 需要 80GB+ VRAM,70B (NF4) 需要 2x80GB。
硬體需求
| 機器 |
RAM |
模型 |
備註 |
| MacBook Air M3 |
8 GB |
3B 4-bit |
可用。15 事實,sleep ~5 分鐘 |
| Mac Mini M4 Pro |
24 GB |
8B 4-bit |
更大容量,更快 sleep |
| Mac Studio M4 Ultra |
192 GB |
70B 4-bit |
完整容量,所有實驗 |
| 2x H100 80GB |
160 GB VRAM |
8B BF16 / 70B NF4 |
研究配置 |
指令
| 指令 |
效果 |
/sleep |
觸發完整 sleep 週期(audit → maintain → consolidate → validate) |
/nap |
快速審計近期事實(不修改模型) |
/status |
顯示 context 用量、turn 計數、MEMIT 編輯計數 |
/compact |
強制 context window 壓縮 |
/quit |
離開 |
設定檔(config.yaml)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
memit:
target_layers: [8, 9, 10, 11, 12, 13, 14, 15] # 要編輯的 MLP 層
lambda_reg: 0.1 # 共變異數正則化強度
max_active_edits: 50 # 硬上限(觸發修剪)
covariance_samples: 200 # 正則化參考樣本
v_lr: 0.5 # v* 優化學習率
v_steps: 30 # v* 優化步數
lora:
enabled: true # 啟用 sleep 時 LoRA 鞏固
num_layers: 8 # LoRA 應用層數
learning_rate: 1.0e-4 # LoRA 訓練學習率
iters_per_fact: 10 # 每事實訓練迭代
consolidation:
enabled: true # 啟用 MEMIT→LoRA 轉移
scale_schedule: [1.0, 0.5, 0.1, 0.0] # 每階段 MEMIT scale
sleep:
maintenance:
degraded_threshold: 0.5 # recall < 50% 時重新注入
max_ppl_increase: 0.15 # PPL 增加 > 15% 時 rollback
max_refresh_per_cycle: 10 # 每次 sleep 最多刷新數
health:
sleep_threshold: 0.8 # 壓力超過時自動 sleep
nap_threshold: 0.4 # 自動建議 nap
|
比較分析
Sleeping LLM vs RAG
| 面向 |
RAG |
Sleeping LLM |
| 容量 |
無限(外部儲存) |
有限(模型權重) |
| 延遲 |
需檢索 |
即時(知識在參數中) |
| 權重修改 |
無 |
直接編輯 |
| 可解釋性 |
高(可追溯來源) |
低(隱含在參數中) |
| 適用場景 |
大量靜態知識 |
個人化動態記憶 |
相關方法比較
| 方法 |
機制 |
優點 |
缺點 |
| Sleeping LLM |
MEMIT + LoRA 雙系統 |
無限終身容量 |
VRAM 限制 |
| MemoryLLM |
Transformer + latent memory pool |
自我更新 |
固定記憶池大小 |
| WISE |
終身模型編輯框架 |
可靠性/泛化/局部性平衡 |
不支持 LoRA 鞏固 |
| ROME |
單一編輯 |
精確定位 |
無法批次編輯 |
限制與注意事項
已知限制
- 僅合成事實 — 所有實驗使用 person-city 三元組。真實對話知識(觀點、時序事件、多跳)可能行為不同。
- Raw completion pathway — MEMIT 編輯透過 raw text completion 存取,不是 chat templates。LoRA 鞏固透過訓練 chat Q&A 格式來橋接這個差距。
- 單次實驗 — 沒有誤差棒或信賴區間(13/14 轉折點在各配置中可重現)。
- 無 RAG 比較 — RAG 解決不同問題,但直接比較會增強論點。
- VRAM 上限 — null-space 約束矩陣隨編輯數 O(N*K) 增長。70B/16 層配置在 2xH100 上約 30 事實/session 時 OOM。
安全考量
- 直接編輯權重可能影響模型行為
- 沒有內建的事實驗證機制
- Hallucination filter (
firewall.py) 是第一道防線,但非完美
重點整理
- Wake = MEMIT 注入:單次 forward pass,即時 recall,無約束,干擾累積
- Sleep = 維護 + 鞏固:審計記憶 → 刷新退化編輯(null-space 約束)→ LoRA 訓練 → 融合 → MEMIT 溶解
- 容量閾值:8B 模型在 ~13 編輯時有劇烈相變,不是漸進衰減
- 無限終身容量:MEMIT→LoRA 轉移清空 buffer,使有效容量無限
- 生物類比:海馬體(MEMIT)→ 新皮質(LoRA),sleep 是轉移
參考資料
官方資源
論文(作者研究軌跡)
| # |
論文 |
DOI |
| 1 |
Sleep-Wake Consolidation for Lifelong Conversational Memory in Local Language Models |
[10.5281/zenodo.18778760] |
| 2 |
The Alignment Tax on Continual Learning |
[10.5281/zenodo.18778762] |
| 3 |
Dual-System Memory Consolidation |
[10.5281/zenodo.18778764] |
| 4 |
Sleeping LLM: Two-Phase Memory Consolidation |
[10.5281/zenodo.18778766] |
| 5 |
Sleep-Wake Memory Convergence in Weight-Edited Language Models |
[10.5281/zenodo.18778768] |
相關論文