Buckets:
| # cwm3/eval/run_joint_evals_r2_mtl.sh — WP3 R2 MTL-block pairs on the FINAL assembly (pre-registered 2026-09-16T06:46:35Z; train/mtl.py runs of queue J3), CPU. | |
| # bash eval/run_joint_evals_r2_mtl.sh ["0 1 2"] [parallel=3] | |
| # Per seed k (identical rows; v2 causal kin targets, the flags of every finalc_* pair), A = I1_<mtl variant>_s<k>_final: | |
| # finalc_s<k>_<v>_vs_indep, finalc_s<k>_<v>_vs_allminus FULL cell set (own / cross-leg / hazard-NLL cost cells) — feeds modality_ablation.md | |
| # finalc_s<k>_naivefresh{uw,famo,pcgrad}_vs_naivefresh the MTL arm vs PLAIN SUMMATION on the SAME architecture / init — the pre-registered | |
| # (allminuspcgrad vs allminus = the _vs_allminus pair above) criterion 'significantly better on any own cell' needs the onset cells only -> --only-onset | |
| # (drv / veh / demand onset PR-AUC@3 s + veh_any; ≈ 11 min/call vs ≈ 13 for the full set — the onset bootstraps dominate) | |
| # Unfinished runs are skipped (idempotent tags); calls run through eval/pc_joint_locked.py (private rows, flock-guarded append), `parallel` at a time; each call | |
| # waits for MemAvailable >= PAIR_MIN_AVAIL_GB (default 20; a call takes ≈ 4 GB RSS) so the pairings never drain the host RAM (62 GB hard constraint). | |
| # 2026-09-16 19:10Z fix: job lines carried a trailing blank when `extra` was empty and `xargs -L 1` treats a trailing blank as LINE CONTINUATION — two jobs were | |
| # merged into one call (bogus 5th argument -> argparse error, lower-case, not caught by the case-sensitive grep) and only the odd --only-onset calls ran. | |
| set -u | |
| cd "$(dirname "$0")/.." | |
| PY=python | |
| export OMP_NUM_THREADS=4 MKL_NUM_THREADS=4 | |
| SEEDS="${1:-0 1 2}"; PAR="${2:-3}" | |
| C="--kin-targets causal_routes --kin-version v2" | |
| 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 ]]; } | |
| JOBS=$(mktemp /tmp/r2_mtl_jobs.XXXXXX) | |
| add() { # tag a b extra | |
| local tag="$1" a="$2" b="$3" extra="${4:-}" | |
| 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 $a $b $reg${extra:+ $extra}" >> "$JOBS" # NO trailing blank (xargs -L continuation) | |
| done | |
| } | |
| declare -A DIR=( [naivefreshuw]=naive_fresh_uw [naivefreshfamo]=naive_fresh_famo [naivefreshpcgrad]=naive_fresh_pcgrad [allminuspcgrad]=all_minus_road2drv_pcgrad ) | |
| for s in $SEEDS; do | |
| I=I1_indep_s${s}_final; M=I1_all_minus_road2drv_s${s}_final; NF=I1_naive_fresh_s${s}_final | |
| for v in naivefreshuw naivefreshfamo naivefreshpcgrad allminuspcgrad; do | |
| A=I1_${DIR[$v]}_s${s}_final | |
| case $v in naivefresh*) add "finalc_s${s}_${v}_vs_naivefresh" $A $NF "--only-onset" ;; esac | |
| add "finalc_s${s}_${v}_vs_indep" $A $I | |
| add "finalc_s${s}_${v}_vs_allminus" $A $M | |
| done | |
| done | |
| n=$(wc -l < "$JOBS" | tr -d ' ') | |
| echo "[$(date -u +%H:%M:%SZ)] $n MTL pairing calls to run ($PAR in parallel)" | |
| if [[ "$n" -gt 0 ]]; then | |
| xargs -P "$PAR" -L 1 bash -c 'tag=$0; a=$1; b=$2; reg=$3; extra=${4:-} | |
| while [ "$(awk "/MemAvailable/ {printf \"%d\", \$2/1048576}" /proc/meminfo)" -lt "${PAIR_MIN_AVAIL_GB:-20}" ]; do sleep 60; done | |
| echo "[$(date -u +%H:%M:%SZ)] == $tag $reg $extra"; '"$PY"' eval/pc_joint_locked.py --regime "$reg" --a "results/runs/$a" --b "results/runs/$b" --tag "$tag" '"$C"' $extra 2>&1 | grep -iE "locked-append|appended|error|Traceback|File \"|LAYOUT GUARD|no rows"' < "$JOBS" | |
| fi | |
| rm -f "$JOBS" | |
| echo "[$(date -u +%H:%M:%SZ)] R2_MTL_EVALS_DONE" | |
Xet Storage Details
- Size:
- 3.69 kB
- Xet hash:
- 53e3b0cc509d7bd4401eeaab629df2442a49a59b4109d73fd66778972f030d16
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.