Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ Included model families:
- `pyskl/` - PySKL config/logit utilities.
- `vlm_models/` - Qwen/Ovis vision-language model classifiers.
- `feature_extraction/` - I3D/R(2+1)D and V-JEPA feature extraction.
- `vjepa/` - vjepa model variants.
- `dlc_action/` - DLC2Action data preparation workflow.

### Fusion Models
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash
# Usage: bash submit_all.sh

SCRIPT_DIR="/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjepa_crop"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The script contains a hardcoded absolute path pointing to a specific user's home directory (/home/aparnabg/...). This makes the script non-portable and unusable by other users or in other environments. Consider making the base directory configurable via an environment variable or command-line argument.

Suggested change
SCRIPT_DIR="/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjepa_crop"
SCRIPT_DIR="${ACTION_SOTA_MODELS_DIR:-/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjepa_crop}"


echo "Submitting all 6 jobs (all reuse existing feature cache)..."
for LABEL in loco rmm; do
for SEED in 42 123 456; do
JID=$(sbatch --parsable "$SCRIPT_DIR/vjepa_clip_level_ablation.sh" $LABEL $SEED)
echo " $LABEL seed $SEED -> job $JID"
done
done
echo ""
echo "All 6 jobs submitted. Check with: squeue -u $USER"
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#!/bin/bash
#SBATCH --job-name=vjepa2_ablation
#SBATCH --partition=mit_normal_gpu
#SBATCH --cpus-per-task=4
#SBATCH --mem=120GB
#SBATCH --gres=gpu:h200:1
#SBATCH --time=04:00:00
#SBATCH --output=/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjepa_crop/logs/%x_%A.out
#SBATCH --error=/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjepa_crop/logs/%x_%A.err

mkdir -p /home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjepa_crop/logs

module load miniforge/24.3.0-0
module load cuda
module load cudnn
source /home/aparnabg/orcd/scratch/miniconda3/etc/profile.d/conda.sh
conda activate vjepa2-312
cd /home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjepa_crop

LABEL=$1
SEED=$2

if [ -z "$LABEL" ] || [ -z "$SEED" ]; then
echo "Error: Usage: sbatch run.sh <label> <seed>"
exit 1
fi

echo "============================================"
echo " Label : $LABEL"
echo " Seed : $SEED"
echo "============================================"

START_TIME=$(date +%s)
echo "Start time: $(date)"

# Where old extracted features already live (from original run)
OLD_CACHE_BASE="/orcd/data/satra/002/projects/SAILS/vjepa_features/action_model_outputs/clips_h5/vjepa_new_crop/clip_level_ablation"

# Where new seed outputs will go
NEW_BASE="/orcd/data/satra/002/projects/SAILS/vjepa_features/models_output_seeds/clips_h5/vjepa_new_crop/clip_level_ablation"

CACHE_SRC="${OLD_CACHE_BASE}/${LABEL}/extracted_features.pt"
SEED_OUT_DIR="${NEW_BASE}/${LABEL}/seed_${SEED}"
CACHE_DST="${SEED_OUT_DIR}/extracted_features.pt"

# Verify old cache exists
if [ ! -f "$CACHE_SRC" ]; then
echo "ERROR: old feature cache not found at:"
echo " $CACHE_SRC"
exit 1
fi

# Create output dir and symlink the cache
mkdir -p "$SEED_OUT_DIR"
ln -sf "$CACHE_SRC" "$CACHE_DST"
echo "Symlinked cache: $CACHE_SRC -> $CACHE_DST"

echo "Running seed $SEED with --skip_extraction"
python vjepa_clip_level_ablation.py \
--label $LABEL \
--head all \
--seed $SEED \
--skip_extraction

