"""D1-DRAFTADAPT task 1: how much acceptance is achievable at all at T=1 on the captured legal-v2a trajectories. python3 -m d1.ceiling --v1 /code/dspark --out d1/results/ceiling.json (run from offload/dspark of this worktree; CPU only; reads the proprietary captures, writes aggregates only) The captures hold no target logits. What they do hold, for every committed decode row, is the mean of the four mHC streams at the INPUT of target layers 37/38/39 (official model.py: main_hiddens.append(h.mean(dim=2))). Layer 39 is the last layer, and head.weight + norm.weight are on this host, so a "logit lens" softmax(head(rmsnorm(tap39)*norm)) is a proxy for the target's next-token distribution that skips only layer 39 and the learned mHC collapse. Two kinds of number come out: * BOUNDS that hold whatever the proxy's quality: for any predictor g computed from the context, the committed token (a T=1 sample of p_target) equals g with probability E[p_target(g)] <= E[max p_target]. So the lens' top-1 hit rate bounds the per-position ceiling from below, and the lens-greedy chain's committed-prefix match count bounds the perfect greedy drafter's accepted/round from below (the chain is itself a greedy drafter: if its first k-1 tokens were accepted, the committed prefix IS its draft prefix, so its lens at the next position is the right one). * ESTIMATES that assume the temperature-calibrated lens has the target's confidence: E[max p] per position and the smoothed perfect-greedy accepted/round sum_k E[prod_{i dict[str, torch.Tensor]: from safetensors import safe_open idx = json.load(open(os.path.join(CKPT, "model.safetensors.index.json")))["weight_map"] out = {} for n in names: with safe_open(os.path.join(CKPT, idx[n]), framework="pt") as f: out[n] = f.get_tensor(n).float() return out def rmsnorm(x: torch.Tensor, w: torch.Tensor) -> torch.Tensor: x = x.float() return x * torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + NORM_EPS) * w def boot(vals: list[float], groups: list[str], iters: int = 2000, seed: int = 0) -> dict: """Mean with a sample-level and a request-clustered 95% bootstrap interval.""" rng = random.Random(seed) n = len(vals) if not n: return {"n": 0} m = sum(vals) / n bs = sorted(sum(vals[rng.randrange(n)] for _ in range(n)) / n for _ in range(iters)) by: dict[str, list[float]] = {} for v, g in zip(vals, groups): by.setdefault(g, []).append(v) gl = list(by.values()) cs = [] for _ in range(iters): pick = [gl[rng.randrange(len(gl))] for _ in gl] tot = sum(len(p) for p in pick) cs.append(sum(sum(p) for p in pick) / tot) cs.sort() return {"n": n, "mean": round(m, 4), "ci95": [round(bs[int(.025 * iters)], 4), round(bs[int(.975 * iters)], 4)], "ci95_req_cluster": [round(cs[int(.025 * iters)], 4), round(cs[int(.975 * iters)], 4)]} def main() -> None: ap = argparse.ArgumentParser() ap.add_argument("--v1", required=True, help="V1-VERIFY offload/dspark dir (for verify.captures)") ap.add_argument("--out", required=True) a = ap.parse_args() sys.path.insert(0, a.v1) from verify.captures import CaptureSet # V1's asserted capture semantics, unchanged torch.set_num_threads(min(32, os.cpu_count() or 8)) cs = CaptureSet(CAPS) if cs.plumbing: raise RuntimeError(f"capture plumbing errors: {cs.plumbing[:3]}") reqs = sorted(r for r in cs.rows if "warmup" not in r) # warmup requests are synthetic: excluded everywhere rid = {r: f"req{i}" for i, r in enumerate(reqs)} # anonymised workload labels W = load_tensors(["head.weight", "norm.weight", "mtp.2.markov_head.embed.weight", "mtp.2.markov_head.head.weight"]) head, normw = W["head.weight"], W["norm.weight"] memb, mhead = W["mtp.2.markov_head.embed.weight"], W["mtp.2.markov_head.head.weight"] # ---- lens at every committed row with taps whose next position is committed (teacher-forced pairs) lens: dict[tuple[str, int], dict] = {} keys, X, Y = [], [], [] for r in reqs: rows = cs.rows[r] for p, row in rows.items(): if row.taps is not None and (p + 1) in rows: keys.append((r, p)) X.append(row.taps[2 * 5120:3 * 5120]) # tap of layer 39 input Y.append(rows[p + 1].tok) Xt = rmsnorm(torch.stack(X), normw) Yt = torch.tensor(Y) logits = torch.empty(len(keys), head.shape[0]) for i in range(0, len(keys), 128): logits[i:i + 128] = Xt[i:i + 128] @ head.t() groups_all = [rid[k[0]] for k in keys] def stats_at(tau: float, sel: list[int]) -> dict: lg = logits[sel] / tau lp = torch.log_softmax(lg.double(), -1) pr = lp.exp() mx, am = pr.max(-1) y = Yt[sel] lpy = lp.gather(1, y[:, None]).squeeze(1) ent = -(pr * lp).sum(-1) return {"top1": (am == y).double(), "maxp": mx, "nll": -lpy, "ent": ent, "argmax": am} def fit_tau(sel: list[int]) -> float: best = None for tau in [0.5 + 0.05 * j for j in range(41)]: nll = float(stats_at(tau, sel)["nll"].mean()) if best is None or nll < best[1]: best = (tau, nll) return best[0] # 2-fold by request: fit tau on two requests, apply to the other two (and vice versa) fold = {r: (i % 2) for i, r in enumerate(reqs)} taus = {} for f in (0, 1): taus[f] = fit_tau([i for i, k in enumerate(keys) if fold[k[0]] != f]) tau_of = [taus[fold[k[0]]] for k in keys] allsel = list(range(len(keys))) raw = stats_at(1.0, allsel) cal_parts = {} for f in (0, 1): sel = [i for i in allsel if fold[keys[i][0]] == f] cal_parts[f] = (sel, stats_at(taus[f], sel)) cal = {k2: torch.empty(len(keys), dtype=torch.float64) for k2 in ("top1", "maxp", "nll", "ent")} for f, (sel, st) in cal_parts.items(): for k2 in cal: cal[k2][sel] = st[k2].double() for i, k in enumerate(keys): lens[k] = {"argmax": int(raw["argmax"][i]), "maxp_raw": float(raw["maxp"][i]), "maxp_cal": float(cal["maxp"][i]), "top1": int(raw["top1"][i]), "nll_raw": float(raw["nll"][i]), "ent_raw": float(raw["ent"][i]), "nll_cal": float(cal["nll"][i]), "ent_cal": float(cal["ent"][i]), "P": k[1]} rep: dict = {"n_lens_pairs": len(keys), "warmup_requests_excluded": sum(1 for r in cs.rows if "warmup" in r), "requests": {rid[r]: {"rows": len(cs.rows[r]), "lens_pairs": sum(1 for k in keys if k[0] == r), "pos_range": [min(cs.rows[r]), max(cs.rows[r])]} for r in reqs}, "tau_fit_2fold": {f"fold{f}": round(t, 3) for f, t in taus.items()}} def summ(st: dict, sel: list[int] | None = None) -> dict: idx = sel if sel is not None else allsel g = [groups_all[i] for i in idx] return {k2: boot([float(st[k2][i]) for i in idx], g) for k2 in ("top1", "maxp", "nll", "ent")} rep["lens_all_positions"] = {"raw_tau1": summ(raw), "calibrated_2fold": summ(cal)} # ---- per round: lens-greedy chain vs engine K2 drafts vs native ref drafter (teacher-forced), same trajectories samples = [] for s in cs.samples: if any(t is None for t in s.realized): continue # V1's scored set requires all five committed tokens (match_len None otherwise) samples.append(s) per = [] for s in samples: rec = {"g": rid[s.req], "P": s.P} k2 = 0 while k2 < BLOCK and s.engine_drafts[k2] == s.realized[k2]: k2 += 1 rec["k2"] = k2 L = [lens.get((s.req, s.P + 1 + i)) for i in range(BLOCK)] rec["lens_ok"] = all(x is not None for x in L) if rec["lens_ok"]: n = 0 while n < BLOCK and L[n]["argmax"] == s.realized[n]: n += 1 rec["lens_chain"] = n surv, sm = 1.0, 0.0 for i in range(BLOCK): # smoothed: prob of reaching i (indicator) times calibrated max p at i sm += surv * L[i]["maxp_cal"] surv *= float(L[i]["argmax"] == s.realized[i]) rec["lens_smoothed_cal"] = sm rec["lens_maxp_cal"] = [x["maxp_cal"] for x in L] rec["lens_maxp_raw"] = [x["maxp_raw"] for x in L] rec["lens_top1"] = [x["top1"] for x in L] # native FP32 reference drafter, teacher-forced on the committed prefix (V1 dumps) fp = os.path.join(REF_DUMPS, s.key + ".pt") if os.path.exists(fp): d = torch.load(fp, map_location="cpu", weights_only=False) prev = d["variants"]["realized"]["prev"] ql = d["base_logits"] + memb[torch.tensor(prev)] @ mhead.t() lq = torch.log_softmax(ql.double(), -1) y = torch.tensor(s.realized) rec["ref_tf_top1"] = (lq.argmax(-1) == y).int().tolist() rec["ref_tf_nll"] = (-lq.gather(1, y[:, None]).squeeze(1)).tolist() rec["ref_tf_maxq"] = lq.exp().max(-1).values.tolist() rec["ref_tf_ent"] = (-(lq.exp() * lq).sum(-1)).tolist() rec["ref_own_chain"] = 0 while rec["ref_own_chain"] < BLOCK and d["drafts"][rec["ref_own_chain"]] == s.realized[rec["ref_own_chain"]]: rec["ref_own_chain"] += 1 if rec["lens_ok"]: # where drafter and lens disagree, which one the target wrote (diagnostic of headroom) rec["disagree"] = [] for i in range(BLOCK): qa, la, t = int(lq[i].argmax()), L[i]["argmax"], s.realized[i] if qa != la: rec["disagree"].append((int(qa == t), int(la == t))) rec["kl_lenscal_ref"] = None # filled below only if cheap; lens full logits not kept per sample per.append(rec) def acc_table(lens_list: list[int]) -> dict: n = len(lens_list) surv = [sum(1 for x in lens_list if x >= k) / n for k in range(1, BLOCK + 1)] cond = [] for k in range(BLOCK): reach = sum(1 for x in lens_list if x >= k) cond.append(round(sum(1 for x in lens_list if x >= k + 1) / reach, 4) if reach else None) return {"n": n, "mean_accepted": round(sum(lens_list) / n, 4), "prefix_survival": [round(x, 4) for x in surv], "conditional": cond} both = [r for r in per if r["lens_ok"] and "ref_tf_top1" in r] g = [r["g"] for r in both] rep["rounds"] = {"n_scored": len(per), "n_with_lens_and_ref": len(both)} rep["rounds"]["engine_k2_all_scored"] = acc_table([r["k2"] for r in per]) rep["rounds"]["engine_k2"] = acc_table([r["k2"] for r in both]) rep["rounds"]["ref_own_chain"] = acc_table([r["ref_own_chain"] for r in both]) rep["rounds"]["lens_chain_LB"] = acc_table([r["lens_chain"] for r in both]) rep["rounds"]["lens_smoothed_calibrated_EST"] = boot([r["lens_smoothed_cal"] for r in both], g) rep["rounds"]["paired_lens_chain_minus_k2"] = boot([r["lens_chain"] - r["k2"] for r in both], g) rep["rounds"]["paired_lens_smoothed_minus_k2"] = boot([r["lens_smoothed_cal"] - r["k2"] for r in both], g) # teacher-forced per position (every round contributes at every position: unconditional on survival) tf = {} for name, key in (("ref_top1", "ref_tf_top1"), ("lens_top1", "lens_top1"), ("ref_nll", "ref_tf_nll"), ("ref_maxq", "ref_tf_maxq"), ("ref_entropy", "ref_tf_ent"), ("lens_maxp_cal", "lens_maxp_cal"), ("lens_maxp_raw", "lens_maxp_raw")): tf[name] = [round(sum(r[key][i] for r in both) / len(both), 4) for i in range(BLOCK)] dis = [x for r in both for x in r["disagree"]] tf["disagreements"] = {"n": len(dis), "ref_right": sum(x[0] for x in dis), "lens_right": sum(x[1] for x in dis)} rep["teacher_forced_per_position"] = tf # union headroom at position 1: either predictor right # ---- splits by context length (P) and request edges = [0, 2048, 8192, 16384, 32768, 10 ** 9] by_len = {} for lo, hi in zip(edges, edges[1:]): sub = [r for r in both if lo <= r["P"] < hi] if len(sub) < 20: continue by_len[f"P[{lo},{hi})"] = {"n": len(sub), "k2": round(sum(r["k2"] for r in sub) / len(sub), 3), "lens_chain_LB": round(sum(r["lens_chain"] for r in sub) / len(sub), 3), "lens_smoothed_EST": round(sum(r["lens_smoothed_cal"] for r in sub) / len(sub), 3), "lens_maxp_cal_pos1": round(sum(r["lens_maxp_cal"][0] for r in sub) / len(sub), 3)} rep["by_context_length"] = by_len by_req = {} for rq in sorted(set(r["g"] for r in both)): sub = [r for r in both if r["g"] == rq] by_req[rq] = {"n": len(sub), "k2": round(sum(r["k2"] for r in sub) / len(sub), 3), "lens_chain_LB": round(sum(r["lens_chain"] for r in sub) / len(sub), 3), "lens_smoothed_EST": round(sum(r["lens_smoothed_cal"] for r in sub) / len(sub), 3), "P_median": sorted(r["P"] for r in sub)[len(sub) // 2]} rep["by_request"] = by_req os.makedirs(os.path.dirname(os.path.abspath(a.out)), exist_ok=True) with open(a.out, "w") as fh: json.dump(rep, fh, indent=1) print(json.dumps(rep, indent=1)) if __name__ == "__main__": main()