🚀 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不對質量和安全性做出任何聲明,並且今後不會維護此代碼。