memory-organ-trainer
Memory Organ Module 全自动训练技能。Use when: 需要训练记忆器官模块、生成记忆训练数据、运行记忆模块评估、运行记忆增强推理演示、初始化 transformer+ 项目环境、执行睯眠整合、调试遗忘规则、管理用户记忆动力学。Triggers: 记忆器官训练、memory organ、记忆模块训练、memory training、一键训练、全流程训练、睯眠整合、遗忘规则、session状态、LambdaNet、Qwen2.5-3B、14个文件最新1: 查看分析projectmd/plan-2.0.3.md和analyzeProject
ソース情報
- リポジトリ
- luoluomashang/Memory-Organ-Module
- ソースの最終更新活動
- 2026年4月13日 12:11
- 検出された SKILL.md の言語
- 中国語
- スター
- 1
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
ファイルエクスプローラー
9 ファイルSKILL.md を表示中
SKILL.md
ソースの指示 · 読み取り専用プレビュー- name
- memory-organ-trainer
- description
- Memory Organ Module 全自动训练技能。Use when: 需要训练记忆器官模块、生成记忆训练数据、运行记忆模块评估、运行记忆增强推理演示、初始化 transformer+ 项目环境、执行睯眠整合、调试遗忘规则、管理用户记忆动力学。Triggers: 记忆器官训练、memory organ、记忆模块训练、memory training、一键训练、全流程训练、睯眠整合、遗忘规则、session状态、LambdaNet、Qwen2.5-3B、14个文件最新1: 查看分析projectmd/plan-2.0.3.md和analyzeProject
# Memory Organ Module — 自动训练技能
## 路由决策表
| 用户意图 | 执行命令 | 前置条件 |
|----------|---------|---------|
| "初始化项目" / "setup" / "检查环境" | `python scripts/check_env.py` → `python scripts/setup_project.py` | 无 |
| "生成训练数据" / "generate data" | `python scripts/generate_data.py [--num-profiles N] [--sessions-per-user M]` | 项目已初始化 |
| "开始训练" / "train" / "全阶段训练" | `python scripts/run_training.py --phase all` | 数据已生成 |
| "只训练融合" / "phase a" | `python scripts/run_training.py --phase a` | 数据已生成 |
| "只训练写入门控" / "phase b" | `python scripts/run_training.py --phase b` | Phase A checkpoint 存在 |
| "端到端微调" / "phase c" | `python scripts/run_training.py --phase c` | Phase B checkpoint 存在 |
| "评估" / "evaluate" | `python scripts/run_eval.py` | checkpoint 存在 |
| "evaluate autoregressive" / "check AR metrics" / "AR 评估" | `python scripts/run_eval.py --metric ar` | checkpoint 存在 |
| "演示" / "demo" / "对话测试" | `python scripts/run_demo.py` | checkpoint 存在 |
| "执行睡眠整合" / "sleep consolidation" | 调用 `SleepConsolidation.run()` | MemoryStore 已初始化 |
| "执行遗忘规则" / "forget gate" | 调用 `MemoryStore.apply_forget_rules()` | MemoryStore 已初始化 |
| "检查数据完整性" / "verify data" | 读取 `data/stats.json`,检查 `write_target_coverage >= 0.99` | 数据已生成 |
| "全流程" / "一键完成" | 按序执行以下所有步骤 | 无 |
## 全流程执行步骤(一键模式)
按顺序执行,每步完成后调用 `#tool:vscode_askQuestions` 确认继续:
### Step 1: 环境检查
```bash
python scripts/check_env.py
```
若出现阻断性错误(缺包、磁盘不足),先修复再继续。
### Step 2: 项目初始化
```bash
python scripts/setup_project.py
```
### Step 3: 生成训练数据
```bash
python scripts/generate_data.py --num-profiles 100 --sessions-per-user 5 --output-dir data/
```
完成后读取 `data/stats.json` 并报告统计摘要。
- 检查 `write_target_coverage >= 0.99`(若 < 0.95 应警告并重新生成)
- 确认 `write_turns` / `total_turns` 比例在 10%-20% 合理范围内
### Step 4: 执行训练
```bash
python scripts/run_training.py --config config/default_config.yaml --phase all
```
监控输出:若 loss 出现 NaN,停止并报告;若训练正常,报告最终 loss 摘要。
### Step 5: 评估(诚实评估门 — TF + AR 双指标)
```bash
python scripts/run_eval.py --checkpoint latest --metric all
python scripts/run_eval.py --checkpoint latest --metric ar
```
读取 `outputs/eval_report.json`,报告各指标。
**诚实评估规范**:
- 同时展示 TF (Teacher-Forcing) 和 AR (Autoregressive) 指标,清楚标注 `[TF]` / `[AR]`
- AR 指标是唯一真实指标,TF 指标仅作训练过程参考
- 若 AR 指标与 TF 指标偏差 > 50%,**标红警告**:"⚠️ 评估可能不可靠 — TF/AR 偏差过大"
- PASS/FAIL 门控阈值:记忆召回 > 70%,已知数据:AR ReadGate 激活阈值待降低优化
- 回归检测:与上次最优指标比较,>10% 回归则报警(历史存储于 `outputs/metric_history.json`)
**已知 AR-ReadGate 失效问题**:
v2.0.3 实测中 ReadGate 在 AR 模式激活率为 0(阈值小面积为 0.3,实际输出约 0.05~0.25)。Memory Influence KL=3.66 确认记忆确实影响 prefill 分布。BLEU/ROUGE/Token Diversity 偏低是 AR ReadGate 激活阈值面题,非模型失败。评估时请注明此背景。
### Step 6: 推理演示
```bash
python scripts/run_demo.py --non-interactive
```
报告演示通过率。
## 新增组件使用规范
### P2 — 遗忘机制
**ForgetGate 启发式规则**(MemoryStore 内置,无训练成本):
```python
# 在推理 / 睡眠整合时调用
stats = store.apply_forget_rules(
strength_threshold=0.05, # 衰减到此值以下 → 软删除
cosine_merge_threshold=0.95, # 两条记忆 cosine > 此值 → 合并保留较强者
max_age_days=30.0, # 从未被访问且超过30天 → 软删除
)
```
**LambdaNet 可学习衰减**(`src/memory/lambda_net.py`):
- 将 `LambdaNet` 实例加入 optimizer,传入 `MemoryStore.search(lambda_net=...)` 即可启用 MLP λ
- 不传入时退化为固定 `decay_lambda=1e-6`(向后兼容)
### P3 — 睡眠整合周期
```python
from src.memory.sleep_consolidation import SleepConsolidation
sleep = SleepConsolidation(store, session_interval=50)
# 每次对话结束后 tick,满 50 次自动触发
stats = sleep.tick()
# 立即强制触发
stats = sleep.run()
```
`SleepStats` 包含:`clusters_merged`、`low_utility_deleted`、`forget_rule_*` 三项计数。
### P4 — SessionState 内部记忆
- 由 `MemoryAugmentedModel` 内部自动管理,训练时无需额外操作
- `forward()` 不需要 `user_id_strings` 参数(已移除多用户隔离)
- session 结束时手动调用 `model.session_state.reset()` 清零状态
- 如需禁用(回退到纯外部记忆):`MemoryAugmentedModel(enable_session_state=False)`
- **SessionState 已纳入 checkpoint 保存/加载**,跨训练阶段状态不丢失
### Phase A/C 全局 memory bank
- Phase A(记忆融合)和 Phase C(端到端微调)使用跨 profile 全局 memory bank
- 每个 epoch 开始时随机 shuffle 并采样 `global_memory_bank_size`(默认200)条向量
- 提升检索任务难度,避免 per-batch 小 bank 导致的过拟合
- 在训练日志中查找 `[GlobalBank] N vectors from M profiles` 确认生效
- Phase B(写入门控)继续使用 per-batch 小 bank,确保精确 GT 对齐
- 配置项:`training.global_memory_bank_size`(见 `config/default_config.yaml`)
## 错误处理
| 错误现象 | 可能原因 | 解决方案 |
|---------|---------|---------|
| `ValueError: encoder_model=None 时默认不允许...` | 构建 MemoryDataset 未传入 encoder_model | 传入 `encoder_model=model.base_model` 或 `debug_mode=True`(仅调试) |
| `write_target_coverage < 0.95` | conversation_generator 生成数据有问题 | 重新生成数据,检查 should_write=True 的 turn 是否有 write_target_memory_index |
| PPL 评估中 `encoder_model=None` ValueError | evaluate.py 未传入 encoder | 已在 evaluate.py 中修复,传入 model.base_model |
| TF 指标优秀但 AR 指标极差(偏差 > 50%) | 训练-推理分布漂移 | 检查 Scheduled Sampling 是否启用;验证 prefill-once 融合;运行 `--metric ar` 确认 |
| AR Token Diversity < 0.1 | 退化为重复 token | 检查 temperature/top_p 参数;确认 repetition_penalty > 1.0 |
| **CUDA out of memory** | Qwen2.5-3B bf16 显存占用约 6 GB,评估区段各需独立进程 | 评估使用 `--metric` 单项分批运行;`BATCH_SIZE=2`;添加 `torch.no_grad()` |
| `NativeCommandError`(Windows Tee-Object) | PowerShell 管道 stderr 冲突 | 使用 `Start-Process -WindowStyle Hidden -RedirectStandardOutput log -RedirectStandardError err` |
### MemoryFusion 双路融合
`MemoryFusion.forward()` 新增 `session_state` 可选参数:
- 传入时同时融合外部记忆(cross-attention)和 session 状态(门控注入)
- 不传入时(`None`)退化为纯外部记忆模式,向后兼容 Phase A/B 训练
## 错误处理规范
- **ModuleNotFoundError**: 运行 `pip install -r requirements.txt` 重试
- **CUDA out of memory**: 自动降低 batch_size(16→8→4)重试
- **FileNotFoundError(数据文件)**: 提示用户先执行 Step 3 生成数据
- **FileNotFoundError(checkpoint)**: 提示用户先执行 Step 4 训练
- **loss = NaN**: 检查 `config.py` 中 `LR` 是否过大,建议降至 `1e-5`
- **WriteGate F1 < 30%**: 检查 `losses.py` 中 `pos_weight` 是否为 6.0(已默认修复)
- **OMP Error #137(Windows)**: 在命令前设置 `$env:OMP_NUM_THREADS="1"` 限制线程数
## 用户确认规范
每个步骤完成后,必须调用 `#tool:vscode_askQuestions` 询问用户是否继续。
在执行任何新步骤前,先从 `projectmd/newFramework.md` 读取对应该步骤的最新架构说明。
GitHubで見る