Hippius
maincontainerPublic

my-cascade-gen/tope-tensor

sha256:c3efa1a1ad62fb726b82e3d2b8dcc02e395a8c36d54c4b8aa29c6457e9f51582·Indexed Jul 15, 2026

Layers

48

Total size

310.7 KB

Files

48

Quantization

README.md

6.9 KB

aurora-mix-v3 — cascade challenger generator

A fifteen-family synthetic time-series prior redesigned around TempoPFN's full pipeline (arXiv 2510.25502). numpy + scipy only — no torch, no vendored package, one self-contained generator.py.

v3 over v2 — the streaming-prefix fix and the evidence rebalance:

  1. Stratified interleaved emission. The trainer's streaming feed modes (stream_cpu/stream_gpu) consume only a token-budget prefix of the stream. v1/v2 emitted family-blocked, so only the first family (kernel_gp) ever trained — the deployed valor/aurora-mix was effectively a pure-GP generator (heat rank 3, rel 1.143). v3 interleaves (the same stratified scheme the reigning king ares-v3 uses), so every prefix carries the configured mixture — verified: all 15 families present at their configured shares in a 5% prefix.
  2. Evidence-based weights (config.json, no code change needed to iterate): ~45% anchored on the two throne-proven families — trend_seasonal 0.30 (the king holds 4 rounds with 100% tuned trend×seasonality composition) and kernel_gp 0.15 (our GP out-ranked the former king smoothgp) — ~22% on real-world-shape robustness (calendar/GARCH/intermittent), small live shares for the untested TempoPFN-gap trio. Rationale: the KOTH bootstrap-LCB rewards per-window consistency (this round's challenger was 14% better on mean and still lost with LCB −0.356), so uniform decency beats occasional brilliance.
  3. Post-transform degeneracy repair: count-rounding can no longer flatten a degenerate-repaired series back to zero-std.

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

    e1756d938541

    67.2 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

    be3d17c8e0d0

    6.9 KB

  • tempo_gen/synthetic_generation/forecast_pfn_prior/forecast_pfn_generator_wrapper.py

    2e24d027284c

    6.3 KB

  • tests/test_generator_contract.py

    fb18bb48d9f3

    5.9 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

    ecd1ce21d677

    1.6 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/data/__init__.py

    46c7f5a5352c

    66 B