수요 예측, 서버 트래픽, 설비 센서를 다루는 팀은 여전히 seasonal naive나 ARIMA로 시작합니다. 데이터가 적고, 해석이 필요하고, 모델 하나를 새로 도입하는 비용이 만만치 않기 때문입니다. 시계열 파운데이션 모델은 이 계산을 바꿀 수 있습니다. 여러 도메인의 시계열을 미리 학습해, 내 데이터에 별도 학습 없이 적용하는 방식입니다.

Mistral이 10월 15일 공개한 Timestral은 이 범주의 새 모델입니다. 가장 큰 모델이 209M 파라미터에 불과한데, 회사는 GIFT-Eval, TIME, fev-bench 세 공개 벤치마크에서 사전학습·제로샷 모델 중 1위를 기록했다고 발표했습니다. 5M, 28M, 123M, 209M 네 크기를 같은 아키텍처로 냅니다.

여기서 멈추면 "작은 모델이 대형 모델을 이겼다"는 요약이 됩니다. 실무에서 필요한 질문은 다릅니다. 내 시계열에서 seasonal naive보다 나은가. 예측 구간은 실제로 맞는가. CPU에서 감당할 지연시간인가. 이 글은 공식 발표와 모델 카드, 저장소를 기준으로 그 질문에 답하는 절차를 정리합니다.

공개된 것: 크기보다 입력과 출력의 형태

Timestral은 패치 기반 인과 트랜스포머입니다. 209M 모델 기준 24개 층, 임베딩 차원 768, 한 패치당 32개 시간 단계를 씁니다. 최대 32,768개 시간 단계를 컨텍스트로 받고, 한 번의 순전파로 최대 1,024개 단계를 예측합니다. 그보다 긴 지평은 블록 단위로 반복하며, 각 블록의 중앙값을 다음 컨텍스트에 붙입니다.

출력은 점 하나가 아니라 21개 분위수입니다. 0.01, 0.05, 0.1, …, 0.9, 0.95, 0.99입니다. 단일 예측값 대신 불확실성의 폭을 볼 수 있고, 알림 임계값이나 재고 계획을 위험 기준으로 세울 수 있습니다.

입력은 세 종류의 변수를 구분합니다.

  • 타깃 변수: 예측 대상
  • 과거 전용 공변량(past-only): 컨텍스트 구간에서만 알려진 값
  • 미래 Known 공변량(known-future): 컨텍스트와 예측 구간 모두에서 알려진 값

공변량은 타깃으로만 정보를 보내고, 타깃의 미래 값은 보지 않습니다. 휴일 캘린더나 날씨 예보, 생산 계획을 넣을 수 있지만, 예측 시점에 실제로 알 수 있는 값이어야 합니다. 이 조건은 모델 기능이라기보다 데이터 파이프라인의 문제입니다.

라이선스는 나뉩니다. 저장소의 코드는 Apache 2.0이고, 모델 가중치는 Hugging Face에서 수정 MIT 라이선스로 배포됩니다. 가중치 사용에는 제3자 권리를 침해하지 않아야 한다는 조건이 붙습니다.

벤치마크 표를 읽는 법

Mistral 블로그와 209M 모델 카드가 제시한 수치는 다음과 같습니다. 모두 제로샷, 즉 내 데이터로 추가 학습하지 않은 상태의 결과입니다. 회사는 GIFT-Eval에서 비교 가능한 83개 사전학습·제로샷 항목 중 상위 10개, TIME에서 35개 리더보드 항목 중 상위 10개, fev-bench에서 37개 항목 중 상위 10개를 제시했습니다.

벤치마크 지표 Timestral-209M t0-gamma TimesFM-3 Toto-2.0-2.5B Chronos-2
GIFT-Eval MASE ↓ 0.658 0.661 0.667 0.696 0.698
GIFT-Eval CRPS ↓ 0.446 0.452 0.456 0.476 0.485
TIME MASE ↓ 0.626 0.637 0.640 0.642 0.662
TIME CRPS ↓ 0.522 0.534 0.536 0.539 0.556
fev-bench SQL skill ↑ 50.39 49.42 48.99 44.42 47.28
fev-bench MASE skill ↑ 39.49 37.99 37.82 32.54 35.50

