/ Модель

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

Контекст
7 999 токенов
Параметры
31,9 млн
Лицензия
Apache 2.0
Архитектура
modernbert · dense
Библиотека
transformers
Опубликована
12 июн 2026

time-anchor-modernbert-32m

Прогноз временных рядовTime_series → time_series4 профессии

Компактная модель на основе ModernBERT для вероятностного прогнозирования временных рядов, оценки вклада переменных и учёта известных будущих значений.

42скачиваний за 30 дней2лайкавеса обновлены13 июн 2026

Бенчмарки

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

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

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

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

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

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

Time-Anchor ModernBERT 32M — компактная модель прогнозирования временных рядов от K-Iwa на основе энкодера ModernBERT. Она содержит 33,4 млн параметров: 31,9 млн в 10-слойной основе с размерностью скрытого состояния 384 и шестью головами внимания, а также 1,5 млн в специализированных временных головах. Репозиторий содержит веса safetensors; для запуска предусмотрена библиотека Transformers и пакет time-anchor.

За один вызов модель формирует вероятностный прогноз с настраиваемыми квантилями, оценивает относительный вклад каждой переменной на каждом временном шаге и может учитывать заданные известные значения в будущем горизонте. Это подходит для прогнозов, где важны интервальная оценка неопределённости, интерпретация влияющих факторов или включение известных будущих точек. В README приведены примеры с почасовой температурой и месячным рядом пассажиропотока.

Заявленная максимальная длина контекста в README — 3 463 временных шага; метаданные указывают native_context_tokens 7 999. Эти величины могут относиться к разным измерениям и напрямую не сопоставимы. Модель предназначена для временных рядов; README не указывает поддержку естественных языков. Лицензия — Apache-2.0. Приведённые метрики и проверки объяснимости относятся к описанным примерам и синтетическим данным, поэтому сами по себе не гарантируют качество на других рядах.

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

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

Ограничения

Максимальная длина контекста в README указана как 3 463 шага, тогда как метаданные приводят native_context_tokens 7 999; соотношение этих величин не объяснено. Примеры качества ограничены отдельными рядами и синтетической проверкой вкладов, поэтому результаты на других данных не установлены.

Для каких профессий подходит4

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

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

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

Открыть на Hugging Face

Time-Anchor ModernBERT 32M

A compact time-series model built on a 32M-parameter ModernBERT backbone (33.4M parameters in total with the time-series input/output heads). One call returns three things:

📈 Quantile forecastProbabilistic forecasts at any requested quantile levels
🧭 Variable / time impactNormalized contribution of every input variable at every time step
📌 Anchor forecastForecasts conditioned on known future points you specify

Installation

pip install time-anchor

predict_time_anchor accepts a Hugging Face Hub model id or a local checkpoint directory. Source code for the package lives at K-Iwa/time-anchor.

Quantile Forecast

Quantile forecast

Hourly temperature in Tokyo (Open-Meteo archive), 64-hour holdout: median MAE 0.57 °C, with every actual value inside the q10–q90 band.

import pandas as pd
from time_anchor import predict_time_anchor

url = (
    "https://archive-api.open-meteo.com/v1/archive"
    "?latitude=35.69&longitude=139.69&start_date=2024-10-01&end_date=2024-12-31"
    "&hourly=temperature_2m,relative_humidity_2m,surface_pressure,wind_speed_10m&format=csv"
)
weather = pd.read_csv(url, skiprows=3)
temperature = weather.iloc[:, 1].astype("float32")

result = predict_time_anchor(
    "K-Iwa/time-anchor-modernbert-32m",
    target_context=temperature[:1440],
    prediction_length=64,
    quantile_levels=(0.1, 0.5, 0.9),
)
print(pd.DataFrame(result.forecast_rows))

Variable / Time-Step Impact

Normalized variable impact by time step

Per-hour contribution of each weather variable over a one-week Tokyo context. For each time_index, impact across all variables sums to 1.

result = predict_time_anchor(
    "K-Iwa/time-anchor-modernbert-32m",
    target_context=temperature[:168],
    explanatory_contexts=[weather.iloc[:168, i].astype("float32") for i in (2, 3, 4)],
    gaf={"enabled": True, "topk_time_steps": 0},
)
print(pd.DataFrame(result.variable_impact_rows))

Impact Validation

The impact scores were checked against synthetic data where the correct answer is known in advance.

Test 1 — do the shares match known mixing weights? The target is built as a weighted sum of three sine waves, and the same three waves are passed in as the explanatory series:

target(t) = w1*f1(t) + w2*f2(t) + w3*f3(t)

A wave with twice the weight contributes twice as much to the target, so its measured impact share should be about twice as large. That is what comes out:

True weights w1 / w2 / w3Measured impact shares f1 / f2 / f3
0.60 / 0.30 / 0.100.55 / 0.33 / 0.12
0.10 / 0.30 / 0.600.26 / 0.30 / 0.44
0.33 / 0.33 / 0.330.33 / 0.29 / 0.39

The first two rows use the same three waves with the weights swapped, and the measured shares swap with them — the score reflects how much each series contributes, not which series it happens to be.

Test 2 — does the per-time-step impact follow changes over time? Here the target switches drivers mid-context: wave A alone drives the first half, wave B alone drives the second half. Each wave's per-time impact share is higher in the half it drives, and swapping A and B mirrors the result. One reading note: B's overall share is larger, and that is expected — impact explains the forecast, and the forecast continues from the end of the context, where B is the active driver.

Anchor Forecast

Forecast with user-specified anchors

Monthly airline passengers (Box & Jenkins), 24-month holdout: pinning six known months cuts the median forecast MAE from 46 to 10 thousand passengers.

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv"
passengers = pd.read_csv(url)["Passengers"].astype("float32")

result = predict_time_anchor(
    "K-Iwa/time-anchor-modernbert-32m",
    target_context=passengers[:-24],
    prediction_length=24,
    anchor={
        "mode": "observed",
        "positions": [4, 8, 12, 16, 20, 24],
        "values": [396, 559, 405, 461, 606, 432],
    },
)
print(pd.DataFrame(result.forecast_rows))

positions are 1-based forecast horizon steps. Anchor forecasts use the target history only; disable anchors when passing explanatory_contexts.

CLI

time-anchor-infer --checkpoint K-Iwa/time-anchor-modernbert-32m \
    --input data.csv --target-column Target \
    --exogenous-columns Feature1,Feature2,Feature3

Writes output/forecast.csv, output/variable_impact.csv, and output/result.json. Add --no-impact for forecast-only runs, or --anchor-mode observed --anchor-positions 12,24 --anchor-values 0.2,0.4 for anchor forecasts.

Model Details

BackboneModernBERT encoder (10 layers, hidden 384, 6 heads)
Parameters33.4M total = 31.9M ModernBERT backbone (the "32M" in the name) + 1.5M time-series heads (float32, safetensors)
Max context length3,463 steps
Forecast horizon64 steps
Trained quantiles0.1 – 0.9 (nine levels)
AttributionGeneralized Attention Flow (GAF) via barrier-method max-flow
Anchor modesobserved, auto, forward, inverted, sparse, hierarchical, hybrid

References

License

Apache-2.0.

Figures use historical weather data from Open-Meteo (CC BY 4.0) and the classic airline passengers dataset (Box & Jenkins, 1976).

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

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

GPU в ailist

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

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

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

Класс архитектуры
TimeAnchorModelForForecasting
Ревизия весов
b6b287d

0 моделей