/ Модель

Характеристики

Лицензия
Apache 2.0
Архитектура
trichronos · dense
Библиотека
pytorch
Опубликована
8 авг 2026

trichronos-50M

Прогноз временных рядовTime_series → time_series

Компактный тернарно-квантованный Transformer для вероятностного прогнозирования временных рядов, особенно месячных и более частых.

9скачиваний за 30 дней0лайковвеса обновлены8 авг 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

TriChronos-50M — разработанная автором репозитория компактная модель для вероятностного прогнозирования временных рядов. Это примерно 50-миллионная encoder-only Transformer-модель, обученная с нуля на PyTorch с 1,58-битными тернарными весами BitNet-стиля {-1, 0, +1}. Для каждого будущего шага она предсказывает 21 квантиль, а не одно точечное значение.

Модель предназначена для исследований небольших квантованных моделей временных рядов, вероятностного прогнозирования одномерных рядов с месячной и более высокой частотой и использования в качестве лёгкой базовой модели. В описанных испытаниях она превзошла наивный baseline на Weather и M3 Monthly; качество зависит от частоты и заметно снижается на квартальных и годовых рядах. Длина контекста в предоставленных данных не указана.

Ограничения включают слабое качество на коротких рядах и дальних горизонтах, особенно на годовых данных, а также усреднение представлений патчей в прогнозной голове, способное сглаживать детали на длинном горизонте. Значения MASE рассчитаны в нормализованном пространстве и напрямую не сопоставимы с опубликованными таблицами результатов без повторной оценки на исходных значениях. Модель обучалась ограниченное число шагов и не заявлена как результат уровня state of the art. Лицензия — Apache-2.0.

Сценарии применения

  • вероятностный прогноз месячных временных рядов
  • прогнозирование погоды по временным рядам
  • построение лёгкого baseline для рядов высокой частоты
  • оценка квантилей будущих значений временного ряда

Ограничения

Качество зависит от частоты: модель слабее на квартальных и годовых, коротких рядах и длинных горизонтах; заявленные MASE рассчитаны в нормализованном пространстве и не сопоставимы напрямую с опубликованными результатами на исходных значениях. Усреднение патчей может сглаживать детали дальнего прогноза.

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

TriChronos-50M

TriChronos-50M is a ~50M-parameter, encoder-only Transformer for probabilistic time-series forecasting. Weights are trained with 1.58-bit ternary quantisation (BitNet-style {-1, 0, +1}), and the model outputs 21 quantiles per future step rather than a single point forecast.

It was trained from scratch on a strict compute budget (single NVIDIA L40S, ~$15) as a study in how far a small, quantised model can go on general time-series forecasting — not as a state-of-the-art benchmark entry.

TL;DR — On the datasets it does well, it does genuinely well: it beats the naïve baseline on Weather (MASE 0.83) and M3-Monthly (0.81). Performance is strongly frequency-dependent: solid on monthly/high-frequency series, weak on quarterly, and poor on yearly (which have very few observations). Read the per-frequency breakdown below rather than the headline aggregate.


Highlights

DatasetMASEMeaning
🟢Weather0.83Beats naïve — strongest result
🟢M3-Monthly0.81Beats naïve
🟡Traffic2.13Moderate
🟡M1-Monthly1.66Moderate
🔴Quarterly / Yearly4–43Weak → poor (few observations, long horizons)

MASE < 1 = better than the naïve baseline; lower is better.


Architecture

PropertyValue
Parameters50,081,016 (~50M)
TypeEncoder-only Transformer
d_model768
Layers6
Heads12
FFN dim2304
Patch size8 timesteps
Forecast horizon24 timesteps
Weight precision1.58-bit ternary ({-1, 0, +1}, BitLinear) in attention + FFN
Activation precision8-bit per-token
Training precisionBF16 autocast
Output21 quantiles (τ = 0.025, 0.05, 0.10 … 0.90, 0.95, 0.975)

Each encoder block applies temporal self-attention, then cross-series ("group") attention over the batch, then a BitLinear FFN. The input series is split into non-overlapping 8-step patches; patch embeddings and the quantile head stay in full precision.


Training

  • Data: Salesforce/lotsa_data, streamed per-subset (Bronze→Silver→Gold pipeline: asinh z-score normalisation → 8-step patches).
  • Hardware / budget: 1× NVIDIA L40S, ~$15 total compute.
  • Steps: ~105k (single session; cosine LR annealed toward 10% of peak).
  • Optimiser: AdamW, lr=3e-4, wd=1e-2, β=(0.9, 0.95), 2k-step warmup.
  • Loss: pinball / quantile loss over all 21 quantiles.

