alakazamworld/doom-dungeon-hg
on Hugging Face. The published denoiser.onnx is byte-identical
(sha256-verified) to the checkpoint the Train exam history is built on, so a
policy trained locally against it is training against the same dream.
Why train locally
- Speed: your GPU via WebGPU or ONNX Runtime beats the serving VM’s CPU by a wide margin, and your RL loop runs at native speed with zero request latency.
- Cost: dream rollouts on your hardware are free. You only use Train for what only Train can do: the frozen exam.
- Freedom: bring any training algorithm. The API’s CMA-ES is one recipe, not a requirement.
The split
What to match locally
For local training that transfers to the exam:- Checkpoint parity: use the HF weights unmodified (
sha256published on the model page). - Reset blindness: never sense or score the first ~2 steps after a world
reset (the world model settles;
LocalDreamEnvflags themsensor_valid=0). The physics exam has no such window (it senses from tick 0), so train a policy that works without depending on blindness. - Policy format: certify either a 9-float controller (
genome9) or your own policy as a sandboxed Python module implementing the samereset/actcontract the local gym uses.
Certify a locally-trained champion
Exam-only certification runs through the same jobs API:train.gens = 0 with
your genome as train.parent skips training and runs the frozen exam on your
champion directly.
For step-level training against hosted worlds (robot/epuck, SNN observation
contract) use the live simulation gym at
/v1/sim/sessions. A step-level gym against the doom dream specifically
exists as a design spec but is not live; for the doom world, local training
on the public weights is the supported fast path today.
