| #!/usr/bin/env bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| set -euo pipefail |
|
|
| |
| PROJECT_ROOT="$(cd "$(dirname "$0")/../.." && pwd)" |
|
|
| |
| export PYTHONPATH="${PROJECT_ROOT}:${PYTHONPATH:-}" |
|
|
| |
| export TORCHINDUCTOR_CACHE_DIR="${HOME}/scratch/.cache/torchinductor" |
| export TRITON_CACHE_DIR="${HOME}/scratch/.cache/triton" |
|
|
| |
| |
| |
| CSV_PATH="${CSV_PATH:-CC3M-Dataset/bathroom_filter/bathroom_toilet_labels.csv}" |
| IMAGE_DIR="${IMAGE_DIR:-CC3M-Dataset/cc3m_images/train}" |
|
|
| STEP3_OUTPUT_DIR="${STEP3_OUTPUT_DIR:-./step3_outputs}" |
| STEP4_OUTPUT_DIR="${STEP4_OUTPUT_DIR:-./step4_outputs}" |
| STEP5_OUTPUT_DIR="${STEP5_OUTPUT_DIR:-./step5_outputs}" |
|
|
| NUM_PER_CATEGORY="${NUM_PER_CATEGORY:-50}" |
| TOP_K_SINGULAR="${TOP_K_SINGULAR:-10}" |
|
|
| |
| FINETUNE_CONFIG="${FINETUNE_CONFIG:-${PROJECT_ROOT}/experiment/default_config.json}" |
|
|
| echo "==========================================" |
| echo "Fine-Tune, Validate, Inspect" |
| echo "==========================================" |
| echo "Config:" |
| echo " CSV path: $CSV_PATH" |
| echo " Image dir: $IMAGE_DIR" |
| echo " Finetune config: $FINETUNE_CONFIG" |
| echo "==========================================" |
|
|
| |
| if [ ! -f "$FINETUNE_CONFIG" ]; then |
| echo "Generating default config at $FINETUNE_CONFIG ..." |
| python -c " |
| import sys; sys.path.insert(0, '${PROJECT_ROOT}') |
| from experiment.config.train_config import TrainConfig |
| cfg = TrainConfig( |
| csv_path='${CSV_PATH}', |
| image_dir='${IMAGE_DIR}', |
| output_dir='${STEP3_OUTPUT_DIR}', |
| ) |
| cfg.save('${FINETUNE_CONFIG}') |
| print(' Config saved.') |
| " |
| fi |
|
|
| |
| |
| |
| echo "" |
| echo ">>> Running Fine-Tune..." |
| echo "================================" |
|
|
| python -m experiment.training.finetune \ |
| --config "$FINETUNE_CONFIG" |
|
|
| |
| if [ ! -f "$STEP3_OUTPUT_DIR/final_model.pt" ]; then |
| echo "ERROR: Fine-tuning failed — final_model.pt not found." |
| exit 1 |
| fi |
|
|
| echo "" |
| echo ">>> Fine-Tuning Complete!" |
|
|
| |
| |
| |
| echo "" |
| echo ">>> Running Validation..." |
| echo "================================" |
|
|
| python -m experiment.evaluation.validate \ |
| --model_type delta_w \ |
| --checkpoint "$STEP3_OUTPUT_DIR/final_model.pt" \ |
| --val_csv "$CSV_PATH" \ |
| --val_image_dir "$IMAGE_DIR" \ |
| --num_per_category "$NUM_PER_CATEGORY" \ |
| --output_dir "$STEP4_OUTPUT_DIR" |
|
|
| echo "" |
| echo ">>> Validation Complete!" |
|
|
| |
| |
| |
| echo "" |
| echo ">>> Running Delta-W Inspection..." |
| echo "=======================================" |
|
|
| DELTA_W_PATH="$STEP3_OUTPUT_DIR/final/delta_w.pt" |
| if [ ! -f "$DELTA_W_PATH" ]; then |
| echo "WARNING: delta_w.pt not found at $DELTA_W_PATH, trying step-level checkpoints..." |
| |
| DELTA_W_PATH=$(find "$STEP3_OUTPUT_DIR" -name "delta_w.pt" | sort | tail -1) |
| fi |
|
|
| python -m experiment.analysis.inspect_delta_w \ |
| --delta_w_path "$DELTA_W_PATH" \ |
| --top_k_singular "$TOP_K_SINGULAR" \ |
| --output_dir "$STEP5_OUTPUT_DIR" |
|
|
| echo "" |
| echo ">>> Delta-W Inspection Complete!" |
|
|
| |
| |
| |
| echo "" |
| echo "==========================================" |
| echo "All Steps Complete!" |
| echo "==========================================" |
| echo "Outputs:" |
| echo " Fine-tuned model: $STEP3_OUTPUT_DIR/" |
| echo " Validation: $STEP4_OUTPUT_DIR/" |
| echo " SVD analysis: $STEP5_OUTPUT_DIR/" |
| echo "" |
| echo "Next steps:" |
| echo " 1. Review step4_outputs/validation_results.json" |
| echo " 2. Review step5_outputs/delta_w_analysis.json" |
| echo "==========================================" |
|
|