본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 15. 19:43

Time-MoE/Time-MoE

요약

Time-MoE는 Mixture-of-Experts (MoE) 아키텍처 기반의 디코더 전용 시계열 파운데이션 모델 제품군입니다. 이 모델은 자기회귀 방식으로 작동하며, 최대 4096의 컨텍스트 길이와 임의의 예측 지평을 가진 범용적인 시계열 예측이 가능합니다. 또한, Time-300B는 9개 이상의 도메인에 걸쳐 3천억 개 이상의 타임 포인트를 포함하는 대규모 오픈 액세스 시계열 데이터 컬렉션으로 제공됩니다.

핵심 포인트

  • Time-MoE는 MoE 아키텍처를 활용한 디코더 전용 시계열 파운데이션 모델입니다.
  • 최대 4096의 컨텍스트 길이와 자기회귀 방식을 통해 범용적인 시계열 예측이 가능합니다.
  • Time-300B 데이터셋은 9개 이상의 도메인에 걸쳐 3,000억 개 이상의 타임 포인트를 포함하는 대규모 오픈 액세스 컬렉션입니다.
  • 모델 사용을 위해 Time-300B 데이터셋과 Time-MoE 모델(base/large)을 Hugging Face에서 사용할 수 있습니다.
  • 최적의 성능을 위해서는 context_length와 prediction_length의 합이 4096을 초과하지 않도록 권장됩니다.

1️⃣ Time-MoE는 처음부터 학습되어 최대 24억 개(2.4 billion)의 파라미터(parameters)까지 확장된 시계열 파운데이션 모델 (time series foundation models) 연구입니다.

2️⃣ Time-300B는 9개 이상의 도메인에 걸쳐 3,000억 개(300 billion) 이상의 타임 포인트 (time points)를 포함하는 가장 큰 오픈 액세스 (open-access) 시계열 데이터 컬렉션입니다.

  • 공변량 (covariate) 지원 추가
  • 동적 특징 (dynamic features)을 활용한 예측을 위한 Time-MoE의 미세 조정 (fine-tuning) 활성화 및 시계열 분류 (time series classification) 지원

🚩 뉴스 (2025년 2월): Time-MoE가 ICLR 2025에서 Spotlight (상위 5.1%)로 채택되었습니다!

🚩 뉴스 (2024년 10월): 중국어로 된 Time-MoE 소개

🚩 뉴스 (2024년 10월): Time-300B 데이터셋을 이제 🤗 Hugging Face에서 사용할 수 있습니다.

🚩 뉴스 (2024년 10월): Time-MoE (base) 및 Time-MoE (large)를 🤗 Hugging Face에서 사용할 수 있습니다.

🚩 뉴스 (2024년 9월): Time-MoE 프리프린트 (preprint)가 arXiv에 공개되었습니다.

Time-MoE는 Mixture-of-Experts (MoE) 아키텍처를 가진 디코더 전용 (decoder-only) 시계열 파운데이션 모델 제품군으로 구성되어 있으며, 자기회귀 (auto-regressive) 방식으로 작동하도록 설계되어 임의의 예측 지평 (prediction horizons)과 최대 4096의 컨텍스트 길이 (context lengths)를 가진 범용 예측을 가능하게 합니다.

Time-300B 데이터셋은 🤗 Hugging Face에서 사용할 수 있습니다.

다음은 이 데이터셋을 사용하는 방법의 예시입니다:

import random
from time_moe.datasets.time_moe_dataset import TimeMoEDataset
ds = TimeMoEDataset('Time-300B')
...

이 코드 스니펫 (code snippet)은 Time-300B 데이터셋에서 무작위 데이터 시퀀스 (data sequence)를 로드하는 방법을 보여줍니다. 먼저, 데이터셋을 로컬 'Time-300B' 폴더에 다운로드하고, time_moe.datasets에서 TimeMoEDataset 클래스를 임포트 (import)한 다음, 클래스를 인스턴스화 (instantiate)하고, 마지막으로 무작위 인덱스를 사용하여 시퀀스를 가져옵니다.

  • Python 3.10 이상을 설치한 후, 종속성 (dependencies)을 설치하세요:

pip install -r requirements.txt

참고: Time-MoE는 transformers==4.40.1을 필요로 합니다.

  • [선택 사항이지만 권장 사항] 메모리 사용량을 줄이면서 더 빠른 학습 및 추론 (inference) 속도를 위해 flash-attn을 설치하세요.

pip install flash-attn==2.6.3

또는

pip install packaging
pip install ninja
# 더 빠른 컴파일을 위해 "64"를 사용 가능한 머신의 CPU 코어 수로 바꾸세요
...

참고 (Note): Time-MoE의 max_position_embeddings는 학습 중에 설정됩니다. 이는 Time-MoE의 최대 시퀀스 길이 (maximum sequence length)가 4096임을 의미합니다. 최적의 예측 성능 (forecasting performance)을 달성하려면, context_length와 prediction_length의 합이 4096을 초과하지 않는 것을 권장합니다.
더 긴 시퀀스 길이를 지원하려면, 원하는 더 긴 시퀀스 길이로 Time-MoE를 미세 조정 (fine-tune) 하세요.

