aster0.1 GitHub

Parallel hyperparameter optimization for stochastic simulations

Aster is an open-source research library investigating adaptive replication allocation: how to reduce simulation work while preserving the quality of the selected configuration.

Research approach

Parallel evaluation
Independent replications run across local worker processes.
Adaptive allocation
Matched comparisons guide which configurations receive more work.
Independent audit
Evaluate the selected configuration with a separate seed namespace.

Reproduce the example

Clone the repository and run the synthetic comparison locally. A laptop with two available CPU workers is enough for this example.

Install from source · macOS / Linux
git clone https://github.com/kenchengkc/aster-hpo.git
cd aster-hpo
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .
python examples/noisy_quadratic.py --workers 2

The example writes JSON to results/smoke/, then exits. This website displays saved files; visiting it does not start a computation.

Scheduling APIPython
from aster_hpo import (
    Float, ReplicationRace,
    Study, sample_configs,
)

# objective(config, replication) → loss
if __name__ == "__main__":
    configs = sample_configs(
        {"x": Float(-2, 2)}, count=16, seed=17,
    )
    study = Study(
        configs,
        scheduler=ReplicationRace(
            checkpoints=(3, 9, 27),
        ),
        workers=2, seed=17,
    )
    result = study.optimize(objective)
Complete runnable example

Preliminary experiment

The same 16 configurations, evaluated by two schedulers. Each square below is one completed objective evaluation in the saved run.

noisy_quadratic.py2 workers · seed 17 · 16 Sep 2026

Full budget

432 evaluations
Full budget: all 16 candidates receive 27 evaluations, totaling 432.

Replication race

72 evaluations
Replication race: candidate 00 receives 27 evaluations; the other 15 candidates each receive 3, totaling 72.
Completed evaluation Not allocatedRows: candidates · Columns: replications
Figure 1. Allocation in one saved run. Both schedulers selected candidate 00 (x ≈ 0.08794). Each selected candidate received another 100 independent audit evaluations, excluded from the figure.

What this shows

The scheduler stopped 15 candidates early and selected the same winner as the full-budget baseline in this run. Both audit means were 0.02936, with standard error 0.01103.

What remains untested

This cheap objective is dominated by process startup. One seed cannot establish a speedup or quality guarantee. Expensive workloads and repeated comparative experiments are planned.

Method and implementation

Design notes ↗

A small research runtime built around one question: which configuration should receive the next replication?

  1. Sample

    Generate a candidate pool from typed search spaces.

    sample_configs()
  2. Allocate

    Continue or prune candidates at replication checkpoints.

    Study + scheduler
  3. Execute

    Evaluate objectives in local worker processes.

    ProcessPoolExecutor
  4. Audit

    Lock the selection, evaluate new seeds, and export results.

    audit() · result.save()

Statistical boundaries

ReplicationRace uses a heuristic pruning rule based on paired outcomes and a standard-error margin. Repeated inspection and adaptive peer selection mean this is not a formal confidence-sequence guarantee. Audit statistics are descriptive; they are not a non-inferiority test.

Implementation details and current limits

Training, shared-scenario, and audit randomness use separate seed namespaces. JSON exports include observations, pruning decisions, timing, and failures. Exceptions and non-finite losses fail the affected trial.

The current implementation has no distributed executor, persistent checkpoints, automatic retries, or deadlines. The v0.1 snapshot was verified with 37 tests; current CI results are on GitHub.

Research agenda

Full roadmap ↗
Implemented

Local replication racing

Parallel evaluation, paired comparisons, independent audit, and inspectable JSON results.

Planned

Reliable experiment execution

Separate scheduling from execution. Add persistent state, recovery, cancellation, and compute budgets.

Planned

Controlled comparisons

Compare full-budget search and established asynchronous HPO baselines across noise levels and seeds. Measure wall time, compute cost, and winner regret.

Planned

Neural hedging with transaction costs

Tune a small hedging policy on simulated price paths. Assess optimization cost and independently evaluated hedging quality. No financial benchmark is completed yet.

Interested in scheduling, stochastic simulation, or sequential inference? Contributions and technical feedback are welcome ↗