Go very deep
Apply one learned block repeatedly. The weights count once; the runtime does not.
def refine(self, h):
for _ in range(self.depth):
h = self.shared_block(h)
return hSingle-file contract
Upload one submission.py, then choose a practice dataset or the ranked Hard evaluation.
Artifact: one UTF-8 file named submission.py, up to 256 KiB. Imports may use PyTorch, the public repository modules, and pinned evaluator dependencies—no extra files or installs.
Model factory: receives only tensor shapes, I/O requirements, and the model-state ceiling. Choose any depth or internal recurrence; return an nn.Module with matching config.
Training loss: optionally turn final logits, auxiliary outputs, and current labels into one scalar loss. The evaluator performs one backward pass.
04Optimizer factory: receives the model, per-seed H100 time allowance, and device type. Include every trainable parameter exactly once; custom optimizers and schedules are welcome.
05Use the whole machine: optimizer state, activations, memory tokens, and temporary workspace may use available VRAM. An OOM or timeout fails the run; only persistent model state is capped.
06Evaluator boundary: data, sampling, batches, one forward, one backward, clipping, optimizer cadence, deadline, final evaluation, and score remain fixed.
from benchmark import ModelSpec, OptimizerSpec, OptimizerBundle, Submission, assert_model_state
def build_model(spec: ModelSpec):
model = MyModel(spec)
assert_model_state(model, spec) # parameters + persistent buffers
return model
def build_optimizer(model, spec: OptimizerSpec):
optimizer = MyOptimizer(model.parameters())
scheduler = MySchedule(optimizer, spec.training_time_seconds)
return OptimizerBundle(optimizer, scheduler=scheduler)
def training_loss(logits, labels, auxiliary):
return my_loss(logits, labels, auxiliary)
SUBMISSION = Submission(
build_model=build_model,
build_optimizer=build_optimizer,
training_loss=training_loss, # optional
)You define all of it. The evaluator does not supply depth tiers or grade a claimed layer count. Build a fixed-depth network, a recurrent model, a learned halting system, nested refinement, or something we have not named. The benchmark measures the final model it receives.
Depth is a means, not the metric. “10,000 layers” earns nothing on its own, so there is no depth-definition reward hack. The competition asks for the best measured accuracy obtainable with the same persistent model-state ceiling and H100 time. The depth-versus-update tradeoff is part of the research.
Apply one learned block repeatedly. The weights count once; the runtime does not.
def refine(self, h):
for _ in range(self.depth):
h = self.shared_block(h)
return hCycle a fixed bank of blocks, route tokens, or alternate update types.
def refine(self, h):
for step in range(self.depth):
block = self.blocks[step % len(self.blocks)]
h = block(h)
return hUse a curriculum, learned halting, or different work per example.
def refine(self, h):
for step in range(self.max_depth):
h = self.update(h)
if self.should_halt(h).all():
break
return h