MASE는 평균 절대 오차를 계절성 기준선의 오차로 나눈 값입니다. 1보다 작으면 기준선보다 낫고, 낮을수록 좋습니다. CRPS는 확률 예측의 품질을 보는 점수로 낮을수록 좋습니다. fev-bench의 skill score는 기준선 대비 개선을 나타내므로 높을수록 좋습니다. 벤치마크를 읽는 일반적인 방법은 AI 벤치마크 읽는 법에서 더 다룹니다.

한 가지 주의할 점이 있습니다. Mistral 블로그는 GIFT-Eval의 확률 지표로 GMean WQL을 제시하고, 모델 카드는 CRPS를 적습니다. 둘 다 확률 예측을 평가하지만 같은 지표는 아닙니다. 블로그의 그래프와 모델 카드의 숫자를 같은 축에 놓고 비교하면 안 됩니다. 이 글에서는 모델 카드의 표를 기준으로 인용했습니다.

네 크기의 차이도 함께 봐야 합니다.

벤치마크 지표 5M 28M 123M 209M
GIFT-Eval MASE ↓ 0.705 0.678 0.659 0.658
GIFT-Eval CRPS ↓ 0.479 0.461 0.448 0.446
TIME MASE ↓ 0.652 0.638 0.628 0.626
TIME CRPS ↓ 0.545 0.534 0.525 0.522
fev-bench SQL skill ↑ 46.19 48.42 50.18 50.39
fev-bench MASE skill ↑ 34.54 37.27 39.19 39.49

숫자가 말하는 것은 "클수록 좋다"가 아닙니다. 123M과 209M의 GIFT-Eval MASE 차이는 0.001입니다. 사실상 구분이 어려운 수준입니다. 28M은 209M보다 GIFT-Eval MASE가 0.020 높지만, 회사는 28M이 약 4배 큰 Chronos-2를 GIFT-Eval과 TIME에서 앞선다고 설명합니다. 5M도 fev-bench SQL skill 46.19로 작지 않은 성능을 냅니다.

작은 모델이 1위라는 말의 실제 의미

Mistral은 209M 모델이 "이전 최고 성능보다 3분의 2의 파라미터로" 앞섰다고 말합니다. 여기서 비교 대상의 크기와 평가 조건을 확인해야 합니다. 표에 있는 Toto-2.0-2.5B는 이름 그대로 25억 파라미터급입니다. 209M와 비교하면 12배 이상 차이입니다. TimesFM-3와 Falcon-2.0의 정확한 파라미터 수는 이 글에서 확인하지 못했지만, 회사는 209M가 더 적은 파라미터로 이들을 앞선다고 주장합니다.

지연시간은 더 실무적입니다. 회사는 8스레드 표준 서버 CPU에서 15분 간격 3주치 이력(2,016개 단계)으로 하루 앞(96개 단계)을 예측할 때, 5M은 10ms, 209M은 140ms가 걸린다고 밝혔습니다. 28M은 209M보다 5배 빠르고, 123M은 209M 점수의 0.2% 이내를 4분의 3 지연시간으로 낸다고 합니다. CPU 모델의 지연시간은 코어 수, 메모리 대역폭, 배치 크기에 따라 달라지므로 이 수치는 조건부로 읽어야 합니다.

이 표가 주는 판단 기준은 명확합니다. 정확도가 조금 더 필요한 것이 지연시간 두 배를 정당화하는가. 209M가 123M보다 0.001 더 좋은데 33% 더 느리다면, 대부분의 실시간 모니터링에는 123M이나 28M이 더 합리적입니다. 반대로 오프라인 배치 예측이라면 209M의 비용이 문제되지 않을 수 있습니다.

아키텍처가 실무에 주는 힌트

