Skip to main content
This page walks through the minimal, valid PRISM submission shipped in the source repository: a weight-tied ~1.05M-parameter decoder transformer split into the two-script contract. Source: examples/tiny-1m/README.md:1-13.

Layout

  • architecture.py exposes build_model(ctx) and is pure: it never reads data, opens files, or touches the network.
  • training.py exposes train(ctx): it forces the seed, builds the model via architecture.py, reads the read-only locked train split from ctx.data_dir, tokenizes with the pre-staged gpt2 reference tokenizer (offline), runs a single-node multi-GPU-safe loop, and writes only under ctx.artifacts_dir.
Source: examples/tiny-1m/README.md:6-20.

The manifest

This manifest omits kind, so the submission defaults to the full mode. See Submitting to PRISM for the three modes. Source: examples/tiny-1m/prism.yaml:1-5; src/prism_challenge/evaluator/components.py:22.

A minimal architecture

Source: docs/submissions.md:137-153.

A minimal training entrypoint

The container resolves architecture.py::build_model and training.py::train, forces the seed, launches torchrun, and captures the online loss itself. Source: docs/submissions.md:157-168.

How it is scored

The challenge re-executes train(ctx) under a forced random initialization on the locked FineWeb-Edu train split, captures the single-pass online (predict-then-train) loss itself, and computes the prequential bits-per-byte score with a held-out delta tie-breaker. Any value this submission reports and any manifest it writes are ignored; the challenge authors prism_run_manifest.v2.json. Source: examples/tiny-1m/README.md:22-27.

Submit the bundle

Submit the directory as a .zip bundle through the public route (when enabled) or let the BASE proxy forward it in production.
Source: examples/tiny-1m/README.md:29-33; src/prism_challenge/routes.py:32-33.
For the field-by-field contract, see Submitting to PRISM and Providing context. For the limits this example respects, see Constraints.