Silicon & kernels
Search that reaches below the framework: precision, memory layout, fusion, and the scheduling of work on the device. Small wins here multiply across every trial the loop runs.
Automating discovery takes more than a good model. It takes the silicon the trials execute on, the scheduler that places them, the models that propose them, and the harnesses that decide whether anything was learned. We build all four as one system.
Each layer exists so the one above it can stop worrying about something. When a layer works, nobody above it has to think about that problem again.
Search that reaches below the framework: precision, memory layout, fusion, and the scheduling of work on the device. Small wins here multiply across every trial the loop runs.
Queueing, placement, preemption and recovery so that thousands of trials share a finite cluster without starving each other or losing results to a restart.
Models that convert an objective and prior results into the next set of candidates — ranked, justified, and shaped to be worth the compute they will consume.
Harnesses that score every run against a fixed objective, and the surfaces that let a person inspect what happened and act on it. Unscored output is not a result.
A cycle is only as autonomous as its weakest hand-off. These are the steps we drive to zero human latency between, while keeping a person able to stop the line at every gate.
An autonomous loop is dangerously easy to fool. Most of our engineering effort goes into making it hard to fool ourselves: instruments that catch the specific ways a search lies to its operator.
| We measure | Instrument | Failure mode it catches |
|---|---|---|
| Delta against a frozen baseline | Baseline pinned per objective, re-scored at the end of each cycle | Drift, where a “win” is really a change to the measuring stick |
| Spread across seeds | Repeated runs of promoted candidates | Lucky single runs presented as improvements |
| Compute spent per gain | Cost accounting attached to every trial | Expensive noise: more compute, no more information |
| Held-out generalisation | Objectives the proposer never sees | Overfitting to the visible metric |
| Failure taxonomy | Classified error records for every discarded trial | Survivorship bias in the search history |
| Reproducibility | Versioned code, data references, environment digests | Results that cannot be replayed by anyone, including us |
Parallelism is where the theory meets the power bill. Three problems dominate everything else.
Trials differ wildly in size. Placement, batching and priority decide whether a cluster runs at 40% or 95% utilisation, and whether a small experiment waits behind a giant one.
Hardware fails, jobs are evicted, nodes are drained. Checkpointing and honest retry policy decide whether a cycle survives the night or quietly returns half its answers.
An autonomous loop will happily spend forever. Every objective carries a budget, and the scheduler enforces it before a trial starts, not after the invoice arrives.
We measure orchestration in one number: effective trials per hour at a fixed cost. It is the closest thing this stack has to a heartbeat.
State an objective and the space you are willing to explore. The system handles the rest of the cycle and hands back evidence, not a dashboard of noise.
Experiments as artefacts with identifiers, diffs and rollbacks — closer to continuous integration than to a notebook, so a good result can be shipped instead of admired.
The same interfaces are exposed to the system, which is what lets it optimise its own stack — our first and most demanding customer, with no patience for flaky tooling.
We are happy to talk architecture with people who have run experiments at scale — and to argue about scheduling.