Timestral의 기술적 선택 중 실무자가 빌려올 만한 것은 세 가지입니다.

첫째, Decoupled Horizon Forecasting(DHF)입니다. 기존 인과 디코더는 예측할 구간을 마스킹하는데, 그러면 그 값이 이후 예측의 컨텍스트에서도 사라집니다. DHF는 전체 이력을 시퀀스에 남기고, 별도의 예측 토큰이 앞선 이력을 읽게 합니다. 모든 관측값이 타깃이면서 동시에 컨텍스트가 되고, 실제 결측은 결측으로 표시됩니다. 결측 데이터 처리와 학습 지평을 독립적으로 조정할 수 있다는 뜻입니다.

둘째, 공변량 역할 분리입니다. 미래 공변량은 전체 윈도우에서 보이지만 타깃은 인과적으로 유지됩니다. 정보는 공변량에서 타깃으로만 흐릅니다. 이 설계는 "미래에 알려진 값"과 "미래에 알 수 없는 값"을 데이터 스키마에서 분리하도록 강제합니다. 모델을 도입하기 전에 파이프라인에서 이 구분이 되어 있는지 확인해야 합니다.

셋째, 합성 데이터 우선 학습입니다. 회사는 학습 데이터의 대부분을 합성으로 만들었다고 밝혔습니다. 추세, 계절성, 다양한 노이즈를 가진 단변량 과정을 먼저 생성하고, 다변량 합성기로 비선형 의존성을 주입했습니다. 그다음 실제 데이터와 합성 데이터를 섞어 4배 긴 컨텍스트로 후학습했습니다. 손실은 21개 분위수에 대한 pinball loss입니다. 합성 우선 전략은 도메인 데이터가 부족한 상황에서 유용하지만, 실제 데이터의 구조적 변화를 얼마나 반영하는지는 별도 검증이 필요합니다.

내 데이터에서 확인하는 최소 절차

벤치마크 1위는 내 시계열의 1위가 아닙니다. 최소한 다음 순서로 확인하는 것이 좋습니다. 아래는 이 글에서 직접 실행한 결과가 아니라, 공개된 모델 카드와 일반적인 예측 평가 방법을 바탕으로 정리한 절차입니다. 벤치마크 해석의 함정은 AI 벤치마크 리워드 해킹에서도 확인할 수 있습니다.

  1. 시간 순서로 train/validation/test를 나눕니다. 무작위 분할은 미래 정보가 새는 원인이 됩니다.
  2. seasonal naive 기준선을 만듭니다. 예를 들어 일 단위 데이터라면 7일 전 값, 시간 단위라면 24시간 전 값을 씁니다.
  3. MASE를 계산합니다. 기준선의 MASE는 1이 되고, 모델이 그보다 낮아야 합니다.
  4. 확률 예측을 쓴다면 WQL 또는 CRPS와 함께 80% 예측 구간의 실제 포함률을 확인합니다. 0.75~0.85 사이면 대체로 보정이 맞는다고 볼 수 있습니다.
  5. 지연시간을 p50과 p95로 측정합니다. 평균만 보면 꼬리 지연을 놓칩니다.
  6. 결측값, 서로 다른 주기, 다변량 정렬, 미래 공변량의 누출 여부를 확인합니다.
  7. 제로샷 결과를 먼저 기록하고, 그다음 필요할 때만 미세조정합니다.

판정 기준은 다음처럼 단순하게 잡을 수 있습니다.

항목 최소 기준 실패했을 때
MASE seasonal naive보다 낮음, 가능하면 5% 이상 개선 기준선을 유지하거나 다른 모델 검토
80% 구간 포함률 0.75~0.85 분위수 보정 또는 모델 재검토
p95 지연시간 서비스 SLA 안 더 작은 크기로 내리거나 배치 처리
결측 처리 NaN 마스크가 동작하고 크래시 없음 전처리 파이프라인 수정
공변량 누출 예측 시점에 알 수 없는 값이 없음 피처 재설계
재현성 같은 입력에 같은 출력 시드·버전·디바이스 고정

