Buckets:
| # cwm3/eval/run_joint_evals_final_ablations.sh — E3 (no P) and E5 (naive_fresh) pairs of the final assembly (2026-09-11), CPU; layout guards on. | |
| # bash eval/run_joint_evals_final_ablations.sh <main_variant: all_minus_road2drv|all> "0 1 2" [render=1] | |
| # Tags carry the EXPLICIT variant short name (allminus | all), never "main", so a rule change cannot alias two different B runs under one tag. | |
| # Per seed k (identical rows; driver populations from the v2 causal kin targets), M = allminus | all: | |
| # finalc_s<k>_<M>noP_vs_indepnoP I1_<main>_s<k>_noP_final vs I1_indep_s<k>_noP_final — does I still help without the P chains on E? (E3) | |
| # finalc_s<k>_<M>_vs_<M>noP I1_<main>_s<k>_final vs I1_<main>_s<k>_noP_final — what the P head buys / costs the shared endpoints (E3) | |
| # finalc_s<k>_indep_vs_indepnoP I1_indep_s<k>_final vs I1_indep_s<k>_noP_final — pooled_P vs pooled base, assembled (no training) | |
| # finalc_s<k>_naivefresh_vs_indep I1_naive_fresh_s<k>_final vs I1_indep_s<k>_final — E5: from-scratch fusion vs the pretrained independent branches | |
| # finalc_s<k>_naivefresh_vs_<M> I1_naive_fresh_s<k>_final vs I1_<main>_s<k>_final — E5 vs the main model | |
| set -u | |
| cd "$(dirname "$0")/.." | |
| PY=python | |
| export OMP_NUM_THREADS=4 MKL_NUM_THREADS=4 | |
| MAIN="$1"; SEEDS="${2:-0 1 2}" | |
| SH=all; [[ "$MAIN" == all_minus_road2drv ]] && SH=allminus | |
| have_tag() { grep -q ",$1,$2,test," results/paired_compare.csv 2>/dev/null; } | |
| done_run() { [[ -f results/runs/$1/PRED_DONE && -f results/runs/$1/TRAIN_DONE ]]; } | |
| pc() { local tag="$1" a="$2" b="$3"; shift 3 | |
| done_run "$a" || { echo "skip $tag ($a not finished)"; return; }; done_run "$b" || { echo "skip $tag ($b not finished)"; return; } | |
| for reg in manual engaged; do have_tag "$tag" "$reg" && continue; echo "== $tag $reg" | |
| $PY eval/paired_compare_joint.py --regime "$reg" --a "results/runs/$a" --b "results/runs/$b" --tag "$tag" --kin-targets causal_routes --kin-version v2 "$@" 2>&1 | grep -E "appended|Error|Traceback|File \"|LAYOUT GUARD"; done; } | |
| for s in $SEEDS; do | |
| M=I1_${MAIN}_s${s}_final; I=I1_indep_s${s}_final; MN=I1_${MAIN}_s${s}_noP_final; IN=I1_indep_s${s}_noP_final; NF=I1_naive_fresh_s${s}_final | |
| pc "finalc_s${s}_naivefresh_vs_indep" $NF $I | |
| pc "finalc_s${s}_indep_vs_indepnoP" $I $IN | |
| pc "finalc_s${s}_${SH}noP_vs_indepnoP" $MN $IN | |
| pc "finalc_s${s}_${SH}_vs_${SH}noP" $M $MN | |
| pc "finalc_s${s}_naivefresh_vs_${SH}" $NF $M | |
| done | |
| if [[ "${3:-1}" == "1" ]]; then | |
| $PY eval/report_joint.py --stage finalc --a ${SH}noP --b indepnoP --claim B2 --seeds ${SEEDS// /,} --extra ${SH}:${SH}noP indep:indepnoP naivefresh:indep naivefresh:${SH} --out results/tables/stage_final_ablations.md 2>&1 | grep -E "written|verdict" | |
| fi | |
| echo FINAL_ABL_EVALS_DONE | |
Xet Storage Details
- Size:
- 2.79 kB
- Xet hash:
- 66de8505406f430d9f030ab1e0580b8bfe4e58c9dda640857b83b91cc26b2ab1
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.