Skip to content

模型精读工作流与模板

Abstract

这篇规定:

以后 modelread 里每个模型都按同一个工作流学习、按同一个模板写文档。

1. 固定工作流

每个模型统一按 5 步学:

第 1 步:论文骨架

只回答:

  • 这篇论文要解决什么问题
  • 核心模块有哪些
  • 输入输出是什么
  • 训练目标是什么

这一阶段先不急着看所有代码细节。

第 2 步:模型主链代码

只看:

  • forward(...)
  • 主分支函数
  • 关键模块调用顺序

目标:

  • 先建立“输入 -> 模块 -> 输出”的代码骨架

这一步的文档格式固定为:

  1. 顺序图
  2. 分层树图
  3. 完整代码
  4. 中文注释版代码
  5. toy 例子
  6. shape / tensor 变化图

第 3 步:论文模块到代码对象映射

建立表格:

  • 论文里的模块名
  • 代码里的类 / 函数 / 文件
  • 对应 tensor shape

目标:

  • 让“理论对象”和“代码对象”稳定对齐

第 4 步:接到 TFB 框架

只回答:

  • 这个模型在 benchmark 里从哪开始分叉
  • adapter 给了它什么输入
  • 它输出后又怎么回到统一外壳

第 5 步:最小实验验证

只做最小验证:

  • 一批小数据 / 一次最小 benchmark
  • 检查输入输出和主链是否符合预期

2. 三层数据规模

A. 微型假数据层

用途:

  • forward(...)
  • 学 shape
  • 学模块顺序

特点:

  • 最快
  • 最适合精读模型内部

B. 一批真实框架数据层

用途:

  • 学模型怎样接入真实 TFB
  • _process(...)model.forward(...)

特点:

  • 保留真实四输入
  • 不必完整训练很久

C. 完整 benchmark 层

用途:

  • 看模型在完整外层里的位置
  • 做最小对照

特点:

  • 比较慢
  • 只在前两层清楚后再做

3. 每个模型文档的固定结构

以后每个模型都尽量写成下面这 8 段:

1. 模型定位

  • 这篇模型在 modelread 的位置
  • 为什么现在学它
  • 它属于哪类结构

2. 论文第一性

  • 它解决什么问题
  • 为什么提出这个结构

3. 论文骨架图

  • 输入
  • 核心模块
  • 输出

4. 代码主链

  • 入口文件
  • forward(...)
  • 主分支顺序
  • 完整代码
  • 注释代码
  • toy example

5. 论文 - 代码映射表

  • 论文模块
  • 代码对象
  • 文件位置
  • 关键 shape

6. 和 TFB 的接口位置

  • adapter 前后接口
  • 在 benchmark 全链里的位置
  • 参数从哪来
  • 参数控制哪个 tensor / shape

7. 调试 checkpoints

  • 应该打哪些断点
  • 每个断点看什么变量
  • 应该回答什么问题

8. 最小实验建议

  • 用哪种数据规模
  • 建议先跑什么

4. 不同模型的具体侧重点

DLinear

重点:

  • 最简单的 forecasting baseline
  • 分解与线性映射
  • 为什么复杂度低但效果强

Informer

重点:

  • DataEmbedding
  • Encoder
  • Decoder
  • ProbAttention

PatchTST

重点:

  • patch 机制
  • channel independence
  • patch embedding

iTransformer

重点:

  • time 和 variate 维度关系
  • 为什么“倒置”

Autoformer

重点:

  • 分解
  • 自相关
  • encoder / decoder 如何不同于标准 Transformer

5. 现在的执行顺序

当前你应该这样走:

  1. DLinear 收束
  2. Informer 主链
  3. PatchTST
  4. iTransformer
  5. Autoformer

然后再进:

  1. FEDformer
  2. Nonstationary
  3. TimeMixer

6. 现阶段不要做的事

不要:

  • 一次开很多模型
  • 一上来就追大实验
  • 一开始就改复杂模块
  • 一边读论文一边跳模型

7. 你现在立刻该写什么文档

现在最适合补的是:

  1. Informer.forward 主链文档
  2. Informer 参数总表
  3. Informer 最小数学例子
  4. InformerDataEmbedding / Encoder / Decoder 分文档

8. 最后压成 5 句话

  1. 每个模型都按同一工作流学,不再随意跳步骤。
  2. 先论文骨架,再代码主链,再做论文-代码映射,再接 TFB,再做最小实验。
  3. 代码文档必须把代码和 toy 例子绑定着讲,不能只列 shape。
  4. 数据规模按“小假数据 -> 一批真实数据 -> 完整 benchmark”三层推进。
  5. 现阶段最关键的模型顺序是 DLinear -> Informer -> PatchTST -> iTransformer -> Autoformer
  6. 你接下来最直接的动作,是开始写 Informer 主链文档。

*记录并在线阅读我的笔记*