Abstract#
Neural Architecture Search is a natural MDLxDCC arena. A NAS search space is not just a set of candidates; it is a structured landscape. If winning architectures share motifs, families, edge patterns, local corridors, or “avoid these losers” signatures, an MDLxDCC controller should be able to detect those signals and spend less budget on blind mutation.
The uploaded NAS arena is not a final benchmark-result paper yet. Its current public value is better framed as a runnable architecture-search laboratory: Phase A detects structure and builds routing assets; Phase B tests whether governance laws, drain/fovea navigation, and MDL-ranked selectors can beat simple baselines under fixed budgets.
1. Why this page exists#
The existing arena hub already mentioned “NAS / Architecture Search,” but only as a short card. That under-represents the work. The attached ZIP contains a full modular Python arena with benchmark adapters, sensors, laws, diagnostics, checkpointing, CSV/JSON exports, and a controlled scalability wrapper.
2. Arena design#
| Layer | What the code does | Why it matters |
|---|---|---|
| Search spaces | nas_space.py defines NATS-Bench-201 style operations and a NAS-Bench-101 canonical adapter. | Separates the arena method from one benchmark substrate. |
| Benchmark adapters | nas_bench.py supports synthetic runs, NATS/NAS-Bench-201 APIs, and NAS-Bench-101 tables. | Allows smoke tests without external data and stronger tests when benchmark data exists. |
| Sensors | nas_sensors.py contains LZ76, entropy, affinity, signed-affinity, family/router, physics, flood/rain/drain, and transform-persistence sensors. | Turns search traces and architecture structure into selectable control signals. |
| Laws | nas_laws.py includes random/greedy/local/evo baselines plus DCC, staged routing, physics allocators, drain navigation, fovea laws, and poly-greedy variants. | Lets MDL compare simple policies against richer governance policies. |
| Diagnostics | nas_diag.py adds holdout tests, permutation nulls, family split, macro reverse-engineering, drain-vs-greedy, tiebreak, and trajectory-stability diagnostics. | Prevents the arena from turning every apparent signal into a claim. |
3. Phase A / Phase B workflow#
Phase A — structure discovery
Phase A asks whether the architecture space contains reusable signal before spending heavily on governance search. It scans affinity sensors, compares top-vs-random controls, runs holdouts, checks loser-avoidance via negativa, computes signed affinity, tests family splits, and prepares poly/router assets.
python nas_arena.py --synthetic --phase-a --budget 20 --count 5 --workers 1
Phase B — governed search arena
Phase B tests the actual arena question: under a fixed evaluation budget, which sensor × law pairs find better architectures, with better MDL, than simple baselines? It supports broad category filters such as baseline, governance, poly, drain, and transform.
python nas_arena.py --synthetic --phase-a --phase-b --cat drain,baseline --budget 30 --count 5 --workers 1 --resume
| Output | Purpose |
|---|---|
nas_phase1_phase_a_v19_modular.csv/json | Phase A rows, signal summary, null checks, and router/poly metadata. |
nas_phase1_phase_b_v19_modular.csv/json/txt | Phase B leaderboard, best baseline, best governance, budget sweep, and diagnostics. |
| checkpoint files | Resume support for longer searches. |
4. Noise-dimension scalability test#
The strongest built-in stress test is nas_arena_nb101_noise.py. It wraps NAS-Bench-101 with irrelevant dimensions. Accuracy still depends only on the original architecture dimensions, but the mutation/search surface grows by 5^k.
| Noise dimensions | Effective expansion | Interpretation |
|---|---|---|
k=3 | 423k × 125 ≈ 52.9 million | Small controlled curse-of-dimensionality test. |
k=4 | 423k × 625 ≈ 264.8 million | Good first public stress level. |
k=6 | 423k × 15,625 ≈ 6.6 billion | Large scale-up without changing the real signal. |
k=8 | 423k × 390,625 ≈ 165.4 billion | Extreme controlled noise arena. |
5. Code capsule#
This page ships with a cleaned public code capsule: Python source files plus README, without __pycache__. Publish run outputs separately before making performance claims.
| Module | Role |
|---|---|
nas_arena.py | entry point |
nas_phase.py | Phase A / Phase B orchestration |
nas_space.py | NATS/NB101 search-space definitions |
nas_bench.py | synthetic, NATS-Bench-201, and NAS-Bench-101 benchmark adapters |
nas_sensors.py | sensor catalog |
nas_laws.py | law / controller catalog |
nas_diag.py | diagnostics and null tests |
nas_runner.py | variant execution, checkpointing, scoring helpers |
nas_arena_nb101_noise.py | NB101 irrelevant-noise-dimension wrapper |
6. Honest limits#
- This is currently a code-capsule page, not a final benchmark-results paper.
- External NAS benchmark data is not included in this page package.
- Any “beats baseline” statement should be tied to exact seed, budget, workers, benchmark version, search metric, final metric, and full CSV/JSON outputs.
- The noise-dimension wrapper is a controlled scalability test, not proof that the same behavior holds on every native large NAS space.
7. Next reproducibility move#
The best next move is a small, clean, public run pack:
- Run synthetic Phase A + Phase B as a zero-dependency smoke test.
- Run one NATS-Bench-201 / NAS-Bench-101 benchmark if local data is available.
- Run one NB101 +
k=4noise-dimension stress test. - Publish the exact command, CSV/JSON outputs, top leaderboard rows, baseline-vs-governance delta, budget sweep, and failure notes.
If the noise test survives, NAS becomes a strong public example of the MDLxDCC claim: search improves when the controller learns what structure matters and what dimensions are only noise.
Version v0.1 page · June 11, 2026 · NAS arena page added as a code-capsule evidence lane. Performance claims intentionally deferred until a clean public run bundle is attached.