Download tests/compare_value_proposer.py from logos42/headless: direct link, hf CLI and curl.
- Browser
- Download file 2.28 kB
-
https://huggingface.co/logos42/headless/resolve/main/tests/compare_value_proposer.py
- Command line
-
hf download hf://logos42/headless/tests/compare_value_proposer.py
-
curl -L -o compare_value_proposer.py https://huggingface.co/logos42/headless/resolve/main/tests/compare_value_proposer.py
2.28 kB
| #!/usr/bin/env python3 | |
| """lm4 价值函数调度: fixed / random / value 三臂 × 多 seed 对照。""" | |
| import glob | |
| import json | |
| import os | |
| import numpy as np | |
| R = "/work/liuyuanjie/headless/results" | |
| ARMS = ["fixed", "random", "value"] | |
| data = {a: {} for a in ARMS} | |
| for p in sorted(glob.glob(f"{R}/vp2_*_s*/lm4_wave_results.json")): | |
| tag = os.path.basename(os.path.dirname(p)) | |
| _, arm, seed = tag.split("_") | |
| d = json.load(open(p)) | |
| v = d.get("replay") or {} | |
| data[arm][seed] = { | |
| "replay": v.get("final_mean_acc"), | |
| "forget": v.get("mean_forget"), | |
| "naive": (d.get("naive") or {}).get("final_mean_acc"), | |
| "naive_forget": (d.get("naive") or {}).get("mean_forget"), | |
| } | |
| print("=" * 78) | |
| print("LM4 价值函数驱动调度 · 三臂对照 (6 域, replay)") | |
| print("=" * 78) | |
| hdr = " %-9s %-30s %-24s %s" % ("调度", "replay mean±std (CV)", "naive mean±std (CV)", "n") | |
| print(hdr) | |
| print(" " + "-" * 74) | |
| for a in ARMS: | |
| rs = [v["replay"] for v in data[a].values() if v["replay"] is not None] | |
| ns = [v["naive"] for v in data[a].values() if v["naive"] is not None] | |
| if not rs: | |
| print(" %-9s (无)" % a) | |
| continue | |
| m, s = np.mean(rs), np.std(rs) | |
| cv = 100 * s / max(1e-9, abs(m)) | |
| tag = "可信" if (m > 0 and s < m / 2) else "不可信" | |
| if ns: | |
| mn, sn = np.mean(ns), np.std(ns) | |
| nstr = "%.4f±%.4f (%4.1f%%)" % (mn, sn, 100 * sn / max(1e-9, abs(mn))) | |
| else: | |
| nstr = "-" | |
| print(" %-9s %.4f±%.4f (%5.1f%% %s) %-24s %d" % (a, m, s, cv, tag, nstr, len(rs))) | |
| print() | |
| print(" ── 逐 seed (replay) ──") | |
| seeds = sorted({s for a in ARMS for s in data[a]}, key=lambda x: int(x) if x.isdigit() else 0) | |
| print(" %-9s" % "seed" + "".join("%10s" % s for s in seeds)) | |
| for a in ARMS: | |
| row = "".join(("%10.4f" % data[a][s]["replay"]) if s in data[a] and data[a][s]["replay"] | |
| else "%10s" % "-" for s in seeds) | |
| print(" %-9s" % a + row) | |
| print() | |
| print(" ── 参照 ──") | |
| print(" 固定顺序基线 (c1_replay_rr2, 单 seed): replay 0.7368") | |
| print(" SSM 原版 (q5_agg, 6 seed): replay 0.6126±0.0180") | |
| print(" 联合训练上限 (6 域): joint 0.7948") | |
| if not any(data[a] for a in ARMS): | |
| print(" (无结果)") | |