前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯10008
  • 用分区标记和哈希防止 AI 越界改文档
  • Agent 失败排查:先查验收与重试机制
  • 把 TimesFM 时序预测搬进浏览器
  • 接收外部PDF的服务应优先修补lopdf
  • TypeScript MCP迁移:SDK升级还需选对入口
  • 禁止重复片段为何会破坏模型JSON输出
  • 用普通函数搭建 Agent,再按需引入框架
  • 用图记忆串起生产故障排查线索
  • OpenAI 披露模型越权取数且隐瞒行为
  • 链接预览串图:用内容哈希修正缓存键
  • 让偶发测试稳定失败,再交给编程智能体
  • 用 Playwright 验证网页提供的智能体动作
  • 用棋力引擎约束模型,减少复盘幻觉
  • 用异步模拟定位连接池耗尽与超时
  • 把Agent提示词写成可执行的行为规范
  • 用 .NET 为小型网站搭建 MCP 检索入口
  • 网站内容喂给模型前,先做好抓取取舍
  • 用图数据库追查参考文献背后的撤稿链
  • DeepSeek 更新开放权重模型并开放搜索接口
  • 研究发现 AI 工作汇报频繁遗漏负面结果
  • DeepSeek 新检查点称 DeepSWE 达 77 分
  • 大模型接口账单怎么估才靠谱
  • 给 Claude Code 换模型的配置与代价
  • DeepSeek 更新开源模型,强化整项目生成
  • Claude 借自动评估迭代优化量子电路
  • 阶跃开放 Step 5 预览版权重,支持百万上下文
  • Android 技能库补齐编程智能体短板
  • 部署 Kandinsky 视频生成前先算吞吐
  • 生成接口重试如何避免重复扣额度
  • OpenAI dots 据报可在云端持续执行任务
  • Meta 据报开放 Muse Spark 模型权重
  • DeepSeek Flash 更新,编码能力提升且价格不变
  • DeepSeek 开放搜索 API,可用于应用检索
  • 已加载 33 / 10008
8.0
热点
AI SCORE
开源项目2026-10-18 06:59

把 TimesFM 时序预测搬进浏览器

dev.to · AI#时序预测#浏览器推理#开源
Editor brief · 编辑速览

文章介绍 Google TimesFM 的零样本时序预测能力,并提供浏览器演示、源码及 ONNX 模型文件。开发者可输入按时间排列的数据,体验无需针对该序列训练的预测及结果区间。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

这篇文章将用通俗易懂的语言介绍 Google 的 TimesFM:它是什么、采用什么架构、为什么被称为“foundation model”,以及你能用它做什么。从预测 CO₂ 浓度、油价,到估算世界大赛夺冠概率,这些都可以免费在浏览器里运行。

立即体验:webTimesFM。项目代码:GitHub 上的 vishalmysore/webTimesFM。模型文件(ONNX):Hugging Face 上的 VishalMysore/timesfm-2.5-200m-onnx-web。

TimesFM 是 Time Series Foundation Model 的缩写,是 Google Research 推出的开放 AI 模型,用于预测随时间变化的数值。给它一组按时间顺序排列的数字,比如每日销售额、每月降雨量、每小时用电量或股票价格,它就能预测接下来的数值,并给出可能结果的范围。

它的特别之处在于,你不需要训练它。TimesFM 已经从约 1000 亿个真实世界的数据点中,学会了趋势、季节性和周期的特征。即便面对从未见过的时间序列,它也能直接预测。这叫作 zero-shot forecasting,也就是零样本预测。

Abhimanyu Das、Weihao Kong、Rajat Sen 和 Yichen Zhou 在 ICML 2024 论文《A decoder-only foundation model for time-series forecasting》中介绍了这个模型。截至 2.5 版本,代码和模型权重均以 Apache-2.0 许可开源。

一句话概括:TimesFM 就像 ChatGPT,只不过它读写的是数字,而不是文字。

什么是时间序列 foundation model?

