|
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
8.44 kB
| # 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) | |
| ```bash | |
| 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|cause|fix).env` and the window's own HOLD opener | | |
| 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. | |