Melikshah/Operational-Harm / scripts /08_generate_benchmark.py
Melikshah's picture
download
raw
3.45 kB
import csv
import hashlib
import itertools
import json
from collections import Counter, defaultdict
from pathlib import Path
import opharm
from opharm.bench import generate
from opharm.bench.align import pair_exclusion
from opharm.bench.tools import TOOLS
from opharm.chat import load_tokenizer, render
from opharm.paths import BENCH
MODELS = ("qwen35_4b", "qwen3_4b_2507")
PAIRS = {"env": ("env", "PS", 1), "target": ("cmd", "DB", 0), "rollback": ("rollback", "AN", 2), "policy": ("policy", "CN", 3)}
def rendered(tok, row):
return render(tok, row["system"], row["user"], None if row["set"] == "flat" else TOOLS)
def check_pairs(tok, rows):
main = {r["id"]: rendered(tok, r) for r in rows if r["set"] == "main"}
by_code = {(r["skeleton"], r["target"] + r["env"] + r["rollback"] + r["policy"]): r["id"] for r in rows if r["set"] == "main"}
results, exclusions = Counter(), []
for (skeleton, code), rid in by_code.items():
for name, (span, levels, pos) in PAIRS.items():
if code[pos] != levels[0]:
continue
other = by_code[(skeleton, code[:pos] + levels[1] + code[pos + 1:])]
reason = pair_exclusion(main[rid], main[other], span)
results[(name, reason is None)] += 1
if reason:
exclusions.append({"skeleton": skeleton, "pair": name, "a": rid, "b": other, "reason": reason})
return results, exclusions
def main():
toks = {k: load_tokenizer(k) for k in MODELS}
skeletons = generate.plan_skeletons(list(toks.values()))
rows = generate.expand(skeletons, generate.tools_prose(TOOLS))
manifest = {"n_skeletons": len(skeletons), "n_instances": len(rows),
"by_set_split": {f"{s}/{p}": n for (s, p), n in sorted(Counter((r["set"], r["split"]) for r in rows).items())},
"skeleton_forms": dict(Counter((s["split"], s["form"]) for s in skeletons)), "alignment": {}}
manifest["skeleton_forms"] = {f"{k[0]}/{k[1]}": v for k, v in sorted(manifest["skeleton_forms"].items())}
all_exclusions = []
for key, tok in toks.items():
bad = [r["id"] for r in rows if tok.decode([rendered(tok, r).ids[rendered(tok, r).t_inst]]) != "."]
if bad:
raise ValueError(f"{key}: t_inst is not the closing period for {bad[:3]}")
results, exclusions = check_pairs(tok, rows)
manifest["alignment"][key] = {name: {"aligned": results[(name, True)], "excluded": results[(name, False)]}
for name in PAIRS}
all_exclusions += [dict(e, model=key) for e in exclusions]
BENCH.mkdir(exist_ok=True)
body = "".join(json.dumps(r) + "\n" for r in rows)
(BENCH / "instances.jsonl").write_text(body)
(BENCH / "skeletons.jsonl").write_text("".join(json.dumps(s) + "\n" for s in skeletons))
manifest["sha256_instances"] = hashlib.sha256(body.encode()).hexdigest()
(BENCH / "manifest.json").write_text(json.dumps(manifest, indent=1))
with open(BENCH / "exclusions.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=["model", "skeleton", "pair", "a", "b", "reason"])
w.writeheader()
w.writerows(all_exclusions)
print(json.dumps({k: v for k, v in manifest.items() if k != "sha256_instances"}, indent=1))
print("exclusion reasons:", Counter((e["model"], e["pair"], e["reason"]) for e in all_exclusions).most_common(12))
if __name__ == "__main__":
main()

Xet Storage Details

Size:
3.45 kB
·
Xet hash:
a9a2d325d3f26c81c4f63d81fd6ae494c2cb25f1cff2ef8454002e68df6c9194

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.