One email each morning — yesterday's AI, sortedGet it in your inbox

METAL LAB

TinyCast: Probabilistic Zero-Shot Forecasting with Computed Periodicity

arXiv:2608.157672026-08-15

A time-series forecasting AI shrunk to 146,505 parameters keeps its accuracy and runs entirely on a tiny embedded chip

TinyCast is a zero-shot forecaster, meaning it predicts future values on unseen time series without any per-signal training, using just 146,505 parameters. Instead of learning periodic patterns with a neural network, it computes them directly with a parameter-free spectral detector, then folds the data on that rhythm before a convolutional encoder and a quantile decoder handle the rest. The result is smaller than every zero-shot model on the GIFT-Eval leaderboard whose size is known, sets a new size-versus-accuracy frontier for probabilistic forecasts, and runs end to end on an embedded board using INT8 integer arithmetic with no per-signal fitting.

What they did

  1. Instead of learning seasonality (repeating cycles) through training, TinyCast computes it with a zero-parameter spectral detector and folds the input data according to that detected rhythm's phase
  2. A dilated convolutional encoder and a block-by-block autoregressive quantile decoder handle the remaining pattern learning, with no attention mechanism used anywhere
  3. Among zero-shot models on the GIFT-Eval benchmark whose parameter counts are known, TinyCast is the smallest, and it sets a new best frontier for probabilistic accuracy (nWQL) relative to model size
  4. Among zero-shot models that declare no test-data leakage, it is the only one under 1.4 million parameters that outputs a full predictive distribution rather than a single point value; every model that scores better needs at least 1.4 million parameters
  5. Because it uses only convolutions and matrix multiplications, the model exports to static INT8 integer format and runs a complete forecast on an STM32H753 embedded board with no neural accelerator and no per-signal tuning
