Skip to content

Trials

A trial is one container execution with one parameter set. It should run your workload once, emit metrics, and exit.

Keep each trial deterministic enough to compare. If you need randomness, seed it from an explicit parameter or a stable experiment setting so results are explainable.

  1. Schedule: The platform selects a parameter set from the search space.
  2. Start: Your image starts with managed CLI arguments and platform env vars.
  3. Complete: Your workload finishes and exits with a status code.
  4. Collect: Matching hpo.metrics.* lines become trial metrics.
Phase Statuses
Active created, queued, admitted, running
Terminal succeeded, failed, cancelled, timed_out, preempted, lost

A successful optimization step needs a terminal success and the configured objective metric keys present in collected metrics.

Every trial receives:

HYPEROPTIMIZER_TRIAL_ID
HYPEROPTIMIZER_EXPERIMENT_ID
HYPEROPTIMIZER_ORG_ID

Use these for logging or unique output paths. Do not set custom env vars with the HYPEROPTIMIZER_ prefix.

Do not batch multiple backtests

A trial should represent one parameter set. Batching several backtests inside one container hides the data the optimizer needs.

Do not write metrics only to files

HyperOptimizer collects metrics from stdout. You can write artifacts too, but metric lines must be printed.

Do not mutate shared state unsafely

Parallel trials may run at the same time. Avoid shared output paths unless they include trial-specific identifiers.

Do not ignore failures

If a parameter set is invalid, fail clearly or print a penalty metric your objective can understand.