Unify FFN and TrajMixer model architectures
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Run all non-wrapper evaluation scripts for every completed experiment under
|
||||
# runs/. The script is written for Linux servers with bash 4.2.
|
||||
# Run all non-wrapper evaluation scripts for every completed current-format
|
||||
# experiment under runs/. The script is written for Linux servers with bash 4.2.
|
||||
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")"
|
||||
shopt -s globstar nullglob
|
||||
|
||||
PYTHON_BIN="${PYTHON_BIN:-python}"
|
||||
DEVICE="${DEVICE:-cuda}"
|
||||
@@ -81,6 +82,20 @@ run_dir_result_if_missing() {
|
||||
run_command "$@"
|
||||
}
|
||||
|
||||
run_file_result_if_missing() {
|
||||
local label="$1"
|
||||
local result_dir="$2"
|
||||
local required="$3"
|
||||
shift 3
|
||||
|
||||
if [[ -s "${result_dir}/${required}" ]]; then
|
||||
echo " skip ${label}: found ${result_dir}/${required}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
run_command "$@"
|
||||
}
|
||||
|
||||
run_has_extra_info() {
|
||||
"${PYTHON_BIN}" - "$1" <<'PY'
|
||||
import json
|
||||
@@ -115,8 +130,30 @@ raise SystemExit(0 if mode == "all_future" else 1)
|
||||
PY
|
||||
}
|
||||
|
||||
for run_path in runs/*; do
|
||||
[[ -d "${run_path}" ]] || continue
|
||||
run_has_current_model_config() {
|
||||
"${PYTHON_BIN}" - "$1" <<'PY'
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
cfg_path = Path(sys.argv[1]) / "train_config.json"
|
||||
try:
|
||||
cfg = json.loads(cfg_path.read_text(encoding="utf-8"))
|
||||
n_layer = int(cfg.get("n_layer", 0))
|
||||
except Exception:
|
||||
raise SystemExit(1)
|
||||
|
||||
supported = {"transformer_ffn_v1", "traj_mixer_v5"}
|
||||
raise SystemExit(
|
||||
0
|
||||
if cfg.get("model_architecture") in supported and n_layer >= 1
|
||||
else 1
|
||||
)
|
||||
PY
|
||||
}
|
||||
|
||||
for config_path in runs/**/train_config.json; do
|
||||
run_path="${config_path%/train_config.json}"
|
||||
|
||||
echo "==> ${run_path}"
|
||||
if [[ ! -f "${run_path}/train_config.json" ]]; then
|
||||
@@ -127,6 +164,10 @@ for run_path in runs/*; do
|
||||
echo " skip run: missing best_model.pt"
|
||||
continue
|
||||
fi
|
||||
if ! run_has_current_model_config "${run_path}"; then
|
||||
echo " skip run: config lacks current model_architecture/n_layer fields"
|
||||
continue
|
||||
fi
|
||||
|
||||
common=()
|
||||
while IFS= read -r arg; do common+=("${arg}"); done < <(common_args_with_device "${run_path}")
|
||||
@@ -137,18 +178,16 @@ for run_path in runs/*; do
|
||||
cpu_reduce_extra=()
|
||||
while IFS= read -r arg; do cpu_reduce_extra+=("${arg}"); done < <(cpu_reduce_args)
|
||||
|
||||
run_dir_result_if_missing \
|
||||
run_file_result_if_missing \
|
||||
"evaluate_auc.py" \
|
||||
"${run_path}" \
|
||||
"df_both.csv" \
|
||||
"df_auc_unpooled.csv" \
|
||||
"df_auc_delphi2m_report.csv" \
|
||||
"${PYTHON_BIN}" evaluate_auc.py "${common[@]}" "${auc_extra[@]}"
|
||||
|
||||
run_dir_result_if_missing \
|
||||
run_file_result_if_missing \
|
||||
"evaluate_auc_v2.py" \
|
||||
"${run_path}" \
|
||||
"df_auc_landmark.csv" \
|
||||
"df_auc_landmark_unpooled.csv" \
|
||||
"df_auc_landmark_delphi2m_report.csv" \
|
||||
"${PYTHON_BIN}" evaluate_auc_v2.py "${common[@]}" "${auc_extra[@]}"
|
||||
|
||||
if ! run_is_all_future "${run_path}"; then
|
||||
|
||||
Reference in New Issue
Block a user