Skip to content

Level 2 pipeline 四大块

Abstract

入口:

python
log_filenames = pipeline(
    data_config,
    model_config,
    evaluation_config,
)

这一层只解释:

pipeline(...) 在最高层顺序上分成哪四大块,以及四块之间如何衔接。

1. 上一层与当前层位置

上一层是:

当前层是:

  • Level 2:只看 pipeline(...) 自己的四个高层逻辑块,不进入任何一块的内部。

当前层对应上一层中的具体位置是:

python
pipeline(data_config, model_config, evaluation_config)

2. 当前层第一性

pipeline(...) 的第一性是:

把“已经组装好的 data_config + model_config + evaluation_config”变成“已经落盘的日志文件路径列表 log_filenames”。

因此它的高层职责必须完整覆盖:

  1. 准备数据侧
  2. 准备模型侧
  3. 执行评测
  4. 收尾写日志

3. 当前命令的最小例子

在你当前命令下,这一层的典型配置语义是:

  • data_config
    • data_name_list = ["ETTh1.csv"]
  • model_config
    • 一个模型:time_series_library.DLinear
  • evaluation_config
    • 一个策略:rolling_forecast
    • save_path = debug\\ETTh1_DLinear_rolling_min_allmetrics

4. Level 2 顺序图

5. 抽象索引树

6. 职责树

6.1 2A 数据侧

职责:

  • data_config 确定要跑哪些序列
  • 创建 data_src
  • 预加载数据
  • 启动 data_server

输出:

  • data_name_list
  • data_src
  • data_server

6.2 2B 模型侧

职责:

  • model_config 构造 model_factory_list

输出:

  • model_factory_list

6.3 2C 执行侧

职责:

  • 针对每个模型工厂调用 eval_model(...)

输出:

  • result_list
    • 其中每个元素是 EvalResult

6.4 2D 收尾侧

职责:

  • 调用 collect()
  • result_df 写成日志文件
  • 生成 log_filenames

7. 输入输出接口

7.1 输入接口

  • data_config: dict
  • model_config: dict
  • evaluation_config: dict

7.2 关键中间变量

  • data_name_list
  • model_factory_list
  • result_list
  • log_file_names

7.3 输出接口

  • return log_file_names

8. 函数 / 文件关系图

9. 与代码块的一一对应

9.1 第 1 块

对应:

python
dataset_name_list = ...
data_src = ...
data_name_list = ...
data_src.load_series_list(...)
data_server = GlobalStorageDataServer(...)
data_server.start_async()

9.2 第 2 块

对应:

python
model_factory_list = get_models(model_config)

9.3 第 3 块

对应:

python
result_list = [
    eval_model(model_factory, data_name_list, evaluation_config)
    for model_factory in model_factory_list
]

9.4 第 4 块

对应:

python
for model_factory, result_itr, model_save_name in zip(...):
    for i, result_df in enumerate(result_itr.collect()):
        log_file_names.append(save_log(...))

10. 当前例子怎么落地

在你当前这条命令下:

数据侧

  • 只跑一个数据文件:ETTh1.csv

模型侧

  • 只跑一个模型工厂:DLinear

执行侧

  • result_list 长度是 1

收尾侧

  • 最终生成 1 个日志文件路径,放进 log_filenames

11. 下一层入口

下一层要 BFS 细分的是第 3 块:

python
eval_model(model_factory, data_name_list, evaluation_config)

对应:

当前主线里,Level 2 只有这一块已经继续细分:

12. 只留一句

Level 2 只看 pipeline(...) 的四个高层块:数据、模型、执行、收尾。

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