Figure 1: TinyCast architecture. (a) A single encoder block. (b) The pipeline for one 48-step block: the normalized context and the period-conditioned positional encoding pass through the encoder and decoder to nine quantiles at all block positions in parallel; the dashed arrow is the median feedback that chains blocks. (c) The decoder, whose three readouts compose the per-horizon query qh.
Figure 1: TinyCast architecture. (a) A single encoder block. (b) The pipeline for one 48-step block: the normalized context and the period-conditioned positional encoding pass through the encoder and decoder to nine quantiles at all block positions in parallel; the dashed arrow is the median feedback that chains blocks. (c) The decoder, whose three readouts compose the per-horizon query qh.
Table 1: Zero-shot GIFT-Eval; lower is better, best per column in bold among the learned models. All three metrics are ratios to seasonal naive, which scores 1.000 on each. Parenthesized values are point errors for models not emitting predictive distributions.
ModelParams ↓nGMASE↓nWQL↓nMSIS↓
TinyCast (ours)146 K0.7740.5450.554
Reverso-Nano (Fu et al. 2026)200 K0.760(0.661)(2.035)
Reverso-Small (Fu et al. 2026)550 K0.726(0.626)(1.945)
TTM-R3 (Ekambaram et al. 2024)1.4 M0.7240.5200.501
Reverso (Fu et al. 2026)2.6 M0.711(0.610)(1.905)
Toto-2.0-4m (Khwaja et al. 2026)4.1 M0.7570.5240.455
YingLong-6m (Wang et al. 2025a)7.3 M0.8800.6090.534
FlowState-9.1M (Graf et al. 2026)9.1 M0.7260.5020.563
Kairos-10m (Feng et al. 2025)9.9 M0.7530.5540.776
AutoARIMA (Hyndman & Khandakar 2008)01.0740.9120.948
AutoTheta (Assimakopoulos & Nikolopoulos 2000)01.0901.2441.199
AutoETS (Hyndman et al. 2002)01.2127.4898.635
FLAIR (Honda 2026)00.8380.5870.538
Figure 2: GIFT-Eval point accuracy (left) and nWQL (right) versus parameter count; lower is better. TinyCast∗ is the same checkpoint at the firmware profile (Section 4.3). Dashed staircase: the Pareto frontier over the census at the host profile, which the static-W8A8 point does not enter.
Figure 2: GIFT-Eval point accuracy (left) and nWQL (right) versus parameter count; lower is better. TinyCast∗ is the same checkpoint at the firmware profile (Section 4.3). Dashed staircase: the Pareto frontier over the census at the host profile, which the static-W8A8 point does not enter.
Table 2: TinyCast parameter budget: D=64, 10 encoder blocks, FFN expansion 1.0, K=4 periods, nb=16 phase bins, nine quantile levels.
StageModule (shape)Params
inputLinearin (14→64)960
encoderdepthwise conv (10×(64,1,3)+bias)2,560
pointwise 1×1 (10×(64,64,1)+bias)41,600
shared SwiGLU (up 64→128, down 64→64)12,480
RMSNorms (20×(64))1,280
encoder subtotal57,920
phaseWphase (256→64)16,448
queryWq (205→64)13,184
decoderSwiGLU + RMSNorm12,544
future-convWfc-in (14→64)960
depthwise conv (6×(64,1,3)+bias)1,536
pointwise 1×1 (6×(64,64,1)+bias)24,960
shared SwiGLU12,480
RMSNorms (12×(64))768
Wfc-out (64→64, zero-init)4,160
future-conv subtotal44,864
outputWout (64→9)585
Total146,505
Figure 3: Phase binning of the context with a dominant detected period of p1=24. (a) Context values against position relative to the forecast start, t−L; the stripe below assigns every position to one of nb=16 phase bins. (b) Cycle template: the mean of the context values sharing a bin. The arrow indicates the phase template selection for the marked future offset h∗.
Figure 3: Phase binning of the context with a dominant detected period of p1=24. (a) Context values against position relative to the forecast start, t−L; the stripe below assigns every position to one of nb=16 phase bins. (b) Cycle template: the mean of the context values sharing a bin. The arrow indicates the phase template selection for the marked future offset h∗.
Table 3: Training configuration of the deployed TinyCast.
Optimization
OptimizerAdamW (Loshchilov & Hutter 2019)
Weight decay0.01
Gradient clipping1.0
Precisionbf16-mixed
Random seed42
Total samples150 M
Effective batch size4096
Acceleratorseight RTX 3090, DDP
Wall clock7.8 h, about 62 accelerator-hours
Final weightsaverage of the last eight checkpoints
Learning-rate schedule
Shapewarmup-stable-decay
Peak learning rate3×10−3
Minimum learning rate1×10−5
Warmup fraction5% (linear to peak)
Stable fraction60% (held at peak)
Decay fraction35% (to the minimum)
Sequence layout
Context length L2048
Horizon unit p48
Objective and data
Lossnine-quantile pinball + gated committing term (weight 0.3)
Scheduled samplingfour blocks; feedback probability ramps to 0.5
CorpusGIFT-Eval-Pretrain + Chronos KernelSynth + four synthetic shards, band-balanced
Augmentationstemporal flip, sign flip, downsample, mixup; each p=0.5
Figure 4: Empirical cumulative distribution over all 97 configurations of the relative change from the matched unquantized reference to the quantized host profile, both carrying the two host-side strategies, in nGMASE (left) and nWQL (right), for all configurations (black) and by forecast term (light to dark: 55 short, 21 medium, 21 long). Positive is a degradation and the dashed line is zero change; the panels share one x range. Dots mark the median and the P90; the filled marker where a curve reaches one is the worst configuration, named with its change.
Figure 4: Empirical cumulative distribution over all 97 configurations of the relative change from the matched unquantized reference to the quantized host profile, both carrying the two host-side strategies, in nGMASE (left) and nWQL (right), for all configurations (black) and by forecast term (light to dark: 55 short, 21 medium, 21 long). Positive is a degradation and the dashed line is zero change; the panels share one x range. Dots mark the median and the P90; the filled marker where a curve reaches one is the worst configuration, named with its change.
Table 4: The eight scored configurations: one checkpoint, the same 97 GIFT-Eval configurations, all scored on the host. Lower is better. “Exact” W8A8 calls a host build of the same C integer core sources the firmware executes rather than a fake-quantization emulation, and the board runs the fidelity chain of Appendix E, not the benchmark.
ProfileArithmeticSymmetrizationAlignmentnGMASEnWQLnMSIS
Hostbf16yesyes0.77380.54540.5541
No alignmentbf16yesno0.78580.55670.5786
No symmetrizationbf16noyes0.78160.55150.5638
Single passbf16nono0.79350.56290.5889
Quantization referencefp32-strictyesyes0.77360.54570.5535
Single-pass referencefp32-strictnono0.79180.56220.5865
Quantized hostexact W8A8yesyes0.79010.55260.5632
Firmware configurationexact W8A8nono0.83280.58070.6243
Figure 5: The same construction as Figure 4, but at the firmware profile: the relative change from the single-pass reference to exact static W8A8, with neither sign symmetrization nor period alignment on either side. Lower is better and positive is a degradation.
Figure 5: The same construction as Figure 4, but at the firmware profile: the relative change from the single-pass reference to exact static W8A8, with neither sign symmetrization nor period alignment on either side. Lower is better and positive is a degradation.
Table 5: Per-dataset supervised models in the pinned snapshot, all 97 configurations, ratios to seasonal naive. Lower is better. These are trained on the series they forecast and are therefore outside the zero-shot census of Table 1.
ModelnGMASE↓nWQL↓nMSIS↓
TinyCast (ours)0.7740.5450.554
PatchTST0.8490.5870.574
iTransformer0.8930.6200.613
TFT0.9150.6050.656
N-BEATS0.9380.8162.512
DLinear1.0610.8462.841
TiDE1.0910.7720.906
DeepAR1.3430.8530.933
Crossformer2.5741.6376.892
Figure 6: Zero-shot forecasts at the host profile on ten GIFT-Eval tasks, spanning all seven domains, four sampling frequencies and three forecast terms. Truth (blue), median forecast (orange, dashed), shaded 10–90% predictive interval, seasonal naive (grey, dotted); the vertical dotted line marks the forecast start and grey bands mark missing observations. Titles give configuration, domain, nGMASE and, where the horizon is only partly drawn, “first n of H”; y is in each series’ own units. The panel-selection and x-range rules are stated below.
Figure 6: Zero-shot forecasts at the host profile on ten GIFT-Eval tasks, spanning all seven domains, four sampling frequencies and three forecast terms. Truth (blue), median forecast (orange, dashed), shaded 10–90% predictive interval, seasonal naive (grey, dotted); the vertical dotted line marks the forecast start and grey bands mark missing observations. Titles give configuration, domain, nGMASE and, where the horizon is only partly drawn, “first n of H”; y is in each series’ own units. The panel-selection and x-range rules are stated below.
Table 6: Paired bootstrap intervals for every difference in Table 1 with a per-configuration comparator record. Positive Δ means the comparator scores lower and therefore leads. The three StatsForecast baselines are omitted: all are resolved against us, by margins of 0.30 to 8.08 units. FLAIR is absent for the reason given above, having no per-configuration entry in the snapshot. † marks a difference whose cluster interval spans zero. The Reverso rows on nWQL and nMSIS carry the same caveat as in Table 1: those models emit no predictive distribution, so the quantity differenced is a point error.
95% CI
ModelParamsΔconfigsbase datasets
nGMASEReverso-Nano200 K+0.0140†[+0.0030,+0.0245][−0.0022,+0.0283]
Reverso-Small550 K+0.0475[+0.0366,+0.0581][+0.0322,+0.0613]
TTM-R31.4 M+0.0498[+0.0348,+0.0656][+0.0290,+0.0695]
Reverso2.6 M+0.0626[+0.0479,+0.0782][+0.0437,+0.0843]
Toto-2.0-4m4.1 M+0.0172†[−0.0081,+0.0382][−0.0102,+0.0448]
YingLong-6m7.3 M−0.1064[−0.1446,−0.0733][−0.1702,−0.0530]
FlowState-9.1M9.1 M+0.0476[+0.0327,+0.0627][+0.0300,+0.0651]
Kairos-10m9.9 M+0.0211[+0.0008,+0.0383][+0.0021,+0.0374]
nWQLReverso-Nano200 K−0.1156[−0.1324,−0.1002][−0.1408,−0.0922]
Reverso-Small550 K−0.0811[−0.0954,−0.0678][−0.1006,−0.0634]
TTM-R31.4 M+0.0259[+0.0127,+0.0399][+0.0085,+0.0459]
Reverso2.6 M−0.0649[−0.0827,−0.0466][−0.0886,−0.0382]
Toto-2.0-4m4.1 M+0.0213†[+0.0001,+0.0401][−0.0036,+0.0457]
YingLong-6m7.3 M−0.0636[−0.0894,−0.0405][−0.1031,−0.0260]
FlowState-9.1M9.1 M+0.0435[+0.0304,+0.0582][+0.0268,+0.0629]
Kairos-10m9.9 M−0.0087†[−0.0283,+0.0086][−0.0278,+0.0092]
nMSISReverso-Nano200 K−1.4807[−1.6688,−1.3123][−1.7867,−1.1911]
Reverso-Small550 K−1.3911[−1.5651,−1.2281][−1.6846,−1.1185]
TTM-R31.4 M+0.0528[+0.0219,+0.0843][+0.0076,+0.0935]
Reverso2.6 M−1.3506[−1.5205,−1.1952][−1.6226,−1.0875]
Toto-2.0-4m4.1 M+0.0989[+0.0684,+0.1304][+0.0668,+0.1309]
YingLong-6m7.3 M+0.0200†[−0.0131,+0.0522][−0.0300,+0.0579]
FlowState-9.1M9.1 M−0.0091†[−0.0413,+0.0244][−0.0488,+0.0215]
Kairos-10m9.9 M−0.2224[−0.2852,−0.1660][−0.2967,−0.1549]
Table 7: Configuration of the three ablation families and of the deployed model. Deltas are valid within a family and absolute scores are not comparable across families. Q is the number of quantile levels; the single-quantile families are scored on nMAD, and the component family runs at about a fifth of the deployed sample budget. Every family reads GIFT-Eval-Pretrain and Chronos KernelSynth; the component family adds four locally generated length-4096 KernelSynth shards, which its synthetic-family arm replaces with the four Reverso-family shards the deployed model trains on.
FamilyControlParametersStepsQEncoder
Architecturedilated-conv base340,5457,5001untied, non-separable, FFN 1.5
+ phase binning361,089
+ recency gate393,921
substituted-recency arm410,241
Componentarchitecture family’s best arm394,44130,0009untied, non-separable, FFN 1.5
+ future-conv445,513future-conv stack separable, shared FFN
Optimizationpeak LR 3×10−3, 100 M samples1effective batch 4096
Deployed146,50536,6219tied, separable, FFN 1.0
Table 8: Architecture family, dilated-conv base at 340 K, 7,500 steps. Lower is better on nGMASE and nMAD, so a negative Δ is an improvement. Arms are not parameter-matched, and each row gives its count. nMAD is the single-quantile point error defined above. † marks a delta whose 95% paired bootstrap interval over configurations spans zero.
paramsnGMASEΔnMADΔ
detector off, recency path substituted410 K1.1537+0.13120.9774+0.1160
control (dilated-conv base)340 K1.02250.8614
causal padding340 K1.0161−0.0064†0.8562−0.0052†
+ phase binning361 K0.9248−0.09770.7791−0.0823
+ phase binning + causal361 K0.9250−0.09750.7886−0.0728
+ phase binning + recency gate393 K0.9092−0.11330.7694−0.0920
Table 9: Component family, 394 K nine-quantile line, 30,000 steps. Lower is better on nGMASE and nWQL, so a negative Δ is an improvement. Arms carry the control’s parameter count except future-conv, which adds 51 K. † marks a delta whose 95% paired bootstrap interval over configurations spans zero.
nGMASEΔnWQLΔ
control (394 K line)0.81230.5699
+ future-conv correction0.7972−0.01510.5614−0.0085
+ synthetic-family blend0.8060−0.0062†0.5669−0.0030†
+ synthetic-family blend (tuned dose)0.8052−0.0071†0.5623−0.0076†
+ gated committing loss0.8100−0.0023†0.5690−0.0009†
+ future-conv + synthetic families0.7860−0.02630.5529−0.0170
8 training AR chunks (vs 4)0.8132+0.0010†0.5648−0.0051†
backtest-selected period (vs raw detection)0.8167+0.0044†0.5749+0.0050†
MASE-weighted loss0.8146+0.0023†0.5719+0.0020†
Table 10: Optimization family: learning-rate peak and sample budget. Lower is better, so a negative Δ is an improvement. nMAD is a point error, as in Table 8. † marks a delta whose interval spans zero.
nGMASEΔnMADΔ
control (peak LR 3×10−3, 100 M samples)0.85620.7252
peak LR 1e-30.8957+0.03950.7460+0.0208
peak LR 2e-30.8665+0.01030.7300+0.0048†
peak LR 4e-30.8745+0.01830.7304+0.0052†
budget 50 M samples0.8933+0.03710.7479+0.0227
budget 150 M samples0.8533−0.0029†0.7217−0.0035†
Table 11: Single-variable overrides on the architecture family’s best arm. All 97 GIFT-Eval configurations; a negative Δ is an improvement.
nGMASEΔ
control (phase binning + recency gate)0.9092
phase bins, 16 to 320.9047−0.0045
cross-horizon convolution, width 50.9085−0.0007
encoder kernel width, 3 to 50.9100+0.0008
gated encoder convolution0.9178+0.0086
harmonics per period, 1 to 20.9178+0.0086
period cap, 4 to 80.9233+0.0141
recency-weighted phase fold0.9242+0.0150
Table 12: Interventions aimed at point accuracy, tested and rejected. nGMASE throughout, lower is better. Groups 1 and 2 are scored against an archived control and group 1’s per-configuration results are released. Group 3’s arms have no archived control, and groups 4 to 6 are reported by direction.
GroupInterventionScored onResult
1 Computed valuesseasonal-naive draft as input value6-config probe0.8825
+ all significant periods6-config probe0.8930
+ linear trend term6-config probe0.9178
control (dilated-conv base)6-config probe0.8760
trend-seasonal decomposition as channels97 configs0.9177
2 Learned rulelearned per-period weight, variant 197 configs0.9114
learned per-period weight, variant 297 configs0.9190
hard reliability rule97 configs0.9002
no rule97 configs0.9092
3 Per-instance adaptation4 methods, best is an oracle gate97 configs0.818
amortized model97 configs0.774
4 Tail-robust objectiveworst-α per-sample lossesprobeworse at every α
5 Horizon-weighted losslinear long-horizon up-weightingprobeno net change
6 Median up-weightingq0.5 term up-weightedprobeno gain at convergence
Table 13: Interval score on GIFT-Eval at the host profile, all 97 configurations, normalized to seasonal naive. Lower is better. Positive Δ means the comparator scores lower and therefore leads. Intervals are paired bootstraps over configurations, and † marks a difference whose cluster interval spans zero. Parenthesized values are point errors for models not emitting predictive distributions, as in Table 1, and their differences carry the same caveat.
ModelParams ↓nMSIS↓Δ95% CI
TinyCast (ours)146 K0.554
Reverso-Nano200 K(2.035)−1.4807[−1.6688,−1.3123]
Reverso-Small550 K(1.945)−1.3911[−1.5651,−1.2281]
TTM-R31.4 M0.501+0.0528[+0.0219,+0.0843]
Reverso2.6 M(1.905)−1.3506[−1.5205,−1.1952]
Toto-2.0-4m4.1 M0.455+0.0989[+0.0684,+0.1304]
YingLong-6m7.3 M0.534+0.0200†[−0.0131,+0.0522]
FlowState-9.1M9.1 M0.563−0.0091†[−0.0413,+0.0244]
Kairos-10m9.9 M0.776−0.2224[−0.2852,−0.1660]
FLAIR00.538no per-configuration record
Table 14: Chronos-ZS at the host profile, all 27 tasks, ratios to the published seasonal-naive reference. Lower is better. The statistical methods need no training data and have no position on a parameter axis.
ModelParamsrel. MASErel. WQL
TinyCast146 K0.8800.722
AutoARIMA0.8690.741
AutoTheta0.8590.793
AutoETS0.9430.814
TTM-R2805 K1.1201.134
Chronos-Tiny8.4 M0.8740.703
Chronos-Bolt-Tiny8.7 M0.8490.668
Table 15: fev-bench at the host profile, all 100 tasks. Ratios are to the vendored seasonal-naive reference and lower is better. Win rate is TinyCast’s share of tasks won against that model, computed by the benchmark’s own pairwise function, so it rests on no comparator pool. AutoARIMA returns 96 of the 100. ∗CITRAS-FM releases no checkpoint, so its parameter count is the one stated in its paper rather than one we instantiated.
MASEWQL
ModelParams ↓ratiowin rateratiowin rate
TinyCast146 K0.8190.658
AutoARIMA00.8790.6880.7460.719
AutoTheta00.8900.6500.9220.810
Toto-2.0-4m4.1 M0.7200.1900.5530.140
CITRAS-FM7.2 M∗0.7070.1400.5400.080
FlowState9.1 M0.7020.1400.5250.110
Table 16: Cold start: accuracy against the number of observed samples, all 97 configurations rescored on a truncated context at the no-alignment profile, since an alignment factor computed from a truncated context would change the effective context length as history shrinks. Relative MAE, lower is better; 1.0 is parity with seasonal naive.
Observed samples6412825651210242048
Relative MAE1.0130.9750.9110.8450.7860.759
Table 17: Deployment record of the TinyCast static-W8A8 core, with FP32 islands, on an STM32H753 Cortex-M7 at 480 MHz. The RAM rows are not additive: the first 8 KiB of the heap row is already reserved in the linker-section row, and the accounted total removes the overlap.
Latency
Core call (full L=2048 re-encode)4.08 s
Per-position encoder step (×L per core call)1860 μs
Decoder (in isolation)0.20 s
Flash
INT8 matrix and convolution coefficients138.1 KiB
Complete benchmark image (incl. 8 KiB context)365.5 KiB
RAM
Encoder causal rings128.5 KiB
Phase-fold context tensor128 KiB
Linker RAM sections and reservation508.6 KiB
Persistent model heap payload217.0 KiB
Accounted unique RAM (lower bound)717.6 KiB
Peak occupancy (statics, heap, stack high-water)730.7 KiB

