模型概述
模型特點
模型能力
使用案例
🚀 Granite-TimeSeries-TTM-R2 模型卡片
TinyTimeMixers (TTMs) 是由 IBM Research 開源的用於多變量時間序列預測的緊湊型預訓練模型。TTM 模型參數從 100 萬起,開創了時間序列預測領域 “微型” 預訓練模型的先河。介紹 TTM 的論文已被 NeurIPS 24 收錄。
在多個流行的零樣本和少樣本預測基準測試中,TTM 表現優於其他需要數十億參數的模型。TTM 是輕量級預測器,在公開可用的時間序列數據上進行預訓練,並採用了各種數據增強技術。TTM 能夠提供最先進的零樣本預測,並且只需使用 5% 的訓練數據進行微調,就能在多變量預測中具備競爭力。請注意,使用 TTM 進行零樣本、微調及推理任務可輕鬆在 1 塊 GPU 或筆記本電腦上執行。
TTM r2 包含在更大的預訓練數據集(約 7 億個樣本)上預訓練的 TTM 變體。TTM r2.1 版本將預訓練數據集規模增加到約 10 億個樣本。之前的 TTM r1 模型在約 2.5 億個樣本上進行訓練,可從 此處 獲取。一般來說,由於在更大的預訓練數據集上訓練,TTM r2 模型的性能優於 TTM r1 模型。在標準基準測試中,TTM r2 比 TTM r1 性能提升超過 15%。不過,選擇 r1 還是 r2 取決於目標數據分佈,因此用戶應同時嘗試這兩個版本,為自己的數據挑選最佳模型。
TTM r2 版本特別支持從分鐘級到小時級分辨率的點預測用例(例如 10 分鐘、15 分鐘、1 小時)。隨著 TTM r2.1 版本的發佈,我們增加了對每日和每週分辨率的支持。
鏈接
- 論文:NeurIPS 2024,ArXiV
- 代碼倉庫:https://github.com/ibm-granite/granite-tsfm
- PyPI 項目:https://pypi.org/project/granite-tsfm/
- 模型架構:https://github.com/ibm-granite/granite-tsfm/tree/main/tsfm_public/models/tinytimemixer
- 時間序列手冊:https://github.com/ibm-granite-community/granite-timeseries-cookbook
✨ 主要特性
- 輕量級高效:模型參數小,計算資源需求低,可在單 GPU 或筆記本電腦上執行零樣本、微調及推理任務。
- 高性能表現:在零樣本和少樣本預測基準測試中,優於多個流行模型。
- 靈活可擴展:支持零樣本預測和微調預測,可根據目標數據輕鬆微調以提升預測準確性。
- 多分辨率支持:TTM r2 支持分鐘級到小時級分辨率預測,r2.1 版本新增每日和每週分辨率支持。
📚 詳細文檔
模型描述
TTM 屬於 “聚焦預訓練模型” 類別,每個預訓練的 TTM 針對特定的預測設置(由上下文長度和預測長度決定)進行定製。我們沒有構建一個支持所有預測設置的大型模型,而是選擇構建更小的預訓練模型,每個模型專注於特定的預測設置,從而獲得更準確的結果。此外,這種方法確保我們的模型非常小且速度極快,便於輕鬆部署,無需大量資源。
因此,在這個模型卡片中,我們發佈了多個預訓練的 TTM,可滿足實際中許多常見的預測設置。每個預訓練模型將在這個模型卡片的不同分支中發佈。鑑於包含多種模型,我們建議使用 get_model()
工具,根據輸入的上下文長度、預測長度和其他要求自動選擇所需的模型。你也可以使用我們的入門 筆記本 直接訪問特定模型,並指定分支名稱。
模型發佈
此模型卡片的不同分支中有多個可用模型。命名方案遵循以下格式:
<上下文長度>-<預測長度>-<頻率前綴調整指示符>-<預訓練指標>-<版本號>
- 上下文長度:作為 TTM 模型輸入的歷史數據。
- 預測長度:模型預測的時間點數(即預測長度)。
- 頻率調整指示符(“ft” 或無):“ft” 表示使用頻率前綴調整。啟用時,會向模型輸入添加一個額外的嵌入向量,指示數據的頻率。如果缺失,則模型僅使用上下文窗口。
- 預訓練指標(“mae” 或無):“mae” 表示使用平均絕對誤差損失,缺失表示使用均方誤差。
- 版本號(“r2” 或 “r2.1”):表示模型版本;該版本指示用於訓練模型的數據。有關特定訓練數據集中包含的數據的更多詳細信息,請參閱下面的 “訓練數據”。
示例腳本和筆記本
以下腳本可用於上述任何 TTM 模型。請在 from_pretrained
調用中適當更新 HF 模型 URL 和分支名稱,以選擇你需要的模型。請注意,部分筆記本直接使用了 get_model()
工具來選擇模型。
- 入門指南:腳本 Colab
- 使用 IBM watsonx 入門:腳本
- 零樣本多變量預測:示例
- 微調多變量預測:
- TTM r2 版本(2024 年 10 月發佈的擴展功能):
- TTM r2.1 版本:
- GIFT-Eval 基準測試:筆記本
使用指南
- 用戶在將數據輸入模型之前,必須為每個通道獨立地對數據進行外部標準縮放(請參考
TimeSeriesPreprocessor
,這是我們用於數據縮放的數據處理工具)。 - 當前開源版本僅支持分鐘級和小時級分辨率(例如 10 分鐘、15 分鐘、1 小時)。此版本目前不支持其他較低分辨率(如月或年),因為模型需要最小上下文長度為 512 或 1024。隨著 r2.1 版本的發佈,我們現在也支持每日和每週分辨率。
- 不建議對較短長度的數據集進行上採樣或前置零以虛擬增加上下文長度,這會影響模型性能。
自動模型選擇
可以通過使用 get_model()
函數,根據上下文長度、預測長度和其他要求自動選擇模型。以下是該函數的簽名供參考:
def get_model(
model_path: str,
model_name: str = "ttm",
context_length: Optional[int] = None,
prediction_length: Optional[int] = None,
freq_prefix_tuning: bool = False,
freq: Optional[str] = None,
prefer_l1_loss: bool = False,
prefer_longer_context: bool = True,
force_return: Optional[str] = None,
return_model_key: bool = False,
**kwargs,
) -> Union[str, PreTrainedModel]:
"""TTM 模型卡片提供了一系列具有不同 `上下文長度` 和 `預測長度` 組合的模型。
此包裝器根據給定的輸入 `上下文長度` 和 `預測長度` 自動選擇合適的模型,抽象掉內部複雜性。
參數:
model_path (str): HuggingFace 模型卡片路徑或本地模型路徑(例如 ibm-granite/granite-timeseries-ttm-r2)
model_name (str, 可選): 要使用的模型名稱。當前允許的值: [ttm]。默認為 "ttm"。
context_length (int, 可選): 輸入上下文長度或歷史數據。默認為 None。
prediction_length (int, 可選): 預測範圍的長度。默認為 None。
freq_prefix_tuning (bool, 可選): 如果為 True,將優先選擇使用頻率前綴調整配置訓練的 TTM 模型。默認為 False。
freq (str, 可選): 數據的分辨率或頻率。默認為 None。允許的值根據 `DEFAULT_FREQUENCY_MAPPING`。
prefer_l1_loss (bool, 可選): 如果為 True,將優先選擇使用 L1 損失或平均絕對誤差損失訓練的模型。默認為 False。
prefer_longer_context (bool, 可選): 如果為 True,將優先選擇具有較長上下文/歷史數據的模型。默認為 True。
force_return (str, 可選): 用於強制 `get_model()` 返回一個 TTM 模型,即使提供的配置與現有的 TTM 不匹配。它會獲取最接近的 TTM。允許的值為 ["zeropad"/"rolling"/"random_init_small"/"random_init_medium"/"random_init_large"/`None`]。
"zeropad" = 返回一個預訓練的 TTM,其上下文長度高於輸入的上下文長度,因此用戶必須應用零填充才能使用返回的模型。
"rolling" = 返回一個預訓練的 TTM,其預測長度低於請求的預測長度,因此用戶必須應用滾動技術才能使用返回的模型進行所需長度的預測。在這種情況下可以使用 `RecursivePredictor` 類。
"random_init_small" = 返回一個隨機初始化的小 TTM,在進行推理之前必須進行訓練。
"random_init_medium" = 返回一個隨機初始化的中等 TTM,在進行推理之前必須進行訓練。
"random_init_large" = 返回一個隨機初始化的大 TTM,在進行推理之前必須進行訓練。
`None` = 禁用 `force_return`。如果未找到合適的模型,則引發錯誤。默認為 None。
return_model_key (bool, 可選): 如果為 True,僅返回 TTM 模型名稱,而不是實際模型。這不會下載模型,僅返回合適模型的名稱。默認為 False。
返回:
Union[str, PreTrainedModel]: 返回模型或模型名稱。
"""
基準測試
在零樣本/少樣本預測中,TTM 優於 TimesFM、Moirai、Chronos、Lag-Llama、Moment、GPT4TS、TimeLLM、LLMTime 等流行基準測試模型,同時顯著降低了計算需求。此外,TTM 是輕量級的,甚至可以在僅使用 CPU 的機器上運行,提高了可用性,並促進了在資源受限環境中的更廣泛採用。更多詳細信息,請參考我們的 論文。
- 論文中提到的 TTM-B 對應 512 上下文模型。
- 論文中提到的 TTM-E 對應 1024 上下文模型。
- 論文中提到的 TTM-A 對應 1536 上下文模型。
此版本中使用的預訓練數據集與研究論文中使用的數據集略有不同,與發表的結果相比,這可能會導致模型性能出現微小差異。更多詳細信息請參考我們的論文。基準測試腳本可在 此處 找到。
模型詳情
有關 TTM 架構和基準測試的更多詳細信息,請參考我們的 論文。
TTM 目前支持兩種模式:
- 零樣本預測:直接將預訓練模型應用於目標數據,以獲得初始預測(無需訓練)。
- 微調預測:使用目標數據的子集對預訓練模型進行微調,以進一步提高預測效果。
由於 TTM 模型非常小且速度快,實際上可以在幾分鐘內使用可用的目標數據對模型進行微調,以獲得更準確的預測。
當前版本通過通道獨立和通道混合方法支持多變量預測。在微調期間可以啟用解碼器通道混合,以捕獲時間序列變量之間的強通道相關模式,這是現有同類模型所缺乏的關鍵能力。此外,TTM 還支持外生變量注入和靜態分類數據注入。
r2.1 版本在此基礎上,提高了較短上下文長度的準確性,支持每日/每週分辨率,並使用了更大的預訓練數據集。
訓練數據
TTM r2 模型在以下數據集集合上進行訓練:
- 澳大利亞電力需求: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
- 索吉恩河流量: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
- PEMSD3、PEMSD4、PEMSD7、PEMSD8、PEMS_BAY:https://drive.google.com/drive/folders/1g5v2Gq1tkOq8XO0HDCZ9nOTtRpB6-gPe
- LOS_LOOP:https://drive.google.com/drive/folders/1g5v2Gq1tkOq8XO0HDCZ9nOTtRpB6-gPe
TTM r2.1 模型(後綴為 r2.1 的分支表示)在上述數據集基礎上,還使用了以下數據集進行訓練:
- 天氣:https://zenodo.org/records/4654822
- 新冠死亡人數:https://zenodo.org/records/4656009
- 新冠流動性:https://zenodo.org/records/4663809
- 擴展維基百科網絡流量:https://zenodo.org/records/7371038
- NN5:https://zenodo.org/records/4656117,https://zenodo.org/records/4656125
- 溫度降雨:https://zenodo.org/records/5129091
- 車輛出行:https://zenodo.org/records/5122537
- Kaggle 網絡流量:https://zenodo.org/records/4656075,https://zenodo.org/records/4656664
- 分層銷售:https://huggingface.co/datasets/Salesforce/lotsa_data/tree/main/hierarchical_sales
- 項目 Tycho:https://huggingface.co/datasets/Salesforce/lotsa_data/tree/main/project_tycho
- 次季節:https://huggingface.co/datasets/Salesforce/lotsa_data/tree/main/subseasonal
- 次季節降水:https://huggingface.co/datasets/Salesforce/lotsa_data/tree/main/subseasonal_precip
- 優步 TLC:https://huggingface.co/datasets/Salesforce/lotsa_data/tree/main/uber_tlc_daily
- 維基滾動:https://github.com/awslabs/gluonts/blob/1553651ca1fca63a16e012b8927bd9ce72b8e79e/datasets/wiki-rolling_nips.tar.gz
- CDC FluView ILINet:https://huggingface.co/datasets/Salesforce/lotsa_data/tree/main/cdc_fluview_ilinet
- CDC FluView WHO/NREVSS:https://huggingface.co/datasets/Salesforce/lotsa_data/tree/main/cdc_fluview_who_nrevss
引用
如果您打算在工作中使用我們的模型或其相關架構/方法,請引用以下論文。
BibTeX:
@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、Tomoya Sakai、Sumanta Mukherjee、Chandra Reddy 和 Jayant Kalagnanam
IBM 公共倉庫披露
此倉庫中的所有內容(包括代碼)均由 IBM 根據相關開源軟件許可證提供,IBM 沒有義務提供增強功能、更新或支持。IBM 開發人員將此代碼作為開源項目(而非 IBM 產品)開發,IBM 不對質量和安全性水平做出任何聲明,並且不會繼續維護此代碼。
📄 許可證
本項目採用 Apache-2.0 許可證。




