引言
在时间序列预测领域,拥有高效、精准的模型至关重要。谷歌研究团队开发的TimesFM(Time Series Foundation Model)作为一款预训练的时间序列基础模型,为这一领域带来了新的解决方案。接下来,我们将深入了解这个备受关注的项目。
项目简介
TimesFM是谷歌研究团队推出的用于时间序列预测的预训练基础模型,相关论文发表于ICML 2024。其所有检查点可在TimesFM Hugging Face Collection中获取,还有谷歌研究博客对其进行介绍,同时也有官方谷歌产品TimesFM in BigQuery。
需要注意的是,这个开源版本并非谷歌官方支持的产品。目前最新的模型版本是TimesFM 2.5,而1.0和2.0版本的相关代码已归档在子目录“v1”,可通过安装timesfm==1.3.0版本的包来加载使用。此外,2025年10月29日更新中,TimesFM 2.5通过XReg恢复了协变量支持。
创新点与核心优势
TimesFM 2.5版本相比2.0版本有诸多创新和优势。在参数方面,它使用2亿个参数,较2.0版本的5亿参数大幅减少,更轻量化。上下文长度支持高达16k,远超2.0版本的2048,能处理更长的序列信息。
同时,该版本支持通过可选的3000万分位数头进行高达1k范围的连续分位数预测,且不再需要“频率”指示器,还新增了几个新的预测标志。这些改进使其在预测性能和灵活性上都有显著提升。
技术代码原理与部署
安装部署
- 首先克隆存储库:
gitclone https://github.com/google-research/timesfm.gitcdtimesfm- 创建虚拟环境并使用uv安装依赖:
# 创建虚拟环境uv venv# 激活环境source.venv/bin/activate# 安装带torch的可编辑模式包uv pipinstall-e .[torch]# 或带flax的uv pipinstall-e .[flax]# 或需要XReg时uv pipinstall-e .[xreg]- 可选步骤:根据操作系统和加速器(CPU、GPU、TPU或Apple Silicon)安装首选的torch/jax后端,可参考PyTorch和Jax的官方安装指南。
代码示例
使用时,可参考以下代码示例。先导入相关库,设置torch的浮点数矩阵乘法精度,然后从预训练模型加载TimesFM 2.5 200M的torch版本,通过编译配置 ForecastConfig,再调用forecast方法进行预测,得到点预测和分位数预测结果。
importtorchimportnumpyasnpimporttimesfm torch.set_float32_matmul_precision("high")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),np.sin(np.linspace(0,20,67)),],# 两个虚拟输入)point_forecast.shape# (2, 12)quantile_forecast.shape# (2, 12, 10): 均值,然后是第10到90分位数。该项目及相关内容已在AladdinEdu课题广场同步发布,欢迎前往了解更多技术实现与资源。
项目地址:AladdinEdu课题广场