
这两天刷GitHub,被一个项目狠狠震撼到了——Google Research团队开源的 TimesFM,已经斩获 17.9K Star,在全球趋势榜冲到前三。

要知道,在时间序列预测这个小众但极其实用的领域,能引起这么大轰动的项目真不多见。
为什么说它是黑科技?因为传统的时间序列预测,哪怕是资深数据分析师,也得经历一套折磨人的流程:收集数据、清洗数据、调参、训练、验证……
光是跑通一个新数据集就能让人头大半天。而 TimesFM 直接把这套流程砍掉了——扔进去数据,开箱出预测结果,零训练,就这么简单。
更夸张的是,这个模型是在 1000 亿个真实世界时间点上预训练而成的,涵盖了各种场景的数据。
也就是说,不管你是预测电商销量、网站流量,还是股票价格、环境监测数据,它都能直接上手,不需要针对你的特定场景微调,效果还能打平甚至超过很多专门训练的传统模型。
TimesFM 是 Google Research 团队开发的一款预训练时间序列基础模型,专门用于时间序列预测任务。
这个项目最厉害的地方,就是把 NLP 领域的大模型思路移植到了时间序列预测上。
它采用了仅解码器(decoder-only)的Transformer架构,就像GPT系列模型一样,通过海量数据预训练学会了时间序列的通用模式,然后就能在各种任务上零样本应用。
目前最新的版本是TimesFM 2.5,相比之前的2.0版本,它做了全面升级:参数从500M降到了200M,更小更轻;支持的上下文长度从2048提升到了16k,能看更长的历史数据;还增加了可选的30M分位数头,支持连续分位数预测,最多能预测1000个步长;甚至把频率指示器都去掉了,使用起来更简单。
1、1000亿时间点的预训练,知识量爆棚
TimesFM的底气,来自于它海量的预训练数据。
Google在发布前,已经用1000亿个真实世界的时间点对模型进行了预训练,这些数据涵盖了谷歌趋势、维基百科页面浏览量、各类公开数据集以及合成数据,时间粒度包括小时、天、周、月等等。
趋势、季节性、突变、周期性……这些时间序列里的通用规律,它早就摸得门儿清了。你把自己的数据扔进去,它根本不需要重新学习,直接就能用预训练学到的知识给你预测结果。
2、零样本预测,开箱即用
这是TimesFM最受追捧的卖点,也是最能戳中从业者爽点的地方。
传统的时间序列预测模型,每换一个场景都得重新微调,甚至重新训练,流程繁琐不说,还得有一定的专业知识才能搞定。
而TimesFM实现了真正的零样本预测。就是你不需要针对自己的数据集做任何训练或微调,直接把数据扔进去,它就能给你预测结果。
3、不只是点估计,还能给置信区间
很多传统模型只能给你一个点估计,告诉你"明天销量大概是1000",但你心里肯定没底——是900到1100之间,还是500到1500之间?这个波动范围太重要了。
TimesFM 2.5版本增加了一个可选的30M分位数头,支持连续分位数预测。
也就是说,它不只告诉你"明天销量大概是1000",还能告诉你"有90%的概率在900到1100之间",甚至能给出10%到90%的各个分位数。
这对于做决策太重要了,你能清楚地知道预测的不确定性有多大。
4、已经集成到Google全家桶,场景覆盖全
TimesFM不只是一个开源项目,它已经被集成到了Google的多个产品中:
这意味着不管你是数据科学家、业务分析师,还是普通用户,都能找到适合自己的使用方式。
首先,你需要克隆仓库:
git clone https://github.com/google-research/timesfm.git
cd timesfm然后创建虚拟环境并安装依赖。Google推荐使用uv:
# 创建虚拟环境
uv venv
# 激活环境
source .venv/bin/activate
# 安装PyTorch版本
uv pip install -e .[torch]
# 或者安装Flax版本
uv pip install -e .[flax]
# 如果需要XReg(协变量支持)
uv pip install -e .[xreg]当然,你还需要根据你的操作系统和加速器(CPU、GPU、TPU或Apple Silicon)安装对应的PyTorch或JAX后端。
安装好之后,用起来就更简单了。下面是一个完整的示例:
import torch
import numpy as np
import timesfm
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,
)
)
# 准备输入数据(这里用两个 dummy 数据,你可以换成自己的)
point_forecast, quantile_forecast = model.forecast(
horizon=12,
inputs=[
np.linspace(0, 1, 100), # 线性增长的数据
np.sin(np.linspace(0, 20, 67)), # 正弦波数据
],
)
# 查看输出
print(point_forecast.shape) # (2, 12) - 两个序列,每个预测12个步长
print(quantile_forecast.shape) # (2, 12, 10) - 均值,然后10%到90%分位数就这么简单!几行代码,你就能完成时间序列预测。
TimesFM的应用场景太广了,几乎所有需要预测未来的地方都能用:
TimesFM的出现,把时间序列预测的门槛降到了前所未有的低。不管你是数据科学家、业务分析师,还是只是对预测感兴趣的普通人,都能轻松上手。
它的优势太明显了:
如果你之前因为太麻烦而没有尝试时间序列预测,现在是时候试试TimesFM了。几行代码,就能让你体验到AI预测的魅力。
GitHub地址:https://github.com/google-research/timesfm
如果本文对您有帮助,也请帮忙点个 赞👍 哈!❤️
在看你就赞赞我!