Google Research开发的TimesFM是一款开源的预训练时间序列预测模型,采用零样本学习方式,无需训练即可预测。本文介绍了其解码器架构、安装方法、核心功能及在加密货币预测中的应用,强调其免费、本地运行的特点。
Google造了个时间序列预测模型叫TimesFM,装上就能用,数据不用离开电脑,也不用掏钱。
TimesFM采用零样本预测直接干活
零样本预测是什么意思?就是说,你拿这个模型过来,给它看你家过去几年的销售数据、网站访问量或者温度记录,它直接就能告诉你未来几天会咋样。不用像以前那样,还得自己吭哧吭哧地训练模型。
它就像个去过很多地方的老导游,你随便把他扔到一个新城市,他瞅两眼地图就能带你逛起来。这个模型看过的数据,加起来超过3800亿个时间点,比你看过的电视剧集数还多无数倍,所以它真的见过大世面。
你给它一份比特币历史价格,它立马能吐出明天甚至后天的预测值,附带一串不确定性区间。这速度堪比泡一碗方便面,你水还没烧开,它已经算完了。
TimesFM安装只需要一行命令
时代变了,朋友们。以前搞时间序列预测,得先装几十个库,配环境变量配到怀疑人生。现在呢?pip install timesfm。就这一行。
你想用PyTorch版本就加个[torch]标签,想用JAX版本就换一个。装完拉倒,不需要去Google Cloud注册账号,不需要申请什么API密钥,你的数据就老老实实待在你自己的电脑上,不会被偷走传到云端。
你甚至可以在Google Sheets里直接用它做预测,就像用个SUM函数一样简单。对于企业用户,它还能跟BigQuery ML集成,你写个SQL查询就能在数据仓库里直接做大规模预测。
TimesFM解码器架构如同文字接龙
这家伙虽然是个预测未来的模型,但它用的招数跟ChatGPT那些语言模型是亲戚。它俩都用了“解码器”这种结构,处理数字跟处理文字是一个逻辑。
ChatGPT是看了上文猜下一个字,TimesFM是看了上文猜下一个数。它把你的时间序列数据切成一块一块的,每一块32个点,然后像搭积木一样处理这些块,比一个点一个点地看要快得多。
所以当你给它上千个历史数据点,它几秒钟就能给你吐出来未来几百步的预测结果。这种速度以前得用超算才能跑,现在你的笔记本电脑就够了。
TimesFM把上下文拉长到一万六
最早的版本只能看512个历史数据点,后来升级到2048个,现在最新的TimesFM 2.5版本,直接把“记忆”拉长到了一万六。这意味着啥?意味着你给它好几年的日度数据,它全能看进去,不丢三落四。
而且它的参数从5亿降到了2亿,反而更小了,跑起来更快,对电脑内存也更友好。这就像是把一个大行李箱换成了一个小背包,装的东西反而更多了。
这么长的上下文窗口还有个好处,就是能捕捉到长周期的规律。比如零售业的年度季节性,或者气候变化的多年趋势,模型都能一眼望穿。
TimesFM预测还能给出靠谱区间
以前预测只能给个数,说“明天销量100件”,这谁心里有底啊。现在TimesFM 2.5版本,多带了一个三千万参数的分位数小脑袋,能告诉你:有80%的概率,明天销量在90到110件之间。
这就很实用了,库存备货心里就有数了,万一预测不准,也知道大概会偏多远,不至于被老板骂得太惨。分位数预测最多可以做到未来1000步,基本上覆盖了大半年的日度数据。
你可以根据自己的需求调整分位数的档位,要保守就看高分位数,要激进就看低分位数,灵活得很。
TimesFM支持外部变量微调
如果你的预测不光看历史数据,还得看天气、节假日、促销活动这些外部因素,TimesFM也能接招。它通过一个叫XReg的机制,允许你把外部变量塞进去一起算账。
要是你觉得你手头的行业数据特别特殊,跟模型见过的都不太一样,你还可以用LoRA这种轻量级的方式,微调一下模型让它更懂你。微调支持通过HuggingFace的Transformers和PEFT库搞定,不费劲。
这就像是你请了个大厨来你家做饭,他不光会做通用菜系,你给他看了你家的调料柜,他还能根据你家的口味稍微调整一下配方。
TimesFM实战演示比特币预测
假设你想看看比特币明天会不会涨。你只要把过去一段时间的币价数据,用Python的numpy数组或者pandas的DataFrame装好,往模型里一扔就行。
如果是DataFrame,记得把日期列起名叫ds,数值列起名叫y,模型就认这个。代码量大概也就十来行,比你去菜市场买个菜还要简单。
python
import timesfm
import numpy as np
# 加载最新的2.5版模型
model = timesfm.TimesFM_2p5_200M_torch.from_pretrained("google/timesfm-2.5-200m-pytorch")
# 配置一下预测参数
model.compile(
timesfm.ForecastConfig(
max_context=1024, # 最多看1024个点
max_horizon=256, # 预测未来256步
normalize_inputs=True, # 自动帮你归一化数据,提升稳定性
use_continuous_quantile_head=True, # 开启预测区间功能
infer_is_positive=True, # 如果预测销量这种不能为负的,就强制结果非负
)
)
# 搞一段模拟的历史价格数据
historical_prices = np.random.randn(200).cumsum() + 100
# 执行预测,horizon=30就是预测未来30步
point_forecast, quantile_forecast = model.forecast(
horizon=30,
inputs=[historical_prices]
)
print("未来30步的预测值:", point_forecast[0])
你跑完这段代码,屏幕上会跳出未来30天的预测数值和分位数区间。整个过程用不了一分钟,比你去交易所看K线图还快。
TimesFM在加密货币预测上有点慌
你得清醒一点。加密货币这玩意儿,它不光是看历史价格的。马斯克发个推文、政府出个监管政策,价格就能上蹿下跳。
TimesFM再厉害,它也只能看到过去的价格数字,没法提前知道你明天早上会看到什么新闻。所以在币圈,把它当个参考信号还行。
它给你一个“如果啥意外都不发生,价格大概会这样走”的基准线。但你千万别把它当算命先生,指着它告诉你明天是涨是跌,毕竟这真不是投资建议。
而且币圈的数据噪声特别大,模型给出的预测区间往往宽得吓人,这恰恰说明它诚实,知道自己看不准。要是哪个模型对币圈拍着胸脯说“我准得很”,那你反倒要小心了。
TimesFM完全开源随便用
这玩意儿是Apache-2.0许可证,完全开源,权重文件在Hugging Face上随便下载。这意味着你可以在自己的服务器上随便跑,不限次数,不限量,一分钱不用花。
Google这次确实是做了件大好事,把这么个好东西免费放了出来,让咱普通人也用得上这种前沿技术。你想想看,以前这种级别的模型,要么是闭源的商业软件,要么得自己用巨额数据去训练,现在好了,拿来就用。
你甚至可以把它嵌入到自己的应用里,做个自动化预测的小工具,或者定时跑个脚本每天早上给你发预测报告。怎么玩都行,没人收你钱。