🚀 Granite-TimeSeries-TTM-R1模型卡片
TinyTimeMixers (TTMs) 是由IBM Research开源的用于多变量时间序列预测的紧凑型预训练模型。TTM(已被NeurIPS 24接收)参数少于100万,开创了时间序列预测领域“微型”预训练模型的先河。
TTM在零样本和少样本预测方面,超越了多个需要数十亿参数的流行基准模型。TTM是轻量级预测器,在公开可用的时间序列数据上进行了各种增强的预训练。它提供了最先进的零样本预测,并且只需使用5%的训练数据进行微调,就能在多变量预测中具有竞争力。更多详情请参考我们的论文。
当前的开源版本特别支持从分钟到小时分辨率的点预测用例(例如10分钟、15分钟、1小时)。
请注意,使用TTM进行零样本、微调以及推理任务,在单GPU机器甚至笔记本电脑上都能轻松执行!
新更新:TTM - R1包含在2.5亿个公共训练样本上预训练的TTM变体。我们最近还发布了另一组TTM模型(TTM - R2),它们在更大的预训练数据集(约7亿个样本)上进行了训练,可从这里访问。一般来说,由于TTM - R2模型在更大的预训练数据集上训练,其性能优于TTM - R1模型。不过,选择R1还是R2取决于目标数据分布。因此,建议用户同时尝试R1和R2变体,并为自己的数据选择最佳模型。
✨ 主要特性
- 微型预训练:参数少于100万,开创时间序列预测“微型”预训练模型先河。
- 高性能:在零样本和少样本预测中超越多个流行基准模型。
- 轻量级:可在单GPU机器或笔记本电脑上轻松执行任务。
- 易于微调:只需5%的训练数据进行微调,就能在多变量预测中具有竞争力。
🚀 快速开始
模型获取
可以通过以下方式获取所需模型:
- 每个预训练模型会在本模型卡片的不同分支名称下发布。请使用我们的入门笔记本,并指定分支名称来访问所需模型。
- 也可以使用[get_model]工具,根据输入的上下文长度和预测长度要求自动选择所需模型。
代码示例
以下是使用TTM模型进行零样本和微调预测的代码示例:
model = TinyTimeMixerForPrediction.from_pretrained(
"https://huggingface.co/ibm/TTM", revision="main"
)
zeroshot_trainer = Trainer(
model=model,
args=zeroshot_forecast_args,
)
)
zeroshot_output = zeroshot_trainer.evaluate(dset_test)
for param in model.backbone.parameters():
param.requires_grad = False
finetune_forecast_trainer = Trainer(
model=model,
args=finetune_forecast_args,
train_dataset=dset_train,
eval_dataset=dset_val,
callbacks=[early_stopping_callback, tracking_callback],
optimizers=(optimizer, scheduler),
)
finetune_forecast_trainer.train()
fewshot_output = finetune_forecast_trainer.evaluate(dset_test)
📚 详细文档
模型描述
TTM属于“聚焦预训练模型”类别,每个预训练的TTM都针对特定的预测设置(由上下文长度和预测长度决定)进行了定制。我们没有构建一个支持所有预测设置的大型模型,而是选择构建较小的预训练模型,每个模型专注于特定的预测设置,从而获得更准确的结果。此外,这种方法确保我们的模型非常小且速度极快,便于部署,无需大量资源。
模型发布
模型能力及示例脚本
以下模型脚本可用于上述任何TTM模型。请在from_pretrained
调用中适当更新HF模型URL和分支名称,以选择所需的模型。
- 入门指南:[colab]
- 零样本多变量预测:[示例]
- 微调多变量预测:
- 新发布(2024年10月发布的扩展功能):
- 带外生/控制变量的微调与预测:[示例]
- 带静态分类特征的微调与预测:[示例:即将添加]
- 滚动预测 - 通过滚动功能扩展预测长度超过96:[示例]
- 用于微调的最优学习率建议的辅助脚本:[示例]
基准测试
TTM在零样本/少样本预测中优于TimesFM、Moirai、Chronos、Lag - Llama、Moment、GPT4TS、TimeLLM、LLMTime等流行基准模型,同时显著降低了计算要求。此外,TTM是轻量级的,甚至可以在仅使用CPU的机器上运行,提高了可用性,并促进了在资源受限环境中的更广泛采用。更多详情请参考我们的论文。论文中提到的TTM - Q对应于主分支中上传的512 - 96
模型。其他变体(TTM - B、TTM - E和TTM - A)请参考这里。
推荐使用方式
- 用户在将数据输入模型之前,必须为每个通道独立地对数据进行外部标准化缩放(请参考TSP,这是我们用于数据缩放的数据处理工具)。
- 当前的开源版本仅支持分钟和小时分辨率(例如10分钟、15分钟、1小时)。由于模型需要至少512或1024的上下文长度,此版本目前不支持其他较低分辨率(如每周或每月)。
- 不建议对较短长度的数据集启用任何上采样或前置零以虚拟增加上下文长度,这会影响模型性能。
模型详情
如需了解TTM架构和基准测试的更多详细信息,请参考我们的论文。
TTM - 1目前支持2种模式:
- 零样本预测:直接将预训练模型应用于目标数据以获得初始预测(无需训练)。
- 微调预测:使用目标数据的子集对预训练模型进行微调,以进一步改进预测。
由于TTM模型非常小且速度快,实际上可以在几分钟内使用可用的目标数据对模型进行微调,以获得更准确的预测。
当前版本支持通过通道独立和通道混合方法进行多变量预测。在微调期间可以启用解码器通道混合,以捕获时间序列变量之间的强通道相关模式,这是现有同类模型所缺乏的关键能力。
此外,TTM还支持外生变量注入和分类数据注入。
模型来源
- 仓库:https://github.com/ibm-granite/granite-tsfm/tree/main/tsfm_public/models/tinytimemixer
- 论文:https://arxiv.org/pdf/2401.03955.pdf
关于TTM的博客和文章
请参考我们的维基
🔧 技术细节
训练数据
原始的r1 TTM模型在Monash时间序列预测存储库的一系列数据集上进行了训练,使用的数据集包括:
- 澳大利亚电力需求:https://zenodo.org/records/4659727
- 澳大利亚天气:https://zenodo.org/records/4654822
- 比特币数据集:https://zenodo.org/records/5122101
- KDD Cup 2018数据集:https://zenodo.org/records/4656756
- 伦敦智能电表:https://zenodo.org/records/4656091
- Saugeen河流量:https://zenodo.org/records/4656058
- 太阳能发电:https://zenodo.org/records/4656027
- 太阳黑子:https://zenodo.org/records/4654722
- 太阳能:https://zenodo.org/records/4656144
- 美国出生人数:https://zenodo.org/records/4656049
- 风电场生产数据:https://zenodo.org/records/4654858
- 风力发电:https://zenodo.org/records/4656032
📄 许可证
本模型采用Apache - 2.0许可证。
引用
如果您打算在工作中使用我们的模型或其相关架构/方法,请引用以下论文:
@inproceedings{ekambaram2024tinytimemixersttms,
title={Tiny Time Mixers (TTMs): Fast Pre-trained Models for Enhanced Zero/Few-Shot Forecasting of Multivariate Time Series},
author={Vijay Ekambaram and Arindam Jati and Pankaj Dayama and Sumanta Mukherjee and Nam H. Nguyen and Wesley M. Gifford and Chandra Reddy and Jayant Kalagnanam},
booktitle={Advances in Neural Information Processing Systems (NeurIPS 2024)},
year={2024},
}
模型卡片作者
Vijay Ekambaram、Arindam Jati、Pankaj Dayama、Wesley M. Gifford、Sumanta Mukherjee、Chandra Reddy和Jayant Kalagnanam
IBM公共仓库披露
本仓库中的所有内容(包括代码)均由IBM根据相关开源软件许可证提供,IBM没有义务提供增强、更新或支持。IBM开发人员将此代码作为开源项目(而非IBM产品)开发,IBM不对质量和安全性做出任何声明,并且今后不会维护此代码。