Foundation model 是一种大型 AI 模型,具备以下特点:

  • 在规模庞大、类型多样的数据集上完成一次预训练。
  • 具备通用能力,不是专为某一个任务构建。
  • 可以直接用于新问题,也就是 zero-shot。
  • 可以适配具体需求:如果需要,还能进一步微调。

GPT、Gemini 和 Claude 是面向文本的 foundation model。TimesFM 则是面向时间序列的 foundation model,同类模型还包括 Amazon 的 Chronos、Salesforce 的 Moirai,以及 Lag-Llama 和 Nixtla 的 TimeGPT。

TimesFM 与传统预测方法(ARIMA、Prophet)

核心思路:把 GPT 的架构用在数字上

TimesFM 采用 decoder-only Transformer,与 GPT、Gemini 和 Llama 属于同一类神经网络架构,源自 Google 2017 年的论文《Attention Is All You Need》。Google 做出的关键改动,是重新定义什么算一个“token”:

模型接收的是一段段数据 patch,而不是单个数值。PatchTST 也采用了类似思路,这样可以降低读取长历史序列的成本。每次一次性预测包含 128 个时间步的输出 patch,则让预测既快又稳定。

以下数值来自模型公开的配置:

Your numbers ──► split into patches of 32 ──► normalise each patch (mean and spread)
                                                │
                                                ▼
          Input block: a small residual neural network turns each patch into a 1,280-number token
                                                │
                                                ▼
          20 transformer layers × 16 attention heads
            • each patch attends only to earlier patches (decoder-only, causal)
            • rotary position embeddings (knows the order)
            • RMS normalisation and QK-norm (stable training)
                                                │
                                                ▼
          Output block ──► next 128 steps × [mean, 10th, 20th … 90th percentile]

如果要预测的时间跨度超过 128 个时间步,模型就会把自己的预测结果重新作为输入,继续预测,就像聊天机器人一个词接一个词地生成文本。

TimesFM 用了哪些训练数据?

根据原始论文,预训练数据包括:

  • Google Trends:按小时、天、周、月统计的搜索热度时间序列。
  • Wikipedia 页面浏览量:数百万篇文章的每日访问量。
  • 合成数据:由计算机生成,具有已知趋势、季节性和模式的时间序列。
  • 公开数据集:电力、交通、天气、零售和经济领域的时间序列。

正是这种多样性,让同一个模型能够预测二氧化碳浓度、太阳黑子、商店销售额和油价。

软件:Google 使用 JAX 训练 TimesFM,首个版本使用了 Google 的 PaxML 框架。对于 2.5 版本,Google 同时发布了 Flax(JAX)和 PyTorch 实现。

硬件:Google 的 TPU(Tensor Processing Unit),也就是 Google 自研的 AI 芯片。

权重:以 safetensors 文件的形式发布在 Hugging Face 上,2.5 版本的文件大小为 925 MB。

TimesFM 的版本:1.0、2.0、2.5 和 3.0

这个项目为什么使用 TimesFM 2.5?因为它足够小,可以下载到浏览器中;最多能读取 16k 个历史数据点;采用 Apache-2.0 许可的权重可以自由使用,包括商业用途。

我们做了什么:让 TimesFM 在浏览器里运行

webTimesFM 让 Google 的 TimesFM 2.5 完全在网页内部运行。不需要服务器,不需要 Python,也不需要注册,你的数据始终留在自己的电脑上。

Google's PyTorch weights (safetensors, 925 MB)
   └─► converted to ONNX            (portable model format)
         └─► quantised to 8-bit (261 MB) or 4-bit (146 MB)
               └─► ONNX Runtime Web (runs AI models in the browser)
                     └─► WebGPU (your graphics card) or WASM (your CPU)
                           └─► timesfm.js + index.html on GitHub Pages

速度:在笔记本电脑的 GPU 上,完成一次 128 个时间步的预测大约需要 50–300 毫秒。

两种模型大小:8-bit 版本给出的结果与 Google 原始模型几乎相同。4-bit 版本下载量更小,但在较短的时间序列上可能出现偏差。

如何证明它运行的是真正的模型:点击 Run self-test vs PyTorch 按钮,就能在你的电脑上,将浏览器的预测结果与 Google 官方 Python 代码生成的结果进行比较。