공식 저장소의 사용 예시는 다음과 같습니다. 아래 코드는 README에서 인용한 것이고, 이 글에서는 실행하지 않았습니다.

import numpy as np
from timestral import TimestralForecaster

forecaster = TimestralForecaster.from_pretrained("mistralai/Timestral-209M")

context = np.random.randn(2, 1, 2000).cumsum(-1)  # (series, variates, time); NaN = missing
forecast = forecaster.forecast(context, prediction_length=96)

forecast.quantiles.shape   # (2, 1, 96, 21)
forecast.median            # (2, 1, 96)
forecast.quantile(0.9)     # (2, 1, 96)

컨텍스트는 (B, V, T), (B, T), (T,) 형태를 받고, NaN은 결측으로 처리됩니다. 32,768단계를 넘는 컨텍스트는 최근 구간만 유지됩니다. 1,024단계를 넘는 예측은 블록 단위로 반복되며, 각 블록의 중앙값이 다음 컨텍스트에 붙습니다.

맞는 곳과 맞지 않는 곳

Timestral이 잘 맞는 상황은 다음과 같습니다.

  • 센서 텔레메트리처럼 여러 관련 시계열을 함께 예측할 때
  • 수요·트래픽처럼 계절성과 추세가 반복되고, 과거 공변량과 미래 공변량을 함께 쓸 수 있을 때
  • GPU 없이 CPU에서 돌아가는 작은 모델이 필요할 때
  • 점 예측보다 불확실성 구간이 중요할 때
  • 데이터가 적어 제로샷으로 먼저 성능을 보고 싶을 때

반대로 주의할 상황도 있습니다.

  • 시계열이 매우 짧거나, 관측 간격이 불규칙하거나, 구조적 변화가 잦을 때
  • 미래 공변량이 실제로는 예측 시점에 알 수 없을 때
  • 단일 방정식으로 설명해야 하는 규제·회계 맥락일 때
  • 서로 다른 주기의 시계열을 억지로 맞춰야 할 때
  • 1,024단계를 크게 넘는 장기 예측에서 블록 반복의 오차 누적을 감당해야 할 때

미세조정은 Mistral Forge를 통해 가능하지만, 이는 공개 저장소의 코드가 아니라 회사의 학습 파이프라인입니다. 자체 하드웨어, VPC, 에어갭 환경 배포를 지원한다고 발표했습니다. 가중치 라이선스는 수정 MIT이므로, 상용 적용 전에 조건을 확인해야 합니다. 기술 보고서는 아직 공개되지 않았습니다. 벤치마크 결과도 리더보드 제출 단계이므로, 독립 검증은 별도로 기다려야 합니다.

결론: 1위는 출발점이고, 기준선은 내 데이터다

Timestral의 진짜 의미는 "209M가 대형 모델을 이겼다"가 아닙니다. 시계열 파운데이션 모델이 CPU에서 돌아갈 만큼 작아졌고, 확률 예측과 공변량을 기본으로 다루며, 네 가지 크기로 비용과 정확도를 조절할 수 있게 됐다는 점입니다. 이 변화는 예측 모델을 도입하는 문턱을 낮춥니다.

그래도 결정은 내 데이터에서 해야 합니다. 28M로 시작해 seasonal naive와 비교하고, 80% 구간이 실제로 80%를 담는지 확인하십시오. 그 결과가 만족스러울 때만 123M이나 209M로 올리면 됩니다. 벤치마크 표는 그 실험의 우선순위를 정하는 데 쓰는 것이지, 도입 결정을 대신하지 않습니다.

참고 자료

이 주제를 직접 따라가며 배우고 싶다면

시계열 예측은 모델 선택보다 데이터 분할, 기준선, 구간 보정, 지연시간 측정에서 갈리는 경우가 많습니다. 작은 모델을 직접 돌려 보고, 내 업무 데이터로 기준선과 비교하는 흐름을 만들어 두면 벤치마크 숫자를 판단하는 눈이 빨리 생깁니다.