mirror of
https://github.com/wassname/evil_MoE.git
synced 2026-06-27 16:15:35 +08:00
cleanup: delete dead delta_S machinery (PiSSA->lora2r leftovers)
Off the live lora2r path; removed with vhack.py (commit 4120d75):
- proj.py: drop project_delta_S_grad/_project_one_module/mean_cos_pre_from_grads/
_hackward_cos (no live importer; train.py uses only per_token_logps).
- verify_science_invariants: test pairset_sha256's content gate directly (drops the
load_v_hack vehicle + fake delta_S wrapper fixture).
- extract_vhack_grad: import pairset_sha256 from .pairs (was re-exported via vhack).
- tablelog/figs: stale 'delta_S grads'/'knob' comments -> A/B grads.
Smoke + verify_science_invariants green; no delta_S left in live code.
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
@@ -6,14 +6,12 @@ import json
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
import torch
|
||||
from loguru import logger
|
||||
from safetensors.torch import save_file
|
||||
from tabulate import tabulate
|
||||
|
||||
from vgrout.data import DATA, RH_HINT_REPLACE_FROM, load_problems
|
||||
from vgrout.eval import load_eval_splits
|
||||
from vgrout.vhack import load_v_hack, pairset_sha256
|
||||
from vgrout.pairs import load_pairs, pairset_sha256
|
||||
|
||||
|
||||
def _must_raise(fn) -> bool:
|
||||
@@ -29,20 +27,45 @@ def main() -> int:
|
||||
with tempfile.TemporaryDirectory() as td:
|
||||
tmp = Path(td)
|
||||
|
||||
pairs_path = tmp / "pairs.json"
|
||||
pairs_path.write_text('[{"prompt":"p","hack":"h","clean":"c"}]\n')
|
||||
vhack_path = tmp / "vhack.safetensors"
|
||||
dtype = "bf16" if torch.cuda.is_available() else "fp32"
|
||||
save_file(
|
||||
{"module": torch.tensor([[1.0, 0.0, 0.0]]), "_sv/module": torch.tensor([1.0])},
|
||||
str(vhack_path),
|
||||
metadata={"model": "test", "dtype": dtype, "pairs_sha256": pairset_sha256(pairs_path)},
|
||||
pairs_path = tmp / "pairs.md"
|
||||
pairs_path.write_text(
|
||||
"## tiny\n\n### p\n\n#### Prompt\n`````text\np\n`````\n\n"
|
||||
"#### Hack\n`````text\nh\n`````\n\n#### Clean\n`````text\nc\n`````\n\n"
|
||||
"## unrelated\n\n### q\n\n#### Prompt\n`````text\nq\n`````\n\n"
|
||||
"#### Hack\n`````text\nx\n`````\n\n#### Clean\n`````text\ny\n`````\n"
|
||||
)
|
||||
wrappers = {"module": {"delta_S": torch.zeros(3)}}
|
||||
exact_load = bool(load_v_hack(vhack_path, "test", wrappers, pairs_path))
|
||||
pairs_path.write_text(pairs_path.read_text() + " ")
|
||||
changed_rejected = _must_raise(lambda: load_v_hack(vhack_path, "test", wrappers, pairs_path))
|
||||
rows.append({"invariant": "v_hack pair bytes", "success": exact_load and changed_rejected})
|
||||
# Pairsets are content-addressed by the SELECTED section's bytes (pairset_sha256):
|
||||
# an edit elsewhere in the file must not change the hash; an edit inside the
|
||||
# selected section must. This is what gates a stale extracted direction.
|
||||
pairs_ref = Path(f"{pairs_path}#tiny")
|
||||
selected_hash = pairset_sha256(pairs_ref)
|
||||
pairs_path.write_text(pairs_path.read_text().replace("\nx\n", "\nother changed\n"))
|
||||
unrelated_ignored = pairset_sha256(pairs_ref) == selected_hash
|
||||
pairs_path.write_text(pairs_path.read_text().replace("\nh\n", "\nchanged\n"))
|
||||
selected_changed = pairset_sha256(pairs_ref) != selected_hash
|
||||
missing_rejected = _must_raise(lambda: load_pairs(Path(f"{pairs_path}#missing")))
|
||||
rows.append({
|
||||
"invariant": "selected Markdown pair bytes",
|
||||
"success": bool(selected_hash) and unrelated_ignored and selected_changed and missing_rejected,
|
||||
})
|
||||
|
||||
malformed = tmp / "malformed.md"
|
||||
malformed.write_text(
|
||||
"## x\n\n### duplicate\n\n#### Prompt\n`````text\np\n`````\n\n"
|
||||
"#### Prompt\n`````text\np2\n`````\n\n#### Hack\n`````text\nh\n`````\n\n"
|
||||
"#### Clean\n`````text\nc\n`````\n"
|
||||
)
|
||||
rows.append({
|
||||
"invariant": "malformed Markdown fails",
|
||||
"success": _must_raise(lambda: load_pairs(Path(f"{malformed}#x"))),
|
||||
})
|
||||
|
||||
real_pairsets_ok = (
|
||||
len(load_pairs(Path("docs/personas/hack_pairs.md#mechanism-authored"))) == 11
|
||||
and len(load_pairs(Path("docs/personas/pair_diagnostics.md#null-vampire"))) == 12
|
||||
and len(load_pairs(Path("out/pairsets/prog_wide_clean.json"))) == 8
|
||||
)
|
||||
rows.append({"invariant": "authored/control/generated pairsets load", "success": real_pairsets_ok})
|
||||
|
||||
source = json.loads(DATA.read_text().splitlines()[0])
|
||||
missing = json.loads(json.dumps(source))
|
||||
|
||||
Reference in New Issue
Block a user