#!/bin/bash # The composition campaign (prereg tasks/prereg-llm-compose-v3.md): one (seed, arm) per array # element. Seed 1 runs locally on the A4000 as the hedge; this array covers seeds 2-3 x 3 arms. # Each element trains its own founders (cached per seed under models/, first writer wins via the # adapter_config.json check) and checkpoints every generation, so a requeued element resumes. # submit: qsub hpc/llm_compose.pbs status: qstat -u $USER -t # index -> seed = 2 + (i-1)/3, arm = (dry grounded dry_cat)[(i-1)%3] #PBS -l select=1:ncpus=8:mem=64gb:ngpus=1:gpu_type=L40S #PBS -l walltime=08:00:00 #PBS -N lam_compose #PBS -J 1-6 cd "$PBS_O_WORKDIR" export HF_HOME="$EPHEMERAL/hf_cache" export HF_DATASETS_CACHE="$EPHEMERAL/hf_cache/datasets" export TOKENIZERS_PARALLELISM=false export UV_CACHE_DIR="$EPHEMERAL/uvcache" ARMS=(dry grounded dry_cat) I=$((PBS_ARRAY_INDEX - 1)) SEED=$((2 + I / 3)) ARM=${ARMS[$((I % 3))]} source .venv/bin/activate nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader echo "seed=$SEED arm=$ARM start=$(date)" CFG="configs/llm/_gen/compose_s${SEED}_${ARM}.yaml" mkdir -p configs/llm/_gen python - "$SEED" "$ARM" "$CFG" <<'EOF' import sys, yaml seed, arm, out = int(sys.argv[1]), sys.argv[2], sys.argv[3] cfg = yaml.safe_load(open("configs/llm/compose_s1.yaml")) cfg["seed"] = seed cfg["arms"] = [arm] cfg["batch_size"] = 32 # L40S has 46 GB; the A4000 setting is 16 cfg["score_batch_size"] = 8 cfg["output"] = {"dir": f"results/llm_compose/s{seed}_{arm}"} yaml.safe_dump(cfg, open(out, "w"), sort_keys=False) EOF python -m llm.experiment "$CFG" echo "done: $(date)"