Hippius
maincontainerPublic

jan/cascade

sha256:b36d32170861af8e526d739965863ec9b1cccd792ae2c11853d4537881c6c3b9·Indexed Jul 16, 2026

Layers

48

Total size

316.8 KB

Files

48

Quantization

README.md

6.7 KB

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:

  1. 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_ou follows its published parameter ranges: two persistent mean-reversion regimes, CIR-like stochastic volatility, time-varying mean/diffusion, calendar seasonality, and optional fractional innovations.
  2. Previously dormant families now train. web_traffic and seasonal_level were implemented in the downloaded artifact but absent from config.json, so they emitted zero rows. They now provide positive count traffic and drift-neutral seasonal-level coverage.
  3. 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.
  4. 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:

  1. 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.

  2. Reimplements the king's missing TempoPFN audio priors deterministically (pure numpy/scipy):

    family TempoPFN prior it restores what it teaches
    rhythm Stochastic Rhythms quasi-periodic event trains: tempo drift, accent bars, swing, dropouts, pluck/percussive/bump kernels
    fractal_multi Multi-Scale Fractals piecewise-slope spectra, Weierstrass sums, multiplicative cascades (multifractal volatility)
    net_diffusion Network 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.

  3. 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-style mixup family.

  4. 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
  5. 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.

  6. 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).

Files

48 items
  • generator.py

    27d0bc3403f8

    72.6 KB

  • tempo_gen/synthetic_generation/generator_params.py

    7a56c17ed95c

    28.5 KB

  • tempo_gen/synthetic_generation/forecast_pfn_prior/forecast_pfn_generator.py

    c966f0c3f70e

    26.6 KB

  • tempo_gen/synthetic_generation/ornstein_uhlenbeck_process/ou_generator.py

    e16a12da86d4

    21.2 KB

  • tempo_gen/data/frequency.py

    e1d05360cf76

    19.8 KB

  • tempo_gen/synthetic_generation/steps/step_generator.py

    46fd03163202

    16.2 KB

  • tempo_gen/synthetic_generation/spikes/spikes_generator.py

    51a9e654d9e9

    12.0 KB

  • tempo_gen/synthetic_generation/cauker/cauker_generator.py

    b31920e4b03e

    11.1 KB

  • tempo_gen/synthetic_generation/anomalies/anomaly_generator.py

    54f9f09d2c2f

    10.6 KB

  • tempo_gen/synthetic_generation/sine_waves/sine_wave_generator.py

    be70ffc7003b

    10.5 KB

  • tempo_gen/synthetic_generation/sawtooth/sawtooth_generator.py

    db53d7d153a7

    8.1 KB

  • tempo_gen/synthetic_generation/gp_prior/gp_generator.py

    baa560eb16f2

    7.8 KB

  • README.md

    6d8e3e7adfe2

    6.7 KB

  • tests/test_generator_contract.py

    28c006645820

    6.5 KB

  • tempo_gen/synthetic_generation/forecast_pfn_prior/forecast_pfn_generator_wrapper.py

    a74099784bfd

    6.3 KB

  • tempo_gen/synthetic_generation/gp_prior/utils.py

    c989f9018093

    5.6 KB

  • tempo_gen/synthetic_generation/kernel_synth/kernel_synth.py

    cd6e9a2698c5

    4.8 KB

  • tempo_gen/synthetic_generation/sine_waves/sine_wave_generator_wrapper.py

    d23e2fe634d8

    4.7 KB

  • tempo_gen/synthetic_generation/abstract_classes.py

    51e093309f5e

    4.2 KB

  • tempo_gen/synthetic_generation/sawtooth/sawtooth_generator_wrapper.py

    17e380172fd1

    3.6 KB

  • tempo_gen/synthetic_generation/utils.py

    2f21c7fd0d75

    3.2 KB

  • tempo_gen/synthetic_generation/kernel_synth/kernel_generator_wrapper.py

    82dfa62456c5

    2.8 KB

  • tempo_gen/synthetic_generation/cauker/cauker_generator_wrapper.py

    abd60beb167e

    2.8 KB

  • tempo_gen/synthetic_generation/gp_prior/gp_generator_wrapper.py

    f2cdef7edabe

    2.5 KB

  • tempo_gen/synthetic_generation/forecast_pfn_prior/utils.py

    38db51f218da

    2.4 KB

  • tempo_gen/data/containers.py

    e39baa2692e0

    2.4 KB

  • tempo_gen/synthetic_generation/anomalies/anomaly_generator_wrapper.py

    76a847d8d3a9

    2.1 KB

  • tempo_gen/synthetic_generation/spikes/spikes_generator_wrapper.py

    b530f48acb0a

    2.0 KB

  • tempo_gen/synthetic_generation/steps/step_generator_wrapper.py

    03ca76dfc341

    2.0 KB

  • config.json

    43f07488a877

    1.7 KB

  • tempo_gen/synthetic_generation/ornstein_uhlenbeck_process/ou_generator_wrapper.py

    b8d945daa2b2

    1.4 KB

  • requirements.txt

    45d969a15738

    1.0 KB

  • tempo_gen/synthetic_generation/forecast_pfn_prior/series_config.py

    8452ae57fefe

    958 B

  • tempo_gen/data/constants.py

    1385d70836c0

    622 B

  • tempo_gen/synthetic_generation/gp_prior/constants.py

    a62f654280b0

    559 B

  • tempo_gen/synthetic_generation/__init__.py

    46c7f5a5352c

    66 B