Google 开源 TimesFM:1000 亿时间点预训练,扔数据就出预测零训练
这两天刷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的多个产品中:
• BigQuery ML:企业级SQL查询,可扩展性和可靠性都没得说
• Google Sheets:日常电子表格就能用,普通人也能轻松上手
• Vertex Model Garden:Docker化端点,支持Agent调用
这意味着不管你是数据科学家、业务分析师,还是普通用户,都能找到适合自己的使用方式。
快速入手
首先,你需要克隆仓库:
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的应用场景太广了,几乎所有需要预测未来的地方都能用:
🛒 电商领域
• 销量预测:预测某个商品未来几天、几周的销量,指导库存管理
• 流量预测:预测网站或APP的访问量,指导服务器扩容
• 库存优化:根据预测结果优化库存水平,减少积压和缺货
📈 金融领域
• 股票价格预测:虽然不能保证赚钱,但可以作为参考
• 交易量预测:预测交易所的交易量,指导交易策略
• 风险评估:结合置信区间,更好地评估风险
🌍 环境领域
• 气象预测:预测温度、降水等气象指标
• 空气质量预测:预测PM2.5等污染物浓度
• 能源消耗预测:预测电力、水等能源的消耗
📱 互联网领域
• 用户增长预测:预测APP的用户增长趋势
• 服务器负载预测:预测服务器的负载,指导资源调度
写在最后
TimesFM的出现,把时间序列预测的门槛降到了前所未有的低。不管你是数据科学家、业务分析师,还是只是对预测感兴趣的普通人,都能轻松上手。
它的优势太明显了:
• ✅ 1000亿时间点预训练,知识量爆棚
• ✅ 零样本预测,开箱即用,不需要训练
• ✅ 200M参数,又小又快
• ✅ 支持16k上下文,能看更长的历史
• ✅ 不只给点估计,还能给置信区间
• ✅ 完全开源,Apache 2.0协议,可商用
• ✅ 支持本地运行,数据安全
• ✅ 现成的LoRA微调示例,轻松定制
• ✅ 已经集成到Google全家桶,场景覆盖全
如果你之前因为太麻烦而没有尝试时间序列预测,现在是时候试试TimesFM了。几行代码,就能让你体验到AI预测的魅力。
GitHub地址:https://github.com/google-research/timesfm