Download offload/prefill_cause2/MATCH.md from ProprietaryLegal/dsv41-offload: direct link, hf CLI and curl.
- Browser
- Download file 8.44 kB
-
https://huggingface.co/ProprietaryLegal/dsv41-offload/resolve/main/offload/prefill_cause2/MATCH.md
- Command line
-
hf download hf://ProprietaryLegal/dsv41-offload/offload/prefill_cause2/MATCH.md
-
curl -L -o MATCH.md https://huggingface.co/ProprietaryLegal/dsv41-offload/resolve/main/offload/prefill_cause2/MATCH.md
PF1-CAUSE2 item 3: the matched window (pf1_window.py --phase match)
Status: CPU-rehearsed on Controller with fakes; not run. Coordinator (Deepseek / coordinator) execution only. This reading is pre-registered: written 2026-10-26 before any match window. MEASURED / ESTIMATED as in DIFF.md.
Plain language
- One HOLD, three arms at max_model_len 524,288, each a fresh start: off-524 (production code, exactly W1/W3's OFF arm), cause-524 (exactly CW's cause arm: PF1-R2 + MoE-half spans, TRANSIENT on), fix-524 (production code + the item-2 fence switch, untraced). Each runs CW's timed protocol: the 32K warm-up, then the 150K cold request twice (1,500 output tokens, the same prompts and cache salts in every arm).
- After its timed requests, off-524 and fix-524 also answer the six W5 greedy prompts (answer hashes compared 6/6) and an 8,192-token cold prompt for the first-token top-20 distribution (off twice = the A-A floor, fix once).
- The runner reads the result by the fixed rule below and always restores production through W8 (start/check/close, greedy 6/6 against K1-post), whether the arms complete or any guard stops them.
- ESTIMATED β 42-43 min HOLD, production down β 42 min.
Coordinator command (after review and integration; never run by a lane)
WINDOW_COORDINATOR=Deepseek/coordinator python3 -m offload.launch.windows.pf1_window --execute --phase match \
--cause-from /opt/dsv41/campaigns/DSV41-OFFLOAD/PF1-CW-20261026T024340Z \
--out /opt/dsv41/campaigns/DSV41-OFFLOAD/PF1-MATCH-<UTC> \
--expected-experiment-commit <reviewed full sha> [--stage-bundle]
python3 -m offload.launch.windows.pf1_window --phase match # dry plan: no command, network or file
--cause-from (required with, and only with, --phase match) refuses unless window CW is COMPLETE and restored, its
evidence hashes still match, and the trace + cause pins about to be mounted equal the 10 hashes CW's cause-524 mounted on
both ranks (so cause-524 repeats CW's bytes). No prior OFF gate is used: off-524 is this HOLD's own control.
What the runner adds (shared HOLD / guards / restore / reap; existing phases unchanged)
| Piece | Match behaviour |
|---|---|
| Arms | MATCH_ARMS: off-524 = OFF_ARMS[1], cause-524 = CAUSE_ARMS[1] (same identity rules as their phases), fix-524 (Arm(fix=True), config PF1-fix.env) |
| Pins | preflight MATCH_PIN_FILES = cause pins + PF1-fix.env, prefill_cause2/{BASES.json,OVERLAY.sha256} |
| Staging | trace, cause and fix sources built locally, hash-checked, copied to the experiment checkout's generated/ only if absent; an existing different tree STOPs |
| Identity (fix) | mounts = production + exactly the 4 fence pins (3 MoE files replaced, helper added); env = production + REQUIRED=1 + VLLM_DSV41_MOE_FENCE=1 (its absence, any trace switch or a production value STOPs); argv port/cap only; in-container verifier 14 sources |
| Every arm | host-parity reads, MemAvailable β₯ 5 GiB before its start, per-arm minima kept in arm-memory.json even after a STOP |
| Checks | offload.prefill_cause2.match_requests after the timed cells of off/fix: identity row + 6 greedy rows + 2/1 logit rows, hashes and numbers only (no text) |
| Reading | match_reading() β summary.json match (verdict, speed, safety, TTFTs, medians, spreads, thresholds) |
| Restore | unchanged W8 path; reap matches start_exp.sh with any of `PF1-(window |
Guards unchanged: MemAvailable β₯ 4 GiB on both Sparks always, swap growth after readiness, telemetry liveness, foreign demand on :8001, STOP file, 75-min submission / 80-min abort bounds, 8-min arm budget check before each start.
Pre-registered reading (fixed; MATCH_THRESHOLDS)
Let off, cause be the median 150K TTFT of off-524 and cause-524 (2 reps each, same HOLD).
| Verdict | Condition (all reps) | Meaning | Next |
|---|---|---|---|
| CONFIRMED | every arm's rep spread β€ 3 %; both cause reps β€ 0.80 Γ off; both fix reps within Β±5 % of cause and β€ 0.80 Γ off; greedy 6/6 identical and logit floor PASS | the event records in the MoE half are the effective difference (item 1 D1); the switch removes the 524,288 gap | K1-PROMOTE memory/promotion rows at 524,288 with the switch; 300K points; then narrow the 25 sites |
| REFUTED | spreads β€ 3 %; cause reproduces (as above); both fix reps β₯ 0.95 Γ off | the records alone do not do it; the trace runtime's host work (D2-D5) does | fix candidate 2: the host-side part (bookkeeping pace / allocator read) as its own switch |
| CAUSE_NOT_REPRODUCED | spreads β€ 3 %; a cause rep > 0.80 Γ off | CW's fast 524,288 was state, not code | the alternating off/cause arm series (state dependence) |
| UNSAFE | greedy < 6/6 or logit floor fails (any timing) | the switch changed outputs: never adopt | diagnose; no promotion |
| AMBIGUOUS | anything else (incl. spread > 3 %, fix between the bands, checks not run) | no decision | repeat or redesign |
A check artifact that exists but is incomplete (not 6 greedy rows, not a/aa + b logit rows, different logit prompts)
raises: the window STOPs with no verdict, after the timed cells are already saved in summary.json, and restores.
Safety rule: greedy = the W5 prompts' answer SHA-256 and completion tokens equal for all six, fix vs off; logit =
up2_checks.numerical(off_a, off_aa, fix_b): coarse KL(off β fix) over the top-20 + OTHER β€ max(0.005, 2 Γ KL(off_a β
off_aa)) and common captured mass β₯ 0.99, same exact 8,192-token prompt, every probe cold (cached_tokens 0).
These are experiment readings, not a promotion. Reference values (MEASURED, other HOLDs): off-524 150K 90.8-95.8 s (W1, W3), cause-524 69.20 s and T0 69.77 s (CW), off-327 68.9-71.2 s; a CONFIRMED result looks like off β 91 s, cause β fix β 69-70 s.
ESTIMATED timeline (MEASURED inputs: W1/W3/CW cmd/ file times and request total_s)
| Step | MEASURED basis | ESTIMATED here |
|---|---|---|
| preflight, HOLD, snapshot, idle | 0.26-0.32 min (W3, CW) | 0.3 min |
| stage 3 overlays + first stop/start | first arm start incl. staging 6.51 (W3) / 6.97 min (CW) | in arm starts |
| arm start (stop β ready), each | off 6.25-6.51, cause 6.68-6.97 min | 6.5 / 6.7 / 6.5 min |
| identity, pins, parity, logs, each | 0.15-0.17 min | 0.17 min Γ 3 |
| off-524 warm-up + 150K Γ2 | 21.1 + 118.7 + 118.3 s total_s (W3) + ~5 s | 4.4 min |
| cause-524 warm-up + 150K Γ2 | 17.1 + 97.6 s (CW, one rep) | 3.6 min |
| fix-524 warm-up + 150K Γ2 | as cause (if fast) / as off (if not) | 3.6-4.4 min |
| checks off / fix | 1,800 greedy tokens at ~53 tok/s (CW decode: 1,500 in 28.4 s) + 3/2 short-to-8K prefills | ~1.0 min each |
| collect (+ cause trace copy) | 0.01-0.02 min | 0.05 min Γ 3 |
| restore start / check / close | 7.35 + 0.32 + 0.03 min (CW) | 7.7 min |
| HOLD total | β 42-43 min (production down β 42) |
Memory (MEASURED, CW arm-memory.json): cause-524 minima 6.22 GiB (sparkhead) / 7.53 GiB (sparkworker); the fence adds no
caching-allocator memory. Every guard line is unchanged.
CPU rehearsal (offload/launch/windows/tests/test_pf1_match.py, 36 tests)
Pure reading (every verdict, unpaired/incomplete cells and checks refuse); fix identity (+ missing switch, trace env,
replaced/missing mount, production switch); 14-pin verifier; --cause-from against the real CW files and a tampered
copy; reap patterns; Backend-fake order and every STOP point (HOLD, snapshot, staging, each arm's start / requests /
collect) ending in restore (production stopped iff an arm started); restore failure reported; the real Live backend
through fake commands: full rehearsal (3 starts, 2 check drivers after the stats, trace copy for cause only, staging of
all three trees, arm memory, reap pattern, HOLD purpose, no answer text in artifacts) and fix-arm faults (check driver
fails, STOP file, interrupt, 80-min bound, 13-pin verify, < 5 GiB start floor, memory/swap/GPU-telemetry trips during
cause-524, different staged fix tree) β every one ends in W8 start/check/close (or check/close before any start);
the check driver itself against fake HTTP (W5 bodies, hashes only, ledger, cold-only refusal, dry run, refusals).
Not covered on CPU: native timing, the real W8 restore, real Spark guards, in-container imports of the fence helper.