microsoft/TimeCraft

Official code for TimeCraft: A Time Series Generation Framework for Real-World Applications

📚 TimeCraft 는 무엇인가요?

TimeCraft 는 확산 모델 기반의 합성 시계열 생성을 위한 Microsoft Research 의 오픈소스 프레임워크입니다. 실제 시계열 데이터를 다룰 때 자주 발생하는 세 가지 실용적 문제를 해결합니다:

  1. 크로스도메인 일반화 – 학습된 잠재 프로토타입 사전과 경량 프로토타입 할당 모듈 (PAM) 을 통해, 에너지, 금융, 건강 등 새로운 도메인(예: 전력, 교통)에 수개의 예시 시계열로 모델을 적응시킬 수 있습니다.
  2. 텍스트 기반 제어성 – 자연어 프롬프트(예: "여름에 계절적 피크를 증가시켜라")를 다중 에이전트 시스템을 통해 패턴의 텍스트 설명을 생성하고 프로토타입 프롬프트와 결합하여 조건 신호로 변환합니다.
  3. 타겟 인식 생성 – 사용자가 제공한 하류 모델의 손실이 생성된 점에 의해 어떻게 변화하는지 관찰하고, 그 기울기를 기반으로 생성을 안내하는 영향 함수 기반 확산을 사용하여 합성 샘플을 하류 작업(예측, 분류, 이상 탐지) 향상에 명시적으로 최적화합니다.

이 저장소에는 핵심 확산 엔진, 데이터 전처리 스크립트, 그리고 연구의 최전선을 이끄는 세 가지 선택적 확장 기능이 포함되어 있습니다:

  • CaTSG – 확산 과정에 인과 제약을 추가합니다.
  • OATS – 대규모 시계열 기초 모델 학습을 위한 온라인 데이터 증강 엔진입니다.
  • Diff‑MN – 불규칙하게 샘플링된 관측치에서 연속 시간 생성을 가능하게 합니다.

🚀 주요 기능 (요약)

기능 왜 중요한가
프로토타입이 있는 유니버설 잠재 공간 어떤 도메인에서도 학습된 시간 패턴의 소수를 재사용 가능. 도메인 특화 예시 몇 개만 있으면 도메인 프롬프트를 생성할 수 있습니다.
소수 샘플 도메인 적응 전력 데이터에서 교통 데이터로 이동할 때 전체 재학습이 필요 없음. 타겟 시계열 몇 개만 입력하면 됩니다.
자유형 텍스트 제어 "주간 계절성과 상승 추세"와 같이 입력하면 모델이 이를 충족시켜 비전문가도 합성 데이터 생성이 직관적으로 가능합니다.
타겟 인식 확산 사용자의 하류 모델에서 유도된 기울기로 생성을 안내하므로, 합성 데이터는 "현실적"일 뿐만 아니라 관심 있는 작업에 유용합니다.
모듈식 확장 (CaTSG, OATS, Diff‑MN) 코드 변경 없이 인과 추론, 기초 모델 사전 학습용 온라인 증강, 연속 시간 생성을 추가할 수 있습니다.
최첨단 성능 기준 대비 MMD/KL 에서 25 %–53 % 개선, 텍스트-시계열 일관성 향상, 의료 벤치마크에서 실 데이터와 동등하거나 이를 초과하는 하류 성능 달성.

🎯 일반적인 사용 사례

시나리오 TimeCraft의 도움
데이터 부족 도메인 (예: 희귀 질환 ICU 기록) 임상적으로 중요한 패턴을 유지하면서도 개인정보 보호를 지키는 고해상도 합성 시계열 생성.
시뮬레이션 및 "만약에" 분석 인과 확장(CaTSG)을 사용해 알려진 인과 관계를 따르는 시계열 생성, 안전한 리스크 평가 가능.
예측 모델 빠른 프로토타이핑 OATS를 사용해 즉시 다양한 대규모 학습 세트 생성, 대규모 시계열 기초 모델의 제로샷 성능 향상.
도메인 특화 스토리텔링 비전문가가 평범한 영어로 원하는 행동을 설명하고 즉시 일치하는 합성 데이터를 얻을 수 있음.
벤치마크 생성 새로운 예측 또는 이상 탐지 알고리즘 평가를 위한 크로스도메인 테스트 세트 생성.

🛠️ 시작하기 (빠른 시작)

# 1. 저장소 클론 및 conda 환경 생성
git clone https://github.com/microsoft/TimeCraft.git
cd TimeCraft
conda env create -f environment.yml   # PyTorch, 확산 라이브러리 등 설치
conda activate timecraft

# 2. 공개 데이터셋 다운로드 및 전처리 (예: 전력)
python TimeDP/utils/prepare_datasets.py   # Zenodo / GluonTS에서 데이터 가져오기 및 .npy 윈도우 생성

# 3. 핵심 모델 학습 (예: 전력, 96단계 윈도우)
python main.py --dataset electricity_96 --epochs 200 --batch_size 64

# 4. 텍스트 프롬프트로 생성
python inference.py \
    --prompt "a weekly seasonal pattern with a rising upward trend" \
    --output generated.npy

# 5. (옵션) 하류 분류기용 타겟 인식 생성
python inference.py \
    --downstream_model path/to/rnn.pt \
    --guidance_set path/to/guidance.pkl \
    --tar_diff True

이 저장소에는 세 가지 확장 기능용 준비된 스크립트(./CaTSG, ./OATS, ./Diff-MN)와 데이터 다운로드에서 평가까지 전체 파이프라인을 안내하는 예제 노트북도 포함되어 있습니다.


📂 저장소 구조 (개요)

TimeCraft/
├─ TimeDP/                 # 핵심 확산 모델, 프로토타입 사전, PAM
├─ CaTSG/                  # 인과 확산 확장
├─ OATS/                   # 온라인 증강 엔진
├─ Diff-MN/                # 연속 시간 생성 모듈
├─ process/                # 텍스트 템플릿 생성 및 ts-to-text 스크립트
├─ supplementary/          # 상세 문서, 학습/추론 명령어 치트시트
├─ environment.yml         # conda 환경 정의
├─ main.py                 # 학습 진입점
├─ inference.py            # 생성 진입점 (세 가지 입력 모두 지원)
└─ README.md               # (이 파일)

📖 추가 읽기 및 리소스

  • Microsoft Research 블로그 포스트 – 크로스도메인, 텍스트 제어, 타겟 인식의 세 가지 핵심 요소에 대한 비기술적 개요 제공.
  • ArXiv 논문 – 각 주요 구성 요소마다 별도의 논문이 존재 (예: CaTSG 2025, OATS 2026, Diff‑MN 2026)로 README 내에서 링크됨.
  • 예제 노트북supplementary/ 내에 있으며, 전력 벤치마크 및 MIMIC‑III ICU 체류 예측 작업에서의 엔드투엔드 실행을 보여줍니다.

✅ 결론

개인정보 보호를 위한 의료 연구, 금융 시장 시뮬레이션, 강력한 예측 모델 구축 등 합성적이고 제어 가능하며 태스크 인식 시계열 데이터가 필요하다면, TimeCraft 는 출시 직후 바로 사용 가능한 연구 수준의 확산 기반 도구 상자이며, 인과성 또는 연속 시간 생성 기능을 확장 가능합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch
  • 프로젝트