import torch
from transformers import AutoModelForCausalLM
context_length = 12
...
  • 시퀀스가 이미 정규화 (normalized) 된 경우:
import torch
from transformers import AutoModelForCausalLM
context_length = 12
...
  • 벤치마크 데이터셋 (benchmark datasets)을 준비합니다.

[Google Drive]에서 잘 전처리된 데이터셋에 접근할 수 있으며, 다운로드한 내용을 ./dataset 아래에 배치하세요.

  • [예시] ETTh1에서 평가하기 위해 다음 명령어를 실행합니다.

python run_eval.py -d dataset/ETT-small/ETTh1.csv -p 96

Time-MoE의 미세 조정 (fine-tuning)을 시작하려면, 데이터셋이 jsonl 형식으로 변환되어 있어야 합니다. 각 줄은 딕셔너리 (dictionary) 객체로서 시계열 데이터 (time-series data)를 나타내며, sequence 필드는 시계열 관측치 (time-series observations)의 리스트를 포함합니다. 예시:

{"sequence": [1.0, 2.0, 3.0, ...]}
{"sequence": [11.0, 22.0, 33.0, ...]}

변환된 데이터를 jsonl, json, 또는 pickle 형식으로 저장할 수 있는 유연성을 제공합니다. Time-300B 데이터셋을 사용하는 경우, 추가적인 전처리 (preprocessing) 없이 진행할 수 있습니다.

참고: 데이터셋이 작은 경우, 학습 명령어에 --stride 1을 추가하여 stride를 1로 설정하는 것을 권장합니다.

CPU

CPU로 학습하려면 다음 명령어를 실행하고, <data_path>를 준비된 데이터셋의 경로로 반드시 교체하세요:

python main.py -d <data_path>

단일 노드에서 단일 또는 다중 GPU 사용 (Single Node with Single or Multiple GPUs)

단일 노드에서 단일 GPU 또는 다중 GPU를 활용하려면 다음 명령어를 사용하세요:

python torch_dist_run.py main.py -d <data_path>

다중 노드 다중 GPU (Multi-Nodes Multi-GPUs)

여러 노드에 걸쳐 학습을 진행하려면, 노드 간 통신 (inter-node communication)을 용이하게 하기 위해 추가적인 환경 설정 (environment configurations)이 필요합니다:

export MASTER_ADDR=<master_addr>
export MASTER_PORT=<master_port>
export WORLD_SIZE=<world_size>
...

Time-MoE를 처음부터 (from scratch) 학습하려면, 명령어에 --from_scratch 인자 (argument)를 포함하기만 하면 됩니다. 실행 예시는 다음과 같습니다:

python torch_dist_run.py main.py -d <data_path> --from_scratch

추가적인 명령줄 인자 (command-line arguments)와 그 사용법을 확인하려면 도움말 명령어를 호출하세요:

python main.py --help

🙋 오류를 발견하거나 제안 사항이 있다면 저희에게 알려주세요!

🌟 만약 Time-MoE 모델이 귀하의 연구에 도움이 되었다면, 이 저장소 (repository)에 Star를 눌러주시고 해당 논문을 인용해 주시기를 부탁드립니다:

@misc{shi2024timemoe,
title={Time-MoE: Billion-Scale Time Series Foundation Models with Mixture of Experts},
author={Xiaoming Shi and Shiyu Wang and Yuqi Nie and Dianqi Li and Zhou Ye and Qingsong Wen and Ming Jin},
...
  • TimeMixer++: A General Time Series Pattern Machine for Universal Predictive Analysis, in arXiv 2024. [paper] [GitHub Repo]
  • Towards Neural Scaling Laws for Time Series Foundation Models, arXiv 2024. [paper]
  • Foundation Models for Time Series Analysis: A Tutorial and Survey, in KDD2024. [paper] [Tutorial]
  • What Can Large Language Models Tell Us about Time Series Analysis, in ICML2024. [paper]
  • Self-Supervised Learning for Time Series Analysis: Taxonomy, Progress, and Prospects, in TPAMI2024. [paper] [Website]
  • Transformers in Time Series: A Survey, in IJCAI2023. [paper] [GitHub Repo]
  • A Survey on Graph Neural Networks for Time Series: Forecasting, Classification, Imputation, and Anomaly Detection, in TPAMI2024. [paper] [Website]

가치 있는 코드와 노력을 제공해 주신 다음의 GitHub 저장소들에 깊은 감사를 표합니다.

  • Time-LLM [repo]
  • TimeMixer [repo]
  • Time-Series-Library [repo]
  • 시계열 및 시공간 데이터(Spatio-Temporal Data)를 위한 대규모 (언어) 모델 및 파운데이션 모델 (Large (Language) Models and Foundation Models (LLM, LM, FM)) [repo]

이 프로젝트는 Apache-2.0 라이선스(License) 하에 배포됩니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0