From ad4622e42abf2a55a37c5e522a6f8302e2e95cfd Mon Sep 17 00:00:00 2001 From: Oscar Wan Date: Tue, 21 Jul 2026 15:28:06 -0700 Subject: Add portable 135M BP sweep handoff Match the active EP configuration and support four-GPU BP candidates from collaborators' data locations. Co-authored-by: Cursor --- sbatch/fw135m_full.sbatch | 54 ++++++++++++++++++++++++++++++++++ sbatch/fw135m_lr_sweep.sbatch | 67 +++++++++++++++++++++++++++++++++++++++++++ sbatch/fw135m_smoke.sbatch | 57 ++++++++++++++++++++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 sbatch/fw135m_full.sbatch create mode 100644 sbatch/fw135m_lr_sweep.sbatch create mode 100644 sbatch/fw135m_smoke.sbatch (limited to 'sbatch') diff --git a/sbatch/fw135m_full.sbatch b/sbatch/fw135m_full.sbatch new file mode 100644 index 0000000..f0a8b79 --- /dev/null +++ b/sbatch/fw135m_full.sbatch @@ -0,0 +1,54 @@ +#!/bin/bash +#SBATCH --job-name=fw135m-full +#SBATCH --output=/orion/u/oscarwan/ept/ep_run/runs/slurm-fw135m-full-%A_%a.out +#SBATCH --error=/orion/u/oscarwan/ept/ep_run/runs/slurm-fw135m-full-%A_%a.err +#SBATCH --time=72:00:00 +#SBATCH --account=orion +#SBATCH --partition=orion +#SBATCH --nodes=1 +#SBATCH --ntasks-per-node=1 +#SBATCH --gres=gpu:a6000:1 +#SBATCH --cpus-per-task=16 +#SBATCH --mem=64G +#SBATCH --array=1-2 + +set -euo pipefail + +ROOT_DIR="${ROOT_DIR:-/orion/u/oscarwan/ept}" +RUN_DIR="${ROOT_DIR}/ep_run" +VENV_DIR="${VENV_DIR:-${ROOT_DIR}/.venv}" +PYTHON_BIN="${PYTHON_BIN:-python}" +WAND_PROJECT="ept-fineweb-135M" +WAND_ENTITY="eqprop-llm-training" +DATA_DIR="${DATA_DIR:-${RUN_DIR}/data/fineweb_edu}" +export EPT_DATA_ROOT="${EPT_DATA_ROOT:-${DATA_DIR%/fineweb_edu}}" +SELECTED_LR="${SELECTED_LR:?Submit with --export=ALL,SELECTED_LR=}" +SEED="${SLURM_ARRAY_TASK_ID:?This script must be submitted as an array job}" + +cd "${RUN_DIR}" +mkdir -p runs + +if [[ -f "${VENV_DIR}/bin/activate" ]]; then + source "${VENV_DIR}/bin/activate" +fi + +if [[ ! -f "${DATA_DIR}/meta.pkl" || ! -f "${DATA_DIR}/train.bin" || ! -f "${DATA_DIR}/val.bin" ]]; then + echo "FineWeb-Edu data is missing at ${DATA_DIR}." >&2 + echo "Run prepare_fineweb.py first to create the dataset." >&2 + exit 1 +fi + +echo "Host: $(hostname)" +echo "Job ID: ${SLURM_JOB_ID:-local}; seed: ${SEED}" +echo "Git commit: $(git rev-parse --short HEAD)" +echo "CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES:-unset}" +echo "W&B: ${WAND_ENTITY}/${WAND_PROJECT}" +echo "Selected Adam-side LR: ${SELECTED_LR}; data: ${DATA_DIR}" +nvidia-smi + +"${PYTHON_BIN}" fw135m_baseline.py \ + --mode full \ + --lr "${SELECTED_LR}" \ + --seed "${SEED}" \ + --wandb_project "${WAND_PROJECT}" \ + --execute diff --git a/sbatch/fw135m_lr_sweep.sbatch b/sbatch/fw135m_lr_sweep.sbatch new file mode 100644 index 0000000..bdb403f --- /dev/null +++ b/sbatch/fw135m_lr_sweep.sbatch @@ -0,0 +1,67 @@ +#!/bin/bash +#SBATCH --job-name=fw135m-lr +#SBATCH --output=/orion/u/oscarwan/ept/ep_run/runs/slurm-fw135m-lr-%A_%a.out +#SBATCH --error=/orion/u/oscarwan/ept/ep_run/runs/slurm-fw135m-lr-%A_%a.err +#SBATCH --time=72:00:00 +#SBATCH --account=orion +#SBATCH --partition=orion +#SBATCH --nodes=1 +#SBATCH --ntasks-per-node=1 +#SBATCH --gres=gpu:a6000:1 +#SBATCH --cpus-per-task=16 +#SBATCH --mem=64G +#SBATCH --array=0-2 + +set -euo pipefail + +ROOT_DIR="${ROOT_DIR:-/orion/u/oscarwan/ept}" +RUN_DIR="${ROOT_DIR}/ep_run" +VENV_DIR="${VENV_DIR:-${ROOT_DIR}/.venv}" +PYTHON_BIN="${PYTHON_BIN:-python}" +WAND_PROJECT="ept-fineweb-135M" +WAND_ENTITY="eqprop-llm-training" +DATA_DIR="${DATA_DIR:-${RUN_DIR}/data/fineweb_edu}" +export EPT_DATA_ROOT="${EPT_DATA_ROOT:-${DATA_DIR%/fineweb_edu}}" +SEED="${SEED:-1}" +LRS=(7e-4 1e-3 1.4e-3) +LR="${LRS[${SLURM_ARRAY_TASK_ID:?This script must be submitted as an array job}]}" +LR_TAG="${LR//-/m}" +LR_TAG="${LR_TAG//./p}" +TAG="fw135m_bp_lr${LR_TAG}_s${SEED}" + +cd "${RUN_DIR}" +mkdir -p runs + +if [[ -f "${VENV_DIR}/bin/activate" ]]; then + source "${VENV_DIR}/bin/activate" +fi + +if [[ ! -f "${DATA_DIR}/meta.pkl" || ! -f "${DATA_DIR}/train.bin" || ! -f "${DATA_DIR}/val.bin" ]]; then + echo "FineWeb-Edu data is missing at ${DATA_DIR}." >&2 + echo "Run prepare_fineweb.py first to create the dataset." >&2 + exit 1 +fi + +echo "Host: $(hostname)" +echo "Job ID: ${SLURM_JOB_ID:-local}; array task: ${SLURM_ARRAY_TASK_ID}" +echo "Git commit: $(git rev-parse --short HEAD)" +echo "CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES:-unset}" +echo "W&B: ${WAND_ENTITY}/${WAND_PROJECT}; run: ${TAG}" +echo "Adam-side LR: ${LR}; data: ${DATA_DIR}" +nvidia-smi + +"${PYTHON_BIN}" casc_bp_train.py \ + --tag "${TAG}" \ + --L 12 --C 768 --H 12 --T 256 --B 24 \ + --steps 440000 \ + --lr "${LR}" \ + --warmup 1000 \ + --amp --olmo2 \ + --wd 0.1 \ + --opt muon --muon_lr 0.02 \ + --cosine --lr_min_ratio 0.1 \ + --data fineweb_edu \ + --seed "${SEED}" \ + --save_every 5000 --log 100 \ + --wandb "${WAND_PROJECT}" \ + --wandb_run "${TAG}" diff --git a/sbatch/fw135m_smoke.sbatch b/sbatch/fw135m_smoke.sbatch new file mode 100644 index 0000000..8fc366f --- /dev/null +++ b/sbatch/fw135m_smoke.sbatch @@ -0,0 +1,57 @@ +#!/bin/bash +#SBATCH --job-name=fw135m-smoke +#SBATCH --output=/orion/u/oscarwan/ept/ep_run/runs/slurm-fw135m-smoke-%j.out +#SBATCH --error=/orion/u/oscarwan/ept/ep_run/runs/slurm-fw135m-smoke-%j.err +#SBATCH --time=02:00:00 +#SBATCH --account=orion +#SBATCH --partition=orion +#SBATCH --nodes=1 +#SBATCH --ntasks-per-node=1 +#SBATCH --gres=gpu:a6000:1 +#SBATCH --cpus-per-task=16 +#SBATCH --mem=64G + +set -euo pipefail + +ROOT_DIR="${ROOT_DIR:-/orion/u/oscarwan/ept}" +RUN_DIR="${ROOT_DIR}/ep_run" +VENV_DIR="${VENV_DIR:-${ROOT_DIR}/.venv}" +PYTHON_BIN="${PYTHON_BIN:-python}" +WAND_PROJECT="ept-fineweb-135M" +WAND_ENTITY="eqprop-llm-training" +DATA_DIR="${DATA_DIR:-${RUN_DIR}/data/fineweb_edu}" +export EPT_DATA_ROOT="${EPT_DATA_ROOT:-${DATA_DIR%/fineweb_edu}}" +SEED="${SEED:-1}" + +cd "${RUN_DIR}" +mkdir -p runs + +if [[ -f "${VENV_DIR}/bin/activate" ]]; then + source "${VENV_DIR}/bin/activate" +fi + +if [[ ! -f "${DATA_DIR}/meta.pkl" || ! -f "${DATA_DIR}/train.bin" || ! -f "${DATA_DIR}/val.bin" ]]; then + echo "FineWeb-Edu data is missing at ${DATA_DIR}." >&2 + echo "Run prepare_fineweb.py first to create the dataset." >&2 + exit 1 +fi + +echo "Host: $(hostname)" +echo "Job ID: ${SLURM_JOB_ID:-local}" +echo "Git commit: $(git rev-parse --short HEAD)" +echo "CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES:-unset}" +echo "W&B: ${WAND_ENTITY}/${WAND_PROJECT}" +echo "Data: ${DATA_DIR}" +nvidia-smi + +"${PYTHON_BIN}" - <<'PY' +import torch, wandb +print("torch", torch.__version__, "cuda_available", torch.cuda.is_available(), "gpu_count", torch.cuda.device_count()) +print("wandb", wandb.__version__) +PY + +"${PYTHON_BIN}" fw135m_baseline.py \ + --mode smoke \ + --seed "${SEED}" \ + --wandb_project "${WAND_PROJECT}" \ + --execute -- cgit v1.2.3