PEFT
Safetensors
time-series
forecasting
lora
wikipedia
research

Configuration Parsing Warning:In adapter_config.json: "peft.task_type" must be a string

WikiTraffic-TSFM

A trained rank-8 TimesFM 2.5 200M adapter for 28-day daily Wikipedia pageview forecasts. It uses 352 days of log-transformed counts and was fine-tuned on English/Portuguese science articles. Actual adapter weights, dated forecasts, training code and independent audit results are included.

It beats seasonal baselines on this cohort. Its small observed gain over frozen TimesFM 2.5 is uncertain across articles, and frozen TimesFM 3 has lower overall SMAPE. This release does not claim a Kaggle competition result or a general improvement over foundation models.

Frozen test results

531 rolling windows, 59 language/page-ID groups, 28 days per forecast. Lower is better.

Condition SMAPE MAE MASE
Frozen TimesFM 3, raw counts 14.991 270.959 0.945
This adapter, log1p counts 15.114 270.752 0.950
Frozen TimesFM 2.5, log1p counts 15.153 271.371 0.953
Frozen TimesFM 2.5, raw counts 15.167 270.900 0.953
Eight-week weekday median 18.432 See audit See audit
Last observed week, repeated 19.991 382.868 1.317

Paired article-cluster bootstrap, 2,000 draws: adapter minus seasonal-median SMAPE βˆ’3.318, percentile 95% interval [βˆ’4.330, βˆ’2.446]. Against frozen log-transformed TimesFM 2.5 the difference is βˆ’0.039, interval [βˆ’0.153, +0.075]. These are descriptive intervals on a convenience sample, not proof of a general fine-tuning gain.

The 59-window subset with origins after September 1, 2026 scores 15.074 for this adapter, 15.479 for frozen TimesFM 2.5 and 14.943 for frozen TimesFM 3. Earlier test dates precede the TimesFM 3 public release and have a greater pretraining-contamination concern. A public-release cutoff is not a guarantee of the actual pretraining cutoff.

Diagnostic slices

Adapter slice Windows SMAPE
English 351 12.016
Portuguese 180 21.155
Realized level shift 38 33.230
Stable level 493 13.717

Level-shift strata use the target/history mean ratio (β‰₯1.5 or ≀2/3), so they are retrospective diagnostics unavailable at forecast time. independent_audit.json provides all baselines for every slice.

Short-history stress tests retain the same recurring titles and truncate context; they are not an unseen-title cold-start benchmark. Adapter SMAPE is 16.621 at 32 days, 16.486 at 64, 15.712 at 128 and 15.114 at 352. Corresponding frozen TimesFM 2.5 scores are 16.639, 16.515, 15.745 and 15.153. Checkpoint reload reproduced all 352-day base and adapted predictions exactly in the recorded GPU environment.

Training and data

Wikimedia pageview dataset, frozen revision 99190529f3ee6d7a2c29fc38c9924f8355ba275a. Training target windows end by December 2024, validation is 2025, test targets run from January 24 through October 2, 2026. Origins are 28 days apart. Titles recur across splits and were selected as a science convenience cohort; this is not an article holdout. Missing observations were excluded rather than imputed.

Base: google/timesfm-2.5-200m-transformers, revision 5a9806b9b291fad9233b5249d88263f1846304d3. LoRA rank 8, alpha 16, all linear modules, dropout 0.05; learning rate 5e-5, weight decay 0.01, batch 16, three epochs, one seed. Native TimesFM loss on log1p counts; the checkpoint is selected by validation SMAPE only. The adapter produces point forecasts; its uncertainty intervals have not been calibrated.

TimesFM 3 was a frozen research comparator under its separate noncommercial/nonproduction terms. Its weights are not redistributed here. These adapter weights are based on Apache-2.0 TimesFM 2.5; Wikimedia data are CC0 as documented upstream.

Inference

Reproduction environment: PyTorch 2.10.0, Transformers 5.22.1, PEFT 0.21.2, Accelerate 1.15.0, Safetensors 0.8.0. If vision/audio packages are installed, use matching torchvision 0.25.0 and torchaudio 2.10.0. Recorded GPU results use bfloat16/SDPA. TimesFM 3 is not required for adapter inference.

Download forecast.py, then:

import json
from forecast import PageviewForecaster

with open("my_daily_pageviews.json") as f:
    history = json.load(f)  # Consecutive observed daily counts, oldest first.
model = PageviewForecaster()  # Pin revision to a release commit for frozen use.
next_28_days = model.forecast(history)
print(next_28_days)

Supply at least 32 finite nonnegative daily observations. Up to the last 352 observations are used, rounded down to a multiple of 32. The measured training context is 352. CPU float32 is available in the helper but is not the reported GPU parity configuration. No retrieval, event features or article text are used.

Reproduce and limitations

wikimedia_pilot/ contains training code, evaluation and frozen paired predictions; wikimedia_audit/ contains the independent checkpoint/short-context test. audit_wikitraffic.py recomputes all metrics, strong seasonal baselines and article-cluster intervals from the public dataset and frozen predictions.

This small retrospective study has one training seed, recurring article identities and one recent post-release origin. It has no Kaggle leaderboard submission, site-wide evaluation, causal event explanation or demonstrated benefit on new articles. Negative and weak comparisons are retained alongside the useful seasonal-baseline result.

Downloads last month
11
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for itsalissonsilva/WikiTraffic-TSFM

Adapter
(4)
this model

Dataset used to train itsalissonsilva/WikiTraffic-TSFM