TimesFM 擅长什么,又会在哪里失手?

网站上的每个示例都有一个 Hold back 选项。它会隐藏最近一段数据,让模型预测这部分内容,再把预测结果与最简单的猜测——“保持不变”——进行比较并评分。

擅长的场景:规律性模式

Mauna Loa 的 CO₂ 浓度:持续上升的趋势,叠加每年重复的周期。TimesFM 对未来五年的预测几乎完全准确,比“保持不变”好 95%。

太阳黑子:大约 11 年一个太阳活动周期。读取 85 年的历史数据后,TimesFM 提前十年预测出了下一轮周期的上升和峰值。

吃力的场景:数据之外的突发冲击

全球极端贫困:TimesFM 看到了截至 2018 年持续下降的趋势,并预期这一趋势会继续。它无法预知 COVID-19 会在 2020 年让进展停滞。

可以记住这样一条经验:TimesFM 非常擅长识别模式,包括趋势、季节性和周期;但疫情、战争、政策变化等事件,只有反映到数字里之后,它才能看到。对于价格,“保持不变”是一个很难击败的基准;不确定性区间才是最有用的输出。

预测时事:世界大赛、石油和 Bitcoin

Current affairs 标签页把 TimesFM 用到了本周新闻涉及的数据上,数据由 GitHub Action 每天自动刷新。

世界大赛夺冠概率的计算分为三步:

  1. 根据本赛季每一场 MLB 比赛,计算球队的 Elo 实力评分。
  2. 用 TimesFM 预测每支球队的实力,并给出不确定性区间。
  3. 从真实的系列赛比分出发,在浏览器里模拟 100,000 次季后赛。

2026 年 10 月 17 日,Brewers 横扫 Dodgers 后,模型给出的 Milwaukee 世界大赛夺冠概率约为 71%。TimesFM 的预测区间只会让这个概率略有变化。真正起主要作用的是系列赛比分和整个赛季的比赛结果,页面也明确说明了这一点。

对于石油和 Bitcoin,页面会给出未来 30 天的预测及不确定性区间,并解释为什么价格如此难以预测。

加入新闻:把情绪当作预警灯

TimesFM 只读取数字,因此我们用了另一个小得多的模型来阅读新闻标题。每天,每个主题,包括石油、Bitcoin 和每支季后赛球队,最多会收集 100 条 Google News 标题,再用轻量级情绪模型 VADER 评分。最后取平均值,得到 −10 到 +10 之间的每日新闻情绪分数。

Oil card with today's news tone and headlines

情绪不等于价格方向。“战争升级”听起来很负面,却会推高油价。因此,新闻不会改变预测结果,而是充当预警灯:

  • ⚠ Alert:当最近一天的情绪变化幅度超过平时日间波动的两倍时,触发警报。
  • 新闻风暴区间:此时,预测图会增加一段紫色区间,范围根据该价格在过去最剧烈波动时期的变动幅度确定。

在不使用事后信息、回放 2026 年 8 月至 10 月的数据时,五次石油新闻警报中,有三次出现在 Brent 原油大幅波动之前,随后涨幅分别为 +7%、+10% 和 +18%;另有一次大涨未被捕捉到。即便是新闻风暴区间,也不足以覆盖战争引发的价格飙升。新闻可以告诉你什么时候该提高警惕,却不一定能告诉你波动会有多大。

如何在自己的网页中使用 TimesFM

把 timesfm.js 复制到网页所在目录,然后加入以下代码:

<script type="module">
import * as ort from "https://cdn.jsdelivr.net/npm/onnxruntime-web@1.29.0/dist/ort.webgpu.min.mjs";
import { TimesFM } from "./timesfm.js";
ort.env.wasm.wasmPaths = "https://cdn.jsdelivr.net/npm/onnxruntime-web@1.29.0/dist/";

const model = await TimesFM.load(ort,
  "https://huggingface.co/VishalMysore/timesfm-2.5-200m-onnx-web/resolve/main/timesfm25_q8.onnx",
  navigator.gpu ? "webgpu" : "wasm");

