GroundFlow / scripts /eval_32b_sdrpn.sh
TerryPei's picture
32B full results: nips.tex (Vanilla/SD-RPN/GroundFlow), trainer_state for run2 + SD-RPN, textvqa patch tile figures (PNG), eval/sync scripts
d6e1c8a verified
Raw History Blame Contribute Delete
2.97 kB
#!/usr/bin/env bash
# 32B SD-RPN baseline eval — TAG=32b-sdrpn-576 so sync_to_nips.py fills the SD-RPN row.
# enable_iwa=False already in the saved config (SD-RPN trains pure-ROI w/o IWA).
# chat_template.jinja already proper (5292 bytes). No patches needed.
# 5 idle GPUs (0,1,2,4,5) — staggered to avoid 6-GPU NFS-load thrash.
set -u
REPO=/opt/tiger/thothvl_pretrain
M=/mnt/bn/leonworkspace/terry/model
R=/mnt/bn/leonworkspace/terry/results
NAS_LOGS=/mnt/bn/leonworkspace/terry/logs
LOG_DIR=$NAS_LOGS/eval_32b_sdrpn_$(date +%Y%m%d_%H%M)
mkdir -p "$LOG_DIR"
SUMMARY="$LOG_DIR/summary.log"
: > "$SUMMARY"
cd "$REPO/lmms-eval"
export PYTHONPATH=$REPO/QWENVL-PRIVATE:$PYTHONPATH
export HF_TOKEN=<HF_TOKEN>
export HF_HOME=/mnt/bn/leonworkspace/HF_HOME
export HF_DATASETS_CACHE=$HF_HOME/datasets
export OPENAI_API_KEY=<OPENAI_API_KEY>
export OPENAI_API_URL=https://search-va.byteintl.net/gpt/openapi/online/v2/crawl
export MODEL_VERSION=gpt-4o-2024-11-20
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
CKPT=$M/qwen3vl-32b-dense-roi-K49T3-150k-sdrpn-0505_2023
ATTN=flash_attention_2
TAG=32b-sdrpn-576
CONF=0.15
ours_args() { echo "pretrained=$CKPT,device_map=auto,two_stage_roi=True,roi_baseline=True,roi_conf_thresh=$CONF,high_res_thresh=0.1,attn_implementation=$ATTN"; }
run_one() {
local gpu=$1 task=$2
local out_dir="$R/$TAG/$task"
if find "$out_dir" -name "*results.json" 2>/dev/null | grep -q .; then
echo "[$(date '+%F %T')] SKIP gpu$gpu $TAG/$task (done)" | tee -a "$SUMMARY"
return
fi
mkdir -p "$out_dir"
local log="$LOG_DIR/${task}_gpu${gpu}.log"
echo "[$(date '+%F %T')] START gpu$gpu $TAG/$task" | tee -a "$SUMMARY"
CUDA_VISIBLE_DEVICES=$gpu python3 -m lmms_eval \
--model qwen3_vl_hybrid --model_args "$(ours_args)" \
--tasks "$task" --batch_size 1 \
--output_path "$out_dir" \
--log_samples --log_samples_suffix "$TAG" \
> "$log" 2>&1
local rc=$?
if [ $rc -eq 0 ] && find "$out_dir" -name "*results.json" 2>/dev/null | grep -q .; then
echo "[$(date '+%F %T')] DONE gpu$gpu $TAG/$task" | tee -a "$SUMMARY"
else
echo "[$(date '+%F %T')] ERR gpu$gpu $TAG/$task rc=$rc — $log" | tee -a "$SUMMARY"
fi
}
# Per-GPU queues — mixed but enable_iwa=False so safe at this scale.
queue_gpu0() { run_one 0 mmerealworld; } # 23k, longest
queue_gpu1() { run_one 1 docvqa_val; } # 5349
queue_gpu2() { run_one 2 textvqa_val; } # 5000
queue_gpu4() { run_one 4 chartqa; run_one 4 hrbench4k; run_one 4 hrbench8k; }
queue_gpu5() { run_one 5 infovqa_val; run_one 5 ocrbench; run_one 5 realworldqa; run_one 5 vstar_bench; }
# Stagger NFS reads at 90s spacing
queue_gpu0 &
sleep 90; queue_gpu1 &
sleep 90; queue_gpu2 &
sleep 90; queue_gpu4 &
sleep 90; queue_gpu5 &
wait
echo "[$(date '+%F %T')] ALL SD-RPN EVAL DONE" | tee -a "$SUMMARY"
echo "Logs: $LOG_DIR"