TimesFM 时间序列预测完整指南:从装环境到首次预测
【免费下载链接】timesfmTimesFM (Time Series Foundation Model) is a pretrained time-series foundation model developed by Google Research for time-series forecasting.项目地址: https://gitcode.com/GitHub_Trending/ti/timesfm
TimesFM 是 Google Research 开源的时间序列预测基础模型:给它一段历史数据,它就能零样本输出未来趋势和分位数区间,不需要你从零训练。如果你要做销量、气温、流量这类时序预测,又不想搭复杂的训练流程,这个 200M 参数的模型在本地几分钟就能跑起来。
三个版本怎么选:参数与上下文长度对比
| 版本 | 参数量 | 上下文长度 | 主要差异 |
|---|---|---|---|
| TimesFM 2.5(当前默认) | 200M | 16k | 支持连续分位数预测(可选 30M 分位数头,最长 1k 预测步长),移除了 frequency 标记 |
| TimesFM 2.0 | 500M | 2048 | 旧版,代码归档在 v1/ 目录 |
| TimesFM 1.0 | 200M | 512 | 旧版,代码同样归档在 v1/ 目录 |
2.5 比 2.0 参数少了 60%,上下文长度却从 2048 拉到 16k,日常预测直接用 2.5 就行;只有在复现 1.0/2.0 的论文结果时才需要老版本,可用pip install timesfm==1.3.0安装旧包。
🚀 3 条命令装好环境,准备跑第一次预测
环境要求是 Python ≥ 3.10,用 uv 管理虚拟环境最快:
git clone https://gitcode.com/GitHub_Trending/ti/timesfm cd timesfm uv venv && source .venv/bin/activate uv pip install -e .[torch][torch]是 PyTorch 后端;想用 JAX/Flax 推理就换成[flax],需要协变量(XReg)支持再装[xreg]。torch 或 jax 本体建议按你的硬件(CPU/GPU/TPU/Apple Silicon)单独安装对应版本,装完就可以写预测代码了。
🎯 第一次预测要改哪些参数:加载、配置、预测三步走
整个流程很短:加载权重 → 用ForecastConfig声明预测边界 → 调forecast()传入数组。下面这段代码的注释解释了每个关键参数"为什么这么设":
import torch, numpy as np, timesfm torch.set_float32_matmul_precision("high") # 放宽精度限制,CPU 推理更快 model = timesfm.TimesFM_2p5_200M_torch.from_pretrained( "google/timesfm-2.5-200m-pytorch" # 2.5 版 200M 权重 ) model.compile(timesfm.ForecastConfig( max_context=1024, # 每条序列最多回看 1024 个历史点 max_horizon=256, # 一次最多预测 256 步 normalize_inputs=True, # 归一化输入,抹平量纲差异 use_continuous_quantile_head=True, # 输出连续分位数区间 force_flip_invariance=True, infer_is_positive=True, fix_quantile_crossing=True, # 防止分位数区间交叉 )) point_forecast, quantile_forecast = model.forecast( horizon=12, inputs=[np.linspace(0, 1, 100), np.sin(np.linspace(0, 20, 67))], # 两条示例序列 ) # point_forecast: (2, 12) 点预测;quantile_forecast: (2, 12, 10) 均值+第10~90分位max_context和max_horizon直接决定内存占用:历史更长就调大max_context,要往后看更久就调大max_horizon。分位数输出默认包含均值加第 10 到 90 分位共 10 列,可以直接拿来做区间预测。
📚 协变量与微调:需要时再看这两份材料
如果你的数据带辅助特征,TimesFM 支持两类协变量:静态协变量(每条序列固定的,如产品类别、基础价格)和动态协变量(每个时间点变化的,如星期几、温度、促销标记),通过 XReg 接入,完整示例在 notebooks/covariates.ipynb:
想在自有数据上微调时,仓库提供 JAX 版 notebooks/finetuning.ipynb 和 PyTorch 版 notebooks/finetuning_torch.ipynb;另外 timesfm-forecasting/examples/finetuning/ 里还有一份基于 HuggingFace Transformers + PEFT 的 LoRA 示例,适合只想调部分参数、显存有限的场景。
📊 基准测试:预测精度处在什么水平
在 ETH 长周期基准(预测步长 96/192/336)上,TimesFM 平均 WAPE 为 0.386,低于 Chronos-Large 的 0.401,且推理耗时与 Mini 版相当;扩展基准(v1/experiments/extended_benchmarks/)中它在多个数据集上也保持领先。
🧯 避坑清单:装不上、跑不动先看这 5 条
- 内存:建议至少 32GB RAM 再加载依赖,内存偏小的机器先别急着装
[xreg]。 - ARM 架构:部分依赖暂不支持 ARM,苹果芯片用户可能需要等后续更新。
- 后端别装混:
[torch]和[flax]二选一即可,XReg 依赖 JAX(jax[cuda]),按硬件装对版本。 - 老版本:1.0/2.0 的代码都在 v1/ 目录,
pip install timesfm==1.3.0可加载老权重。 - 报错先查文档:优先翻 TROUBLESHOOTING.md,常见报错有现成解法。
适合它的场景:历史数据有限、需要快速拿到零样本预测和预测区间,比如销量计划、气温分析、异常基线;不太适合需要极低延迟的高并发线上服务。如果你的领域精度要求高又不想全量微调,直接走上文的 LoRA/PEFT 路线——把 2.5 跑通之后,你的时间序列预测工具链就齐了。
【免费下载链接】timesfmTimesFM (Time Series Foundation Model) is a pretrained time-series foundation model developed by Google Research for time-series forecasting.项目地址: https://gitcode.com/GitHub_Trending/ti/timesfm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考