END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
echo "End time: $(date)"
echo "Total runtime: ${DURATION} seconds ($(($DURATION / 60)) minutes)"
58 changes: 58 additions & 0 deletions jobs/action_model_testing/vjepa/clips_without_coi_crop/job_ab.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/bin/bash
#SBATCH --job-name=vjepa_ablation_NWE
#SBATCH --partition=pi_satra
#SBATCH --cpus-per-task=8
#SBATCH --mem=400G
#SBATCH --gres=gpu:1
#SBATCH --time=06:00:00
#SBATCH --array=0-14
#SBATCH --output=/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/logs/ablation_%A_%a.out
#SBATCH --error=/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/logs/ablation_%A_%a.err

export HF_HOME=/home/aparnabg/.cache/huggingface
export PYTHONUNBUFFERED=1

module load miniforge/24.3.0-0
module load cudnn
module load cuda
conda deactivate
source /home/aparnabg/orcd/scratch/miniconda3/etc/profile.d/conda.sh
conda activate vjepa2-312

# -------------------------------------------------------
# Map array index (0-14) -> (seed, head)
# 0 = seed 42, linear 5 = seed 456, linear
# 1 = seed 42, mlp_small 6 = seed 456, mlp_small
# 2 = seed 42, mlp_large 7 = seed 456, mlp_large
# 3 = seed 42, attentive 8 = seed 456, attentive
# 4 = seed 42, transformer 9 = seed 456, transformer
# 10 = seed 123, linear
# 11 = seed 123, mlp_small
# 12 = seed 123, mlp_large
# 13 = seed 123, attentive
# 14 = seed 123, transformer
# -------------------------------------------------------

SEEDS=(42 456 123)
HEADS=(linear mlp_small mlp_large attentive transformer)

SEED_IDX=$(( SLURM_ARRAY_TASK_ID / 5 ))
HEAD_IDX=$(( SLURM_ARRAY_TASK_ID % 5 ))

SEED=${SEEDS[$SEED_IDX]}
HEAD=${HEADS[$HEAD_IDX]}

echo "=============================================="
echo "Job array id : ${SLURM_ARRAY_TASK_ID}"
echo "Seed : ${SEED}"
echo "Head : ${HEAD}"
echo "Start : $(date)"
echo "Node : ${SLURMD_NODENAME}"
echo "GPU : $(nvidia-smi --query-gpu=name --format=csv,noheader)"
echo "=============================================="

python /home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/train_probe_ablation.py \
--seed ${SEED} \
--head ${HEAD}

echo "Done seed=${SEED} head=${HEAD}: $(date)"
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash
# ============================================================
# Master launcher
# Usage: bash launch_all.sh
#
# What it does:
# 1. Submits extract job
# 2. Submits seed array job with --dependency=afterok:<extract_job_id>
# so seeds only start after features are successfully extracted
# ============================================================

LOG_DIR="/orcd/data/satra/002/projects/SAILS/vjepa_features/models_output_seeds/clips/vjepa/logs"
mkdir -p $LOG_DIR

CODE_DIR="/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video"

# --- Step 1: Submit feature extraction ---
EXTRACT_JOB=$(sbatch --parsable ${CODE_DIR}/submit_extract.sh)
echo "Submitted feature extraction job: $EXTRACT_JOB"

# --- Step 2: Submit seed training jobs (depend on extraction finishing) ---
SEED_JOB=$(sbatch --parsable \
--dependency=afterok:${EXTRACT_JOB} \
${CODE_DIR}/submit_seeds.sh)
echo "Submitted seed training jobs (array): $SEED_JOB"
echo " -> Seeds 42, 456, 123 will start after job $EXTRACT_JOB completes"

echo ""
echo "Monitor with:"
echo " squeue -u \$USER"
echo " tail -f ${LOG_DIR}/extract_${EXTRACT_JOB}.out"
echo " tail -f ${LOG_DIR}/probe_${SEED_JOB}_0.out # seed 42"
echo " tail -f ${LOG_DIR}/probe_${SEED_JOB}_1.out # seed 456"
echo " tail -f ${LOG_DIR}/probe_${SEED_JOB}_2.out # seed 123"
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/bin/bash
#SBATCH --job-name=bash
#SBATCH --partition=pi_satra
#SBATCH --cpus-per-task=8
#SBATCH --mem=200G
#SBATCH --gres=gpu:1
#SBATCH --time=06:00:00
#SBATCH --array=0-14
#SBATCH --output=/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/rmm/logs/ablation_%A_%a.out
#SBATCH --error=/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/rmm/logs/ablation_%A_%a.err