const history = [/* your numbers, oldest first */];
const { point, quantiles } = await model.forecast(history, 128);
// point: median forecast; quantiles[t] = [mean, q10, q20, ..., q90]
</script>

不写代码也能用。打开网站的 Tutorial 标签页,里面会演示如何粘贴 Excel 或 Google Sheets 中的一列数据、上传 CSV、选择上下文长度和预测跨度,以及用 Hold back 检查准确性。

如果使用 Python,可以查看 Google 官方 timesfm 仓库中的软件包和示例。

打开 webTimesFM 网站,点击 Load model,完成一次性的 261 MB 下载,再选择一个示例,点击 Forecast。所有计算都在你自己的电脑上完成。

在使用本网站或本文中的预测结果之前,请先阅读以下说明。

与 Google 无关联

TimesFM 由 Google Research 创建,相关成果包括论文、代码和 TimesFM 2.5 权重。“Google”和“TimesFM”是 Google LLC 的名称及商标。

webTimesFM 是独立、非官方的社区项目。它并非由 Google 制作、赞助、审核或认可,这里的任何内容都不代表 Google 的立场。

关于浏览器中的模型

这里运行的模型由 Google 的 TimesFM 2.5 权重转换为 ONNX,并压缩为 8-bit 和 4-bit。权重数值完全来自 Google 发布的版本,没有重新训练或微调。

由于经过压缩,并且在浏览器中重新实现了预处理和后处理,预测结果可能与 Google 官方代码略有不同。4-bit 模型的差异更大,尤其是在较短的时间序列上。可以点击 Run self-test vs PyTorch 按钮,在自己的电脑上检查。

TimesFM 2.5 的代码和权重采用 Apache-2.0 许可,按“原样”提供,不附带任何形式的担保或条件。本次转换所做的修改列在模型卡中。TimesFM 3.0 采用单独的非商业许可,本项目未使用或包含该版本。

不构成金融、投资或博彩建议

石油、Bitcoin 及其他价格预测仅用于教学演示,不是在建议你买入、卖出或持有任何资产。价格的表现很像随机游走,在我们自己的测试中,模型与简单的“保持不变”猜测大致打平。

世界大赛夺冠概率只是对一种预测方法的演示,不是投注建议。它没有考虑先发投手、伤病,以及许多其他重要因素。

预测可能出错,而且经常出错。过去的准确性不保证未来的表现。不要根据本网站做出金融、博彩、商业、医疗或政策决策,应咨询具备相应资质的专业人士。

关于数据和新闻信号

数据来自第三方公开来源:MLB Stats API、FRED(圣路易斯联邦储备银行)、IMF、World Bank、美国劳工统计局、NOAA、SILSO / 比利时皇家天文台、Johns Hopkins CSSE 和 Google News。各来源都有自己的使用条款,这里仅用于非商业的教育用途。

数据可能存在延迟、修订或缺失。例如,官方油价数据比市场大约滞后一周。数据每天自动刷新一次,没有人工核查,也不保证准确。

新闻标题归各自的发布者所有,页面提供链接,不会完整复制新闻内容。新闻情绪由简单的情绪模型 VADER 自动评分。它可能误读讽刺、上下文或包含复杂信息的报道,评分也不代表对任何球队、公司或事件的编辑判断。

球队和联盟名称是各自所有者的商标。本项目与 Major League Baseball 或任何球队均无关联,也未获得其认可。

预测完全在你的浏览器中运行。你粘贴或上传的数字不会被本网站发送到任何服务器。

浏览器确实会从第三方下载文件:模型来自 Hugging Face,ONNX Runtime 来自 jsDelivr CDN。这些服务可能像其他网站一样记录请求。

这是一个用于学习和研究的免费开源演示项目,按原样提供,不附带任何形式的担保。作者不对使用本项目造成的任何损失或损害负责。对于重要数字,请始终向原始来源核实。

如果还想采取进一步措施,可以考虑屏蔽此人和/或举报滥用行为。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
Agent 失败排查:先查验收与重试机制
下一篇
接收外部PDF的服务应优先修补lopdf