Evaluation

Zero-shot MASE on Monash Time Series Forecasting datasets (via the Parquet mirror autogluon/chronos_datasets). Two protocols are reported for honesty:

  • Full — up to a few hundred series per dataset.
  • Diagnostic (10-series) — a fixed small sample per dataset; faster, but higher variance.

⚠️ Metric caveat. MASE here is computed in the model's normalised (asinh z-score) space, for both the model and the naïve baseline. The model-vs-baseline comparison is therefore fair and internally consistent, but these numbers are not directly comparable to published Monash leaderboards, which report MASE on raw values with per-dataset seasonal-naïve denominators.

Per-dataset MASE

DatasetFullDiagnostic (10-series)Read
Weather0.8680.831🟢 beats naïve
M3 Monthly0.8081.012🟢 beats naïve (full)
M1 Monthly1.6562.168🟡 moderate
Traffic2.1331.865🟡 moderate
M4 Monthly2.4132.283🟡 moderate
Electricity Hourly3.3771.833🟡 moderate
Tourism Monthly3.2362.567🟠 weak
Tourism Quarterly4.0622.911🟠 weak
M4 Quarterly4.0861.501🟠 weak (full)
M3 Quarterly4.478—🟠 weak
M1 Quarterly4.9063.735🔴 weak
M4 Yearly14.007—🔴 poor (long-horizon, few obs.)
M1 Yearly42.972—🔴 poor (only 3 series)

Aggregates

SliceMean MASENote
Full benchmark (all 13)6.846inflated by yearly outliers
Excluding yearly2.91fairer central estimate
High-frequency subset (monthly + hourly)≈ 2.07where the model is designed to work
Diagnostic 10-series2.071small-sample sanity check

How to read this: the full-benchmark mean is dominated by two low-frequency datasets (M1-Yearly = 42.97 across just 3 series, M4-Yearly = 14.01). Those series have very few observations and a long forecast horizon — intrinsically hard, and statistically noisy at this sample size. The high-frequency subset (~2.07) is the number that best reflects the model's actual behaviour.

Observed pattern: frequency dependence

Monthly   → good        (M3 0.81, M1 1.66, M4 2.41)
Hourly    → moderate    (Traffic 2.13, Electricity 3.38)
Quarterly → weak        (~4.0–4.9)
Yearly    → poor        (14–43, small N)

This is consistent with a model that has learned local, high-frequency temporal structure but degrades when a series is short and the horizon is long relative to the available history — a data/generalisation limitation more than an obvious capacity ceiling.


Intended use & limitations

Intended: research on small / quantised time-series foundation models; probabilistic forecasting on monthly and higher-frequency univariate series; a lightweight baseline.

Not recommended (as-is): yearly or very short series; long-horizon forecasting far beyond 24 steps; any setting needing calibrated leaderboard-grade MASE without re-running evaluation on raw values.

Known limitations

  • Frequency-dependent quality (above).
  • MASE reported in normalised space (above) — recompute on raw values for cross-paper comparison.
  • Trained ~105k steps on a single small budget; not converged to SOTA.
  • The forecast head mean-pools patch representations before projecting the horizon, which can flatten fine temporal detail on long horizons.

Usage

import torch
from model import TriChronos   # from this repo

model = TriChronos()           # d_model=768, n_layers=6, n_heads=12, ffn_dim=2304
model.load_state_dict(torch.load("model_state.pt", map_location="cpu"))
model.eval()

# patches: (batch, n_patches, patch_size=8) — asinh z-scored, most-recent-last
patches = torch.randn(1, 64, 8)
with torch.no_grad():
    quantiles = model(patches)   # (1, 24, 21) → horizon × quantile levels
median = quantiles[..., 9]       # τ = 0.50

Preprocessing (asinh z-score → 8-step patches) and the quantile levels are defined in data_pipeline.py / model.py, both included in this repo.

Reproducing the evaluation

python evaluate.py --checkpoint model_state.pt --max-series 200

Citation

@misc{trichronos2026,
  title  = {TriChronos-50M: Ternary-Quantised Probabilistic Time-Series Forecasting},
  year   = {2026},
  url     = {https://huggingface.co/iravikr/trichronos-50M}
}

License

Apache 2.0

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · pytorch

Нельзя запустить

Временные ряды пока не поддерживаются.

Ревизия весов
a01dbb8

0 моделей