export HF_HOME=/home/aparnabg/.cache/huggingface
export PYTHONUNBUFFERED=1

module load miniforge/24.3.0-0
module load cudnn
module load cuda
conda deactivate
source /home/aparnabg/orcd/scratch/miniconda3/etc/profile.d/conda.sh
conda activate vjepa2-312

# -------------------------------------------------------
# Map array index (0-14) -> (seed, head)
# 0 = seed 42, linear 5 = seed 456, linear
# 1 = seed 42, mlp_small 6 = seed 456, mlp_small
# 2 = seed 42, mlp_large 7 = seed 456, mlp_large
# 3 = seed 42, attentive 8 = seed 456, attentive
# 4 = seed 42, transformer 9 = seed 456, transformer
# 10 = seed 123, linear
# 11 = seed 123, mlp_small
# 12 = seed 123, mlp_large
# 13 = seed 123, attentive
# 14 = seed 123, transformer
# -------------------------------------------------------

SEEDS=(42 456 123)
HEADS=(linear mlp_small mlp_large attentive transformer)

SEED_IDX=$(( SLURM_ARRAY_TASK_ID / 5 ))
HEAD_IDX=$(( SLURM_ARRAY_TASK_ID % 5 ))

SEED=${SEEDS[$SEED_IDX]}
HEAD=${HEADS[$HEAD_IDX]}

echo "=============================================="
echo "Job array id : ${SLURM_ARRAY_TASK_ID}"
echo "Seed : ${SEED}"
echo "Head : ${HEAD}"
echo "Start : $(date)"
echo "Node : ${SLURMD_NODENAME}"
echo "GPU : $(nvidia-smi --query-gpu=name --format=csv,noheader)"
echo "=============================================="

python /home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/rmm/train_probe_ablation.py \
--seed ${SEED} \
--head ${HEAD}

echo "Done seed=${SEED} head=${HEAD}: $(date)"
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash
# ============================================================
# RMM Master Launcher
# Usage: bash launch_all.sh
#
# 1. Submits RMM feature extraction job
# 2. Submits 3 seed probe jobs (array) with dependency on
# extraction finishing successfully (afterok)
# ============================================================

LOG_DIR="/orcd/data/satra/002/projects/SAILS/vjepa_features/models_output_seeds/clips/rmm/logs"
mkdir -p $LOG_DIR

CODE_DIR="/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/rmm"

# --- Step 1: Submit feature extraction ---
EXTRACT_JOB=$(sbatch --parsable ${CODE_DIR}/submit_extract.sh)
echo "Submitted RMM feature extraction job: $EXTRACT_JOB"

# --- Step 2: Submit seed training jobs (depend on extraction finishing) ---
SEED_JOB=$(sbatch --parsable \
--dependency=afterok:${EXTRACT_JOB} \
${CODE_DIR}/submit_seeds.sh)
echo "Submitted RMM seed training jobs (array): $SEED_JOB"
echo " -> Seeds 42, 456, 123 will start after job $EXTRACT_JOB completes"

echo ""
echo "Monitor with:"
echo " squeue -u \$USER"
echo " tail -f ${LOG_DIR}/extract_${EXTRACT_JOB}.out"
echo " tail -f ${LOG_DIR}/probe_${SEED_JOB}_0.out # seed 42"
echo " tail -f ${LOG_DIR}/probe_${SEED_JOB}_1.out # seed 456"
echo " tail -f ${LOG_DIR}/probe_${SEED_JOB}_2.out # seed 123"
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash
#SBATCH --job-name=rmm_extract
#SBATCH --partition=pi_satra
#SBATCH --cpus-per-task=8
#SBATCH --mem=400G
#SBATCH --gres=gpu:h100:1
#SBATCH --time=10:00:00
#SBATCH --output=/orcd/data/satra/002/projects/SAILS/vjepa_features/models_output_seeds/clips/rmm/logs/extract_%j.out
#SBATCH --error=/orcd/data/satra/002/projects/SAILS/vjepa_features/models_output_seeds/clips/rmm/logs/extract_%j.err

