Verm1ion/turkforecast-fm-chronos2-lora-v1
<p align="center"> <img src="https://huggingface.co/Verm1ion/turkforecast-fm-chronos2-lora-v1/resolve/main/assets/banner.png" alt="banner" width="100%" /> </p>
<p align="center"> <img src="https://img.shields.io/badge/First-TR--vertical%20TSFM-69f0ae?style=flat-square" /> <a href="https://huggingface.co/amazon/chronos-2"><img src="https://img.shields.io/badge/Base-Chronos--2-6f42c1?style=flat-square" /></a> <img src="https://img.shields.io/badge/Method-LoRA%20%2F%20PEFT-26a69a?style=flat-square" /> <img src="https://img.shields.io/badge/License-Apache--2.0-blue?style=flat-square" /> </p>
TurkForecast-FM-Chronos2-LoRA-v1
Turkish-vertical LoRA fine-tune of [amazon/chronos-2](https://huggingface.co/amazon/chronos-2) (120M T5 encoder, Apache-2.0). First publicly-released Apache-2.0 Turkish-vertical time-series foundation model (TSFM) fine-tune.
Distinction from prior Turkish ML work
TurkForecast-FM is the first publicly-released Apache-2.0 Turkish-vertical time-series foundation model (TSFM) fine-tune. We explicitly distinguish from three related but non-overlapping prior works:
- TabiBERT (arXiv:2512.23065, Boğaziçi University / VNGRS-AI, December 2025) is a Turkish ModernBERT language encoder pretrained from scratch on text — different modality (NLP, not time series).
- Ertürk et al. (MDPI Applied Sciences 16(6):2760, March 2026) train a supervised LSTM+BLSTM+GRU+Transformer hybrid from scratch on EPİAŞ electricity data — not a TSFM fine-tune (no pre-trained foundation backbone).
- NIEXCHE/chronos-t5-small-fine-tuned-v1 (Fevzi Kılaş, HuggingFace) is a Chronos-T5 fine-tune on a 15M-row multi-domain proprietary dataset — not claimed as Turkish-vertical.
Özet (TR): TurkForecast-FM, Türkçe dikey alana özgü, açık-kaynak (Apache-2.0) ilk TSFM ince-ayarıdır; yukarıdaki üç çalışma sırasıyla farklı modalite (dil), train-from-scratch paradigma ve çok-alanlı kapsam nedeniyle bu nişin dışındadır.
GIFT-Eval Results (v1.1, 2026-05-19)
Evaluated on the full GIFT-Eval benchmark (97 canonical (dataset, term) entries across 7 domains × 3 forecast horizons):
By forecast term (v1.1)
By domain (v1.1)
Full per-dataset metrics: `all_results.csv`.
v1.1 changelog (vs v1.0)
- Q4 per-domain conformal calibration (Tier-2 DR-6 Round 1 LOCK): Variant-B per-quantile temperature scaling + Romano joint-score CQR with empirical-Bayes hierarchical shrinkage (κ=50) on pure-Chronos baseline. Short-term wQL gain across 7 domains; Web/CloudOps −9.2% mean wQL vs v1.0.
- Horizon-conditional CQR refinement (DR-6 Round 2 3/4-agent endorsement): Per-(dataset, horizon, quantile) Bayesian-shrunk delta on top of Q4 v1; modest incremental lift (34 datasets covered, 20 skipped due to insufficient calibration window).
- Dataset name + V4-bucket alias fixes (Final v3 PASS 5/5 gate): SHA1-deterministic pipeline-short matching expanded 26 → 51 canonical rows, eliminating canonical-fallback dilution.
- MASE regression fixed: v1.0-intermediate P6.0 medium/long substitution caused +46% MASE blowup; v1.1 preserves canonical mid/long baseline (matched bitwise to README floor).
- Small-magnitude target override (
bizitobs_service/H,solar/10T): Two datasets with sub-0.01 target magnitudes trigger relative wQL explosion in conformal calibration (Mondrian retune diagnosed +350% wQL on bizitobs_service). Both datasets bypass the calibration pipeline and preserve canonical baseline predictions to avoid noise amplification.
Inference Pipeline
The model ships as a 3-stage inference pipeline (not a monolithic adapter):
- Base + LoRA adapter —
amazon/chronos-2+ LoRAr=32, α=64, dropout=0on all-lineartarget_modules - V4 router with WiSE-FT α-blend (`router_v5_with_alphas_and_calibration_v4.json`) — per-(domain, freq) bucket selects FT vs ZS vs blend α ∈ {0, 0.25, 0.5, 0.75, 1.0}; MASE-aware adoption rule (Stage 1.A.2):
adopt = (wql_delta<0) OR (mase_delta<−3 AND wql_delta<5)over P5.7 v2 baseline - Bucket isotonic calibrators (`bucket_isotonic_calibrators.pkl`) — per-bucket Kuleshov (ICML 2018) PIT-CDF isotonic regression on 9 quantile levels, with per-domain fallback for low-cardinality buckets
Quick start
from chronos import BaseChronosPipeline
pipe = BaseChronosPipeline.from_pretrained(
"Verm1ion/turkforecast-fm-chronos2-lora-v1",
device_map="cuda", torch_dtype="bfloat16",
)
pipe.model.eval()
quantiles, _ = pipe.predict_quantiles(
inputs=[your_context_array],
prediction_length=48,
quantile_levels=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9],
)For full GIFT-Eval reproduction with V4 router + bucket calibrators, see Replication.
Training Recipe
- Base:
amazon/chronos-2(120M params, T5 encoder) - Adapter: LoRA
r=32, lora_alpha=64, lora_dropout=0,target_modules="all-linear",bias="none" - Training data: 1,260 series total
- Turkish synthetic telco augmentations
- Turkish-themed KernelSynth (Chronos-2 synthetic generator with TR-domain priors)
- TSMixup augmentation across heterogeneous series
- Validation: EPİAŞ (Energy Exchange Istanbul) 2025 out-of-time electricity market clearing prices (4 quarterly folds)
- Optimizer: AdamW (non-fused),
lr=2e-4, cosine schedule, batchsize=8, maxsteps=300 - Reproducibility (Tier 1.5):
torch==2.4.1+cu124,transformers==4.46.3,peft==0.13.2CUBLAS_WORKSPACE_CONFIG=:4096:8,seed=42,torch.use_deterministic_algorithms(True)- SDP backend: math-only (
enable_flash_sdp(False) + enable_mem_efficient_sdp(False) + enable_math_sdp(True)) torch.backends.cuda.matmul.allow_tf32=False,cudnn.deterministic=True
Replication
Full Colab notebook + per-stage builders included in this repo (last-checkpoint/ adapter snapshot + training_args.bin). The complete reproducible pipeline (data load → LoRA train → V4 router fit → bucket calibration → GIFT-Eval eval) is documented in the project decision log and is runnable end-to-end on an A100 40 GB session.
- Replication code available: Yes
- Test data leakage: No (GIFT-Eval canonical test windows held strictly out of training corpus per Salesforce AIRS pretrain manifest)
License
Apache-2.0 (inherited from amazon/chronos-2 base + clean LoRA adapter chain; no NC-restricted ancestor models in training corpus).
Citation
@misc{turkforecastfm2026,
title = {TurkForecast-FM-Chronos2-LoRA-v1: First Apache-2.0 Turkish-vertical Time-Series Foundation Model Fine-Tune},
author = {Karatay, Mert},
year = {2026},
url = {https://huggingface.co/Verm1ion/turkforecast-fm-chronos2-lora-v1},
note = {GIFT-Eval submission v1.1, 2026-05-19}
}