Download code/offload/dspark/d2/train/pilot_sample.py from ProprietaryLegal/dsv41-sampled-drafting: direct link, hf CLI and curl.
- Browser
- Download file 7.48 kB
-
https://huggingface.co/ProprietaryLegal/dsv41-sampled-drafting/resolve/main/code/offload/dspark/d2/train/pilot_sample.py
- Command line
-
hf download hf://ProprietaryLegal/dsv41-sampled-drafting/code/offload/dspark/d2/train/pilot_sample.py
-
curl -L -o pilot_sample.py https://huggingface.co/ProprietaryLegal/dsv41-sampled-drafting/resolve/main/code/offload/dspark/d2/train/pilot_sample.py
7.48 kB
| """Amendment-4 fixed pilot sample. CPU only; never reads model outcomes. | |
| The population is complete five-token rounds on the same fixed K2 trajectory | |
| used by G2. Reading one token vector per sequence avoids materializing taps for | |
| all non-sampled rounds. Keys and their hash stay in the private pilot plan. | |
| """ | |
| from __future__ import annotations | |
| import fcntl | |
| import hashlib | |
| import json | |
| import os | |
| from pathlib import Path | |
| import random | |
| import tempfile | |
| from typing import TypedDict | |
| from collections.abc import Iterable | |
| from safetensors import safe_open | |
| from .data import D2Blocks, sha256 | |
| from .evaluate import match_length | |
| from .replay import g1_drafts | |
| # Historical analytical fixtures remain readable; real plans require DEV_POPULATION. | |
| SPLITS = ("acap", "heldout_legal") | |
| DEV_POPULATION = ("dev", "heldout_legal") | |
| def population_splits(keys: Iterable[str]) -> tuple[str, ...]: | |
| if set(keys) == set(DEV_POPULATION): | |
| return DEV_POPULATION | |
| if set(keys) == set(SPLITS): | |
| return SPLITS | |
| raise ValueError("pilot population requires dev + heldout_legal (or historical analytical acap)") | |
| SAMPLE_SEED = 20261024 | |
| SAMPLE_LIMIT = 1000 | |
| class RoundKey(TypedDict): | |
| request: str | |
| P: int | |
| class Sample(TypedDict): | |
| schema: str | |
| seed: int | |
| limit: int | |
| manifest_sha256: str | |
| k2_sha256: dict[str, str] | |
| population_sha256: dict[str, str] | |
| population_rounds: dict[str, int] | |
| keys: dict[str, list[RoundKey]] | |
| sha256: str | |
| def hash_json(value: object) -> str: | |
| return hashlib.sha256(json.dumps(value, sort_keys=True, allow_nan=False, separators=(",", ":")).encode()).hexdigest() | |
| def key_hash(keys: list[RoundKey]) -> str: | |
| """Matches the scorer's ordered (request, position) population digest.""" | |
| return hash_json([(k["request"], k["P"]) for k in keys]) | |
| def validate_sample(sample: Sample, manifest_hash: str) -> None: | |
| if (sample.get("schema") != "dsv41.d2.pilot-sample.v1" or sample.get("seed") != SAMPLE_SEED | |
| or sample.get("limit") != SAMPLE_LIMIT or sample.get("manifest_sha256") != manifest_hash): | |
| raise ValueError("pilot sample schema/seed/limit/manifest mismatch") | |
| splits = population_splits(sample["keys"]) | |
| for mapping in (sample["keys"], sample["k2_sha256"], sample["population_sha256"], sample["population_rounds"]): | |
| if set(mapping) != set(splits): | |
| raise ValueError("pilot sample requires both held-out splits") | |
| for split in splits: | |
| keys = sample["keys"][split] | |
| count = sample["population_rounds"][split] | |
| if type(count) is not int or count <= 0 or len(keys) != min(SAMPLE_LIMIT, count): | |
| raise ValueError("pilot sample has the wrong complete-round count") | |
| if any(set(k) != {"request", "P"} or not isinstance(k["request"], str) or not k["request"] | |
| or type(k["P"]) is not int or k["P"] < 0 for k in keys): | |
| raise ValueError("invalid pilot sample key") | |
| if len({(k["request"], k["P"]) for k in keys}) != len(keys): | |
| raise ValueError("duplicate pilot sample key") | |
| if sample.get("sha256") != hash_json(sample["keys"]): | |
| raise ValueError("pilot sample key-list hash mismatch") | |
| def complete_rounds(data: D2Blocks, k2: Path) -> list[tuple[int, RoundKey]]: | |
| drafts = g1_drafts(k2, data) | |
| result: list[tuple[int, RoundKey]] = [] | |
| for seq_index, (path, seq, request) in enumerate(data.sequences): | |
| token_offset, length, gen = seq[:3] | |
| start = data.ends[seq_index-1] if seq_index else 0 | |
| with safe_open(path, framework="pt", device="cpu") as f: | |
| tokens = f.get_slice("tokens")[token_offset:token_offset+length].tolist() | |
| pos = gen-1 | |
| while pos+6 < length: | |
| truth = tokens[pos+2:pos+7] | |
| accepted = match_length(drafts[request][pos], truth) | |
| if accepted is None: | |
| raise ValueError("indeterminate complete K2 round") | |
| result.append((start+pos-(gen-1), {"request": request, "P": pos})) | |
| pos += accepted+1 | |
| return result | |
| def draw_sample(manifest_hash: str, populations: dict[str, list[RoundKey]], k2_hashes: dict[str, str]) -> Sample: | |
| splits = population_splits(populations) | |
| keys: dict[str, list[RoundKey]] = {} | |
| for split in splits: | |
| population = populations[split] | |
| # Independent deterministic RNG per split. Selected keys retain source | |
| # traversal order, so all passes accumulate in precisely the same order. | |
| selected = sorted(random.Random(SAMPLE_SEED).sample(range(len(population)), min(SAMPLE_LIMIT, len(population)))) | |
| keys[split] = [population[i] for i in selected] | |
| sample: Sample = {"schema": "dsv41.d2.pilot-sample.v1", "seed": SAMPLE_SEED, "limit": SAMPLE_LIMIT, | |
| "manifest_sha256": manifest_hash, "k2_sha256": k2_hashes, | |
| "population_sha256": {s: key_hash(populations[s]) for s in splits}, | |
| "population_rounds": {s: len(populations[s]) for s in splits}, | |
| "keys": keys, "sha256": hash_json(keys)} | |
| validate_sample(sample, manifest_hash) | |
| return sample | |
| def sample_plan(plan: Path, manifest: Path, k2: dict[str, Path]) -> None: | |
| from .pilot import manifest_is_synthetic, read_spec | |
| lock_fd = os.open(str(plan)+".sample.lock", os.O_CREAT | os.O_RDWR, 0o600) | |
| with os.fdopen(lock_fd, "a") as lock: | |
| fcntl.flock(lock.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB) | |
| before = plan.read_bytes() | |
| if "sample" in json.loads(before): | |
| raise FileExistsError("pilot sample already exists; refusing to redraw") | |
| spec = read_spec(plan) | |
| manifest_hash = sha256(manifest) | |
| if manifest_hash != spec["manifest_sha256"]: | |
| raise ValueError("pilot sample manifest differs from prepared plan") | |
| if manifest_is_synthetic(manifest) != spec["synthetic"]: | |
| raise ValueError("pilot sample synthetic label differs from prepared plan") | |
| splits = population_splits(k2) | |
| if not spec["synthetic"] and splits != DEV_POPULATION: | |
| raise ValueError("real pilot requires amendment-7 dev population") | |
| if set(k2) != set(splits): | |
| raise ValueError("pilot sampling requires both K2 sources") | |
| hashes = {s: sha256(k2[s]) for s in splits} | |
| populations = {s: [key for _, key in complete_rounds(D2Blocks(manifest, s), k2[s])] for s in splits} | |
| spec["sample"] = draw_sample(manifest_hash, populations, hashes) | |
| if hashes != {s: sha256(k2[s]) for s in splits} or sha256(manifest) != manifest_hash or plan.read_bytes() != before: | |
| raise ValueError("pilot sampling inputs changed during the draw") | |
| # The only permitted plan mutation: atomically add its once-only sample | |
| # before any arm can start. The companion lock survives inode replacement. | |
| fd, name = tempfile.mkstemp(prefix=plan.name+".sample-", dir=plan.parent) | |
| temporary = Path(name) | |
| try: | |
| with os.fdopen(fd, "w") as f: | |
| json.dump(spec, f, indent=2, allow_nan=False) | |
| f.write("\n") | |
| f.flush() | |
| os.fsync(f.fileno()) | |
| os.replace(temporary, plan) | |
| directory = os.open(plan.parent, os.O_RDONLY | os.O_DIRECTORY) | |
| try: | |
| os.fsync(directory) | |
| finally: | |
| os.close(directory) | |
| finally: | |
| temporary.unlink(missing_ok=True) | |