export HF_HOME=/home/aparnabg/.cache/huggingface
export PYTHONUNBUFFERED=1

module load miniforge/24.3.0-0
module load cudnn
module load cuda
conda deactivate
source /home/aparnabg/orcd/scratch/miniconda3/etc/profile.d/conda.sh
conda activate vjepa2-312

mkdir -p /orcd/data/satra/002/projects/SAILS/vjepa_features/models_output_seeds/clips/rmm/logs

echo "Starting RMM feature extraction: $(date)"
echo "Node: $SLURMD_NODENAME"
echo "GPU: $(nvidia-smi --query-gpu=name --format=csv,noheader)"

python /home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/rmm/extract_features.py

echo "RMM feature extraction done: $(date)"
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash
#SBATCH --job-name=bash
#SBATCH --partition=pi_satra
#SBATCH --cpus-per-task=8
#SBATCH --mem=400G
#SBATCH --gres=gpu:1
#SBATCH --time=06:00:00
#SBATCH --array=0-2
#SBATCH --output=/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/rmm/logs/probe_%A_%a.out
#SBATCH --error=/home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/rmm/logs/probe_%A_%a.err

export HF_HOME=/home/aparnabg/.cache/huggingface
export PYTHONUNBUFFERED=1

module load miniforge/24.3.0-0
module load cudnn
module load cuda
conda deactivate
source /home/aparnabg/orcd/scratch/miniconda3/etc/profile.d/conda.sh
conda activate vjepa2-312

# Map array index -> seed
SEEDS=(42 456 123)
SEED=${SEEDS[$SLURM_ARRAY_TASK_ID]}

echo "Starting RMM probe training seed=${SEED} array_id=${SLURM_ARRAY_TASK_ID}: $(date)"
echo "Node: $SLURMD_NODENAME"
echo "GPU: $(nvidia-smi --query-gpu=name --format=csv,noheader)"

python /home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/rmm/train_probe.py \
--seed ${SEED}

echo "RMM probe training done seed=${SEED}: $(date)"
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash
#SBATCH --job-name=vjepa_extract
#SBATCH --partition=pi_satra
#SBATCH --cpus-per-task=8
#SBATCH --mem=400G
#SBATCH --gres=gpu:h100:1
#SBATCH --time=10:00:00
#SBATCH --output=/orcd/data/satra/002/projects/SAILS/vjepa_features/models_output_seeds/clips/vjepa/logs/extract_%j.out
#SBATCH --error=/orcd/data/satra/002/projects/SAILS/vjepa_features/models_output_seeds/clips/vjepa/logs/extract_%j.err

export HF_HOME=/home/aparnabg/.cache/huggingface
export PYTHONUNBUFFERED=1

module load miniforge/24.3.0-0
module load cudnn
module load cuda
conda deactivate
source /home/aparnabg/orcd/scratch/miniconda3/etc/profile.d/conda.sh
conda activate vjepa2-312

# Make log dir just in case
mkdir -p /orcd/data/satra/002/projects/SAILS/vjepa_features/models_output_seeds/clips/vjepa/logs

echo "Starting feature extraction: $(date)"
echo "Node: $SLURMD_NODENAME"
echo "GPU: $(nvidia-smi --query-gpu=name --format=csv,noheader)"

python /home/aparnabg/orcd/scratch/all_project_files/action_sota_models/vjeap_full_video/extract_features.py

echo "Feature extraction done: $(date)"
Loading