aurora-mix-v5 — cascade challenger generator
A seventeen-family synthetic time-series prior redesigned around TempoPFN's full pipeline (arXiv 2510.25502). Native families use numpy/scipy; the genuine ForecastPFN component uses the vendored TempoPFN subset and its allowlisted runtime dependencies.
v5 — research-backed SDE coverage and dormant-family activation:
- Regime-switching OU SDE. TempoPFN's ablation reports that removing its
SDE prior worsens aggregate CRPS by 26%, the largest generator-level drop.
sde_regime_oufollows its published parameter ranges: two persistent mean-reversion regimes, CIR-like stochastic volatility, time-varying mean/diffusion, calendar seasonality, and optional fractional innovations. - Previously dormant families now train.
web_trafficandseasonal_levelwere implemented in the downloaded artifact but absent fromconfig.json, so they emitted zero rows. They now provide positive count traffic and drift-neutral seasonal-level coverage. - Broad composition. ForecastPFN remains the largest component (30%), with GP/kernel (11%) and SDE (9%) as the other anchors. The remaining 50% is spread across fourteen complementary families, avoiding a narrow benchmark-shaped corpus.
- Stratified interleaved emission remains enabled. Every consumed stream prefix approximates the configured mixture.
Study the live king first (cascade fetch)
Every committed generator is public and content-addressed. Pull the reigning king and diff your prior against the actual code that is winning right now:
cascade fetch king --network test --chain-toml chain.testnet.toml # → ./fetched-king-uidN
python local_validator/validate.py --repo my_generator --king ./fetched-king-uidN
--king accepts any generator dir, so the compare stage scores your
feature-space coverage against the live king, not just the shipped
base_generator. You win by improving on the visible best — a byte-identical
copy is dropped before it trains, so you must genuinely beat it.
Strategy vs the king (the TempoPFN redesign)
The king vendors ten TempoPFN families but drops the audio-inspired group
(pyo runs an audio server and seeds via hash() — non-deterministic, not on
the allowlist) and leaves TempoPFN's augmentation layer mostly unused. v2
attacks exactly that gap:
Keeps the highest-signal families (per the TempoPFN ablation), with its own implementations: compositional GP/kernel priors (KernelSynth-style, coarse-grid Cholesky + cubic upsampling) and rich trend × multi-seasonality × structured-noise composition.
Reimplements the king's missing TempoPFN audio priors deterministically (pure numpy/scipy):
family TempoPFN prior it restores what it teaches rhythmStochastic Rhythms quasi-periodic event trains: tempo drift, accent bars, swing, dropouts, pluck/percussive/bump kernels fractal_multiMulti-Scale Fractals piecewise-slope spectra, Weierstrass sums, multiplicative cascades (multifractal volatility) net_diffusionNetwork Topology forced diffusion on random directed graphs — propagation, echoes, superposition (CauKer flavour, no networkx) Financial Volatility (TempoPFN's fourth audio prior) is already covered by
regime_garch.Ports TempoPFN's augmentation layer (the vendored king has the params but doesn't use most of it): per-series time-warp, damping envelopes, and spike injection in post-processing, plus batch-level splice transitions (two series crossfaded at a changepoint — TempoPFN's
transition_ratio) and the TSMixup-stylemixupfamily.Keeps the seven regime classes the king does not emit (from v1):
family real-world shape it teaches literature chaotic(Lorenz/Rössler/Duffing/Mackey-Glass/logistic/Hénon)nonlinear dynamics, traffic/weather transfer DynaMix (arXiv 2505.13192) fgn(fractional Gaussian noise / fBm)long-range dependence classic Hurst regime_garch(Markov-switching AR + GARCH)volatility clustering, regime shifts econ/finance intermittent(zero-inflated counts)retail demand, sparse events Croston calendar(daily profile × weekly factors × holidays)energy/traffic load curves — growth(logistic/Gompertz/lifecycle)adoption curves, saturation Bass bursts_anomaly(subcritical Hawkes + anomaly-injected AR)bursty events, robustness to outliers/level shifts — Scale/offset/quantisation diversity in post-processing: log-uniform scales over five decades, offsets, integer quantisation (count-like series), softplus positivity — the from-scratch model must learn scale-robustness from the corpus alone.
Length mixture biased long (55 % of crops in [768, 2048]) — more signal per series while keeping short-series coverage.
Determinism
The corpus is a pure function of (seed, n_series). Every RNG is a
np.random.default_rng(SeedSequence([seed, tag, index])); there is no global
RNG, no torch, no wall-clock, no hash(). Verified by
cascade verify (two full draws, digest-compared) and by a cross-process
digest smoke (~650k points/s on a CPU box — well above the trainer's 185k
tokens/s reference rate, so stream_cpu never starves the GPU).
Verify / test / score
# from the cascade repo root
python local_validator/validate.py --repo my_generator # CPU gauntlet (valid + regime coverage vs king)
python -m pytest my_generator/tests -q # contract tests
cascade verify ./my_generator # the real pre-deploy check
# the REAL signal (GPU, upstream `cascade score`): does it actually beat the king?
bash local_validator/vps_score.sh # on a GPU VPS — A/B train+score vs the fetched king
cascade score trains the fixed Toto2-4M on your corpus at the heat budget and
scores it (lower geomean = better), so you learn whether you clear the 0.02 win
margin before spending a hotkey. See local_validator/README.md for the GPU
VPS setup + a sufficient Vast.ai spec.
Deploy (when ready)
cascade deploy ./my_generator --hub-repo <namespace/aurora-mix> \
--wallet-name <coldkey> --wallet-hotkey <hotkey>
# optional outage fallback (Hub is always tried first; --hf-repo alone is refused):
# --hf-repo <hf-namespace/aurora-mix> # needs HF_TOKEN; commits repo@hf:<sha>
Remember: one hotkey = one submission, for life. Deploy only after the local
gauntlet and a GPU cascade score A/B that clears the 0.02 margin vs the
current king (bash local_validator/vps_score.sh).