Files

96 lines
2.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# Action Recognition 训练 — 基于 SubPattern 靶向生成的 AR30 题
#
# 三阶段:
# Phase 0: baseline infer (AR30 题 + VME benchmark 作为 test)
# Phase 1: create seed (ar30-baseline)
# Phase 2: train (3 epochs, per_category)
#
# 用法:
# CUDA_VISIBLE_DEVICES=0 bash scripts/train_ar30.sh
# MODE=mock bash scripts/train_ar30.sh # 跳过 Phase 0/1
#
# 与上次训练的区别:
# - 题目来源: generated-ar30SubPattern 靶向)替代 generated-v2-360OCR 污染)
# - seed 名: ar30-baseline(独立于旧的 v2ar-baseline
# - workspace: workspaces/train-ar30
set -euo pipefail
cd "$(dirname "$0")/.."
CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:-0}"
export CUDA_VISIBLE_DEVICES
export HF_HUB_OFFLINE=1
export TRANSFORMERS_OFFLINE=1
export PYTHONUNBUFFERED=1
set -a
source .env
set +a
PYTHON="$(conda run -n Video-Tree-TRM which python)"
# ── Phase 0: Baseline infer(用 AR30 新题跑基线推理)──
if [[ "${MODE:-}" != "mock" ]]; then
echo "=== Phase 0: Baseline infer (AR30 新题 30 题) ==="
"${PYTHON}" main.py \
--config config/train_ar30.yaml \
--workspace-dir workspaces/default \
--store-dir store \
--mode infer \
--concurrency 24 \
--max-steps 40 \
--skill-mode auto \
--n-samples 0 \
--questions "generated-ar30" \
--skills-version v1 \
--prompts-version v1 \
--run-id ar30_baseline \
--task-types "Action Recognition"
fi
# ── Phase 1: Create seed ──
if [[ "${MODE:-}" != "mock" && ! -d "store/seeds/ar30-baseline" ]]; then
echo "=== Phase 1: Create seed ar30-baseline ==="
"${PYTHON}" -c "
from pathlib import Path
from app.harness.store import extract_run_db, init_seed
import tempfile
tmp = Path(tempfile.mkdtemp()) / 'baseline.db'
extract_run_db(
Path('workspaces/default/harness.db'),
tmp,
'infer_ar30_baseline',
)
init_seed(
store_dir=Path('store'),
name='ar30-baseline',
skills_dir=Path('store/skills/v1'),
prompts_dir=Path('store/prompts/v1'),
baseline_db=tmp,
baseline_run_id='infer_ar30_baseline',
parent=None,
description='AR30 SubPattern 靶向题 baseline (skills/v1)',
)
tmp.unlink()
print('Seed created: store/seeds/ar30-baseline/')
"
elif [[ -d "store/seeds/ar30-baseline" ]]; then
echo "=== Phase 1: Seed ar30-baseline 已存在,跳过 ==="
fi
# ── Phase 2: Train ──
echo "=== Phase 2: Train (3 epochs, AR30) ==="
"${PYTHON}" main.py \
--config config/train_ar30.yaml \
--fresh \
--seed ar30-baseline
echo "=== 训练完成 ==="
echo "结果查看:"
echo " cat workspaces/train-ar30/analyses/final_test_eval.json"
echo " sqlite3 workspaces/train-ar30/harness.db 'SELECT * FROM dual_metric'"