Why it matters

Maintaining a separate model for every deployed sensor or device is costly in human effort, so a model this small that still generalizes to unseen signals without retraining could remove that burden for edge devices. It also closes a gap where compact models usually only give a single-point guess, by delivering full uncertainty estimates at a size previously reserved for point forecasts.

Terms in this paper

  • zero-shot forecasting · predicting on new data without any additional training specific to that data
  • predictive distribution / quantile · an output describing a range of possible values with their probabilities, rather than one single guess
  • dilated convolution · a convolution that skips input positions to cover a wide range cheaply, capturing long-range patterns
  • INT8 quantization · representing model numbers as 8-bit integers to cut compute and memory use
  • phase binning · grouping data points that fall at the same position within a detected cycle and averaging them

Original abstract (English)

We introduce TinyCast, an attention-free zero-shot forecaster that emits a predictive distribution from 146,505 parameters, on the premise that at this size the periodic structure of a context is worth computing rather than learning. A zero-parameter spectral detector supplies the dominant periods, the context is folded on their phase, and a dilated convolutional encoder and a block-autoregressive quantile decoder model the rest. It is smaller than every zero-shot entry on the GIFT-Eval board whose parameter count can be established. On probabilistic accuracy it defines the size-accuracy frontier. Among zero-shot entries declaring no test-data leakage it is the only one below 1.4M parameters that emits a predictive distribution, and every entry scoring better carries at least that budget. On Chronos-ZS and fev-bench every neural model ahead of it carries at least 28 times its parameters. Because the mixing path is convolutions and matrix multiplications only, it exports to static INT8 and forecasts end to end on an embedded device without per-signal fitting.

Authors · Armin Steinhauser

Read on arXiv

Latest papers

All papers →

Latest from METAL LAB

Figures: Armin Steinhauser et al., arXiv:2608.15767, CC BY 4.0