AsianPlayer/TriDrive / code /eval /run_joint_evals_f1_kpf.sh
AsianPlayer's picture
download
raw
3.31 kB
#!/usr/bin/env bash
# cwm3/eval/run_joint_evals_f1_kpf.sh — LANE F1 (2026-09-17; pre-registration docs/decisions.md 2026-09-17T19:33:12Z): paired evaluations of the keypoint-forecaster
# distillation variant of the ECAN joint model, CPU, layout guards on. Runs I1_all_minus_road2drv_s<k>_final_ecan_kpf (ECAN main + the detached forecaster channel
# through the zero-init injector) vs the FROZEN ECAN main I1_all_minus_road2drv_s<k>_final_ecan (read-only). Identical rows, driver populations from the v2 causal
# kin targets; every tag idempotent. Mirrors eval/run_joint_evals_final_face.sh (pc_joint_locked.py private rows + flock append; MemAvailable wait).
# finalcv_s<k>_allminusecankpf_vs_allminusecan (a-val) VALIDATION split — the ADOPTION decision (rev-2 discipline)
# finalc_s<k>_allminusecankpf_vs_allminusecan (a) test split — confirmation (Δ [CI] + the acceptable-degradation margins)
# finalcm_s<k>_allminusecankpf_vs_allminusecan masked protocol (human-verified driver-box mask)
# finalc_s<k>_allminusecankpf_vs_k0 B1 on the variant (driver cells vs k0)
# finalP_s<k>_allminusecankpf_vs_allminusecan P cells (eval/pressure_eval.py)
# bash eval/run_joint_evals_f1_kpf.sh "0 1 2"
set -u
cd "$(dirname "$0")/.."
PY=python
export OMP_NUM_THREADS=4 MKL_NUM_THREADS=4
MASK=results/targets_kin_causal_routes_v2/driver_box_verified_mask.json
MIN_AVAIL_GB="${MIN_AVAIL_GB:-8}"
mem_wait() { while [[ $(awk '/MemAvailable/ {printf "%d", $2/1048576}' /proc/meminfo) -lt $MIN_AVAIL_GB ]]; do sleep 30; done; }
have_tag() { grep -q ",$1,$2,$3," results/paired_compare.csv 2>/dev/null; }
done_run() { [[ -f results/runs/$1/PRED_DONE && -f results/runs/$1/TRAIN_DONE ]]; }
pc() { # split tag a b [extra args] (b = none with --b-k0)
local split="$1" tag="$2" a="$3" b="$4"; shift 4
done_run "$a" || { echo "skip $tag ($a not finished)"; return; }
[[ "$b" == none ]] || done_run "$b" || { echo "skip $tag ($b not finished)"; return; }
for reg in manual engaged; do
have_tag "$tag" "$reg" "$split" && continue
mem_wait; echo "== $tag $reg ($split)"
$PY eval/pc_joint_locked.py --regime "$reg" --split "$split" --a "results/runs/$a" --b "results/runs/$b" --tag "$tag" "$@" 2>&1 | grep -E "appended|Error|Traceback|File \"|LAYOUT GUARD" | cut -c1-220
done
}
pe() { # pressure_eval: tag a b
local tag="$1" a="$2" b="$3"
done_run "$a" && done_run "$b" || { echo "skip $tag"; return; }
for reg in manual engaged; do
have_tag "$tag" "$reg" test && continue
mem_wait; echo "== $tag $reg (P cells)"
$PY eval/pressure_eval.py --regime "$reg" --a "results/runs/$a" --b "results/runs/$b" --tag "$tag" 2>&1 | grep -E "appended|Error|Traceback|File \"|LAYOUT GUARD" | cut -c1-220
done
}
C="--kin-targets causal_routes --kin-version v2"
for s in ${1:-0 1 2}; do
AK=I1_all_minus_road2drv_s${s}_final_ecan_kpf; AM=I1_all_minus_road2drv_s${s}_final_ecan
pc val "finalcv_s${s}_allminusecankpf_vs_allminusecan" $AK $AM $C
pc test "finalc_s${s}_allminusecankpf_vs_allminusecan" $AK $AM $C
pc test "finalcm_s${s}_allminusecankpf_vs_allminusecan" $AK $AM $C --mask-routes $MASK
pc test "finalc_s${s}_allminusecankpf_vs_k0" $AK none $C --b-k0
pe "finalP_s${s}_allminusecankpf_vs_allminusecan" $AK $AM
done
echo F1_KPF_EVALS_DONE

Xet Storage Details

Size:
3.31 kB
·
Xet hash:
e68270c8bb605c69c119f9e06df99d54b0a3e75220e5289d5e232f9919ccb8bc

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