Nested Learning 架构设计文档
本文档通过图文并茂的方式,详细解析 Nested Learning (HOPE) 项目的整体架构、核心组件和数据流,帮助开发者快速理解项目并进行二次开发。
1. 系统整体架构
1.1 架构概览
1.2 核心设计理念
Nested Learning (HOPE) 的核心创新在于层级化的记忆系统和多频率更新机制:
- TITAN Memory: 长期记忆模块,负责存储和检索知识
- CMS (Continual Memory System): 持续记忆系统,包含多个更新频率不同的记忆层
- LevelClock: 层级时钟,控制不同层的更新时机
- Teach Signal: 教学信号,引导模型进行有意义的更新
- Surprise Detection: 惊喜检测,过滤无意义的更新
2. HOPE Block 变体架构
2.1 四种 Block 变体
2.2 HOPEBlock 详细结构 (hope_hybrid)
2.3 HOPEAttentionBlock 结构 (hope_attention)
2.4 HOPESelfModBlock 结构 (hope_selfmod)
3. 数据流详解
3.1 训练时前向传播
3.2 Fast State 模式 (推理/测试时适应)
3.3 LevelClock 更新调度
4. 核心模块依赖关系
4.1 模块依赖图
4.2 关键类继承关系
5. CMS (Continual Memory System) 详解
5.1 CMS 多层级结构
5.2 CMSBlock 内部结构
6. LevelClock 调度机制
6.1 更新决策逻辑
6.2 层级配置示例
# 配置示例
titan_level = LevelSpec(
name="titan",
update_period=2, # 每 2 步更新一次
warmup_steps=0, # 无预热
jitter=0, # 无抖动
)
cms_levels = [
LevelSpec(
name="fast",
update_period=1, # 每步更新
warmup_steps=0,
),
LevelSpec(
name="medium",
update_period=3, # 每 3 步更新
warmup_steps=10, # 前 10 步不更新
),
LevelSpec(
name="slow",
update_period=10, # 每 10 步更新
warmup_steps=50, # 前 50 步不更新
),
]
7. 快速状态 (Fast State) 机制
7.1 标准模式 vs Fast State 模式
7.2 Fast State 数据结构
8. 配置文件结构
8.1 Hydra 配置层次
8.2 ModelConfig 关键参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
vocab_size | int | 必填 | 词汇表大小 |
dim | int | 必填 | 模型维度 |
num_layers | int | 必填 | Transformer 层数 |
heads | int | 必填 | 注意力头数 |
block_variant | str | “hope_hybrid” | 块变体类型 |
titan_level | LevelSpec | 必填 | TITAN 层级配置 |
cms_levels | Sequence[LevelSpec] | 必填 | CMS 层级列表 |
teach_scale | float | 1.0 | 教学信号缩放 |
teach_clip | float | 0.0 | 教学信号裁剪阈值 |
gradient_checkpointing | bool | False | 梯度检查点 |
surprise_threshold | float | None | None | 惊喜阈值 |
self_mod_lr | float | 1e-3 | 自修改学习率 |
self_mod_chunk_size | int | 1 | 自修改分块大小 |
9. 二次开发指南
9.1 添加新的 Block 变体
9.2 添加新的 Memory 模块
9.3 添加新的优化器
10. 训练流程总结
11. 关键文件索引
| 文件路径 | 功能 | 核心类 |
|---|---|---|
src/nested_learning/model.py | 主模型 | HOPEModel, ModelConfig |
src/nested_learning/hope/block.py | HOPE 块实现 | HOPEBlock, HOPEAttentionBlock, HOPESelfModBlock |
src/nested_learning/titan/memory.py | TITAN 记忆 | TitanMemory, TitanMemoryConfig |
src/nested_learning/titan/self_modifying.py | 自修改 Titans | SelfModifyingTitans, SelfModifyingTitansConfig |
src/nested_learning/cms.py | 持续记忆系统 | CMS, CMSBlock |
src/nested_learning/levels.py | 层级规范 | LevelSpec, LevelClock |
src/nested_learning/optim/manager.py | 层级优化器 | LevelOptimizerManager, LevelConfig |
src/nested_learning/fast_state.py | 快速状态 | ModelFastState, BlockFastState |
src/nested_learning/backbones.py | 注意力机制 | SelfAttention, AttentionConfig |
src/nested_learning/transformer.py | 基础 Transformer | TransformerBlock, FeedForward |
文档版本: 1.0
最后更新: 2024年
适用版本: nested-learning 0.1.0+

1112

被折叠的 条评论
为什么被折叠?



