TimesFM:Google Research 推出的时间序列基础模型
原标题:google-research/timesfm
Python★ 21,571 stars+84 今日
速览
TimesFM 是由 Google Research 开发并预训练的时间序列基础模型,专为时间序列预测任务设计。它支持零样本(zero-shot)预测,无需针对特定数据集进行微调即可在多种场景下实现高精度预测。
AI 深度解读
这是什么
TimesFM (Time Series Foundation Model) 是由 Google Research 开发的一款预训练时间序列基础模型。它旨在为时间序列预测任务提供一个通用的、高性能的解决方案。该项目于 ICML 2024 发表了相关论文《A decoder-only foundation model for time-series forecasting》,标志着时间序列分析从传统统计方法向深度学习基础模型范式的重要转变。
目前最新版本为 TimesFM 2.5,这是一个开源版本,并非 Google 官方支持的产品(Officially Supported Product),但其代码和模型权重已公开,允许社区进行二次开发和部署。
解决的问题
传统时间序列预测方法(如 ARIMA、Prophet 或早期的 LSTM/Transformer 定制模型)通常面临以下痛点:
- 泛化能力弱:大多数模型需要在特定数据集上进行从头训练或微调,难以直接迁移到未见过的领域或分布不同的数据上。
- 工程成本高:针对每个新场景调整特征工程、模型架构和超参数需要大量专业知识和计算资源。
- 上下文长度限制:早期模型难以处理长序列依赖,限制了其在长期预测或高频数据中的应用。
TimesFM 通过“预训练-微调”或“零样本/少样本”推理的方式,解决上述问题。它在一个包含数十亿数据点的大规模时间序列数据集上进行了预训练,从而学习到通用的时间序列模式(如季节性、趋势、突变等),使得用户可以直接利用预训练模型进行预测,或仅需少量数据即可高效微调。
核心功能
- 多后端支持:支持 PyTorch (
torch) 和 JAX/Flax (flax) 两种后端,用户可根据硬件环境(CPU, GPU, TPU, Apple Silicon)选择最优推理引擎。 - 长上下文处理:TimesFM 2.5 支持高达 16k 的上下文长度(Context Length),相比 2.0 版本的 2048 大幅提升,能够捕捉更长期的历史依赖关系。
- 连续分位数预测:通过可选的 30M 参数分位数头(Quantile Head),支持最多 1k 步长的连续分位数预测,提供不确定性估计(如 10th 到 90th 分位数),而不仅仅是点预测。
- 协变量支持 (XReg):2.5 版本重新引入了通过 XReg 支持的协变量功能,允许模型结合外部特征(如促销、天气、节假日等)进行预测,提升了在实际业务场景中的适用性。
- 模型压缩与优化:2.5 版本将参数量从 500M 降低至 200M,在保持甚至提升性能的同时,显著降低了推理成本和内存占用。
- 微调支持:提供了基于 HuggingFace Transformers + PEFT (LoRA) 的微调示例,方便用户利用自有数据对模型进行领域适配。
亮点 / 与同类相比
- 架构革新:采用纯 Decoder-only 架构(类似 LLM),这在时间序列领域是较为新颖的设计,使其能够像处理文本一样处理时间序列数据,具备强大的上下文理解能力。
- 性能与效率的平衡:
- 参数更少:TimesFM 2.5 (200M) 相比 2.0 (500M) 参数减少 60%,但支持更长的上下文和更复杂的预测任务。
- 速度提升:Flax 版本的引入进一步加快了推理速度。
- 去频率指示器:2.5 版本移除了频率指示器(frequency indicator),简化了输入预处理流程,增强了模型的鲁棒性。
- 企业级集成潜力:虽然开源版非官方产品,但 TimesFM 已集成在 Google 1P 产品中,如 BigQuery ML(通过 SQL 进行大规模预测)、Google Sheets 和 Vertex Model Garden,证明了其在生产环境中的可行性和稳定性。
- 社区活跃度:GitHub 项目获得 21k+ Stars,社区贡献了单元测试、Agent Skill 支持(支持 AI Agent 调用)以及多种修复,生态活跃。
适合谁用 / 上手
适合人群:
- 数据科学家/ML 工程师:希望利用基础模型(Foundation Models)简化时间序列预测流水线,减少从零训练模型的需求。
- 需要快速原型开发的企业:希望快速验证时间序列预测方案,利用预训练模型进行零样本或少样本推理。
- 对长序列和不确定性估计有需求的用户:需要处理长历史数据并获取预测置信区间的场景(如供应链、金融、能源)。
上手指南:
-
环境准备: 推荐使用
uv创建虚拟环境并安装依赖,或直接使用 pip。# 安装 PyTorch 版本 pip install timesfm[torch] # 或安装 Flax 版本 pip install timesfm[flax] # 如果需要协变量支持 pip install timesfm[xreg] -
代码示例 (PyTorch):
import torch import numpy as np import timesfm # 设置高精度矩阵乘法 torch.set_float32_matmul_precision("high") # 加载 TimesFM 2.5 模型 (200M 参数) model = timesfm.TimesFM_2p5_200M_torch.from_pretrained("google/timesfm-2.5-200m-pytorch") # 配置预测参数 model.compile( timesfm.ForecastConfig( max_context=1024, # 最大上下文长度 max_horizon=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), # 示例输入 1 np.sin(np.linspace(0, 20, 67)), # 示例输入 2 ], ) # 查看结果形状 print(point_forecast.shape) # (2, 12): 2 个序列,每个预测 12 步 print(quantile_forecast.shape) # (2, 12, 10): 包含均值及 10 个分位数 -
进阶使用:
- 微调:参考
timesfm-forecasting/examples/finetuning/目录,使用 LoRA 技术结合自有数据进行微调。 - 协变量预测:安装
xreg依赖,参考相关文档利用外部特征提升预测精度。 - Agent 集成:利用社区提供的
TimesFM SKILL.md,将模型集成到 AI Agent 工作流中。
- 微调:参考
查看原文 →github.com
