0-chronos-etth-demo.ipynb 代码说明这份 notebook 做的事情其实很简单:
ETTh1.csvOT 列chronos-t5-tiny如果你把它和前面 4/2-prog/0-qwen3-vl-demo.ipynb 对照着看,会发现:
也就是说,虽然任务不同,但本质上都是:
这份 notebook 可以分成 7 步:
OT 列这一格只是告诉你:
amazon/chronos-t5-smallETTh1它不执行代码,但它很重要,因为它定义了 notebook 的任务边界:
不是训练模型,而是调用现成模型做 zero-shot forecasting。
这里会导入:
Pathurllib.requestmatplotlibnumpypandastorchChronosPipeline每个包的角色分别是:
Path 处理本地路径urllib.request 下载 ETTh1.csvmatplotlib 画预测图numpy 算分位数pandas 读 CSV 和切列torch 把历史序列变成 tensorChronosPipeline 调用 Chronos 模型的核心入口这一格会先设定:
csv_path = Path("data/ETTh1.csv")这里最重要的工程点是:
这里会用:
df = pd.read_csv(csv_path)
df.head()作用是:
这一步很重要,因为 ETTh1 不只有一个变量。
我们后面只是先选其中一列:
OT这里会做三件事:
OTcontext_length = 512prediction_length = 96然后把序列切成:
historyfuture也就是:
这里最该理解的是:
关键代码会像这样:
pipeline = ChronosPipeline.from_pretrained(
"models/chronos-t5-tiny",
device_map=device,
torch_dtype=dtype,
)逐项解释:
ChronosPipeline.from_pretrained(...) 从 Hugging Face 拉取一个已经训练好的 Chronos 模型"models/chronos-t5-tiny" 当前目录下的本地模型路径device_map=device 告诉模型放到哪里运行,通常是 cuda 或 cpudtype=dtype 指定张量精度这里和 3-1 里加载本地 Qwen 或本地 tiny-gpt2 的逻辑非常像:
关键调用会像这样:
forecast = pipeline.predict(
context,
prediction_length,
num_samples=20,
)逐项解释:
context 输入给模型的历史窗口prediction_length 未来要预测多少步num_samples=20 不只采样一次,而是采样多条可能未来轨迹为什么要多条样本?
因为 Chronos 想做的不是:
而是:
这也是为什么后面能算:
0.1 / 0.5 / 0.9 分位数最后会把:
画在同一张图上。
这张图里最值得学生看懂的是:
如果红线和黑色虚线差得很远,不一定说明模型“完全没用”,也可能说明: