| #SBATCH --job-name=mxf_rl_drgrpo | |
| #SBATCH --partition=general | |
| #SBATCH --qos=high | |
| #SBATCH --gres=gpu:8 | |
| #SBATCH --cpus-per-task=8 | |
| #SBATCH --mem=256G | |
| #SBATCH --time=48:00:00 | |
| #SBATCH --no-requeue | |
| #SBATCH --output=/workspace-vast/celeste/maxact-fast/logs/%x_%j.out | |
| # Stage 6: Dr. GRPO RL (scripts/rl.py) — colocated single task: vLLM TP across all GPUs at | |
| # gpu_memory_utilization=0.35, HF actor+LoRA on cuda:0. `mkdir -p logs` once before first submit. | |
| # | |
| # sbatch scripts/sbatch_rl.sh # RLConfig defaults | |
| # sbatch scripts/sbatch_rl.sh --groups-per-step 64 --sync-every 4 # extra args pass through | |
| # | |
| # Venv (dedicated — vllm pins are hard, see pyproject [vllm] extra). Build once with: | |
| # uv venv /workspace-vast/celeste/envs/mxf-vllm --python 3.12 | |
| # uv pip install --python /workspace-vast/celeste/envs/mxf-vllm/bin/python \ | |
| # "vllm==0.19.0" "vllm-lens==1.1.0" "transformers==4.57.1" peft wandb --torch-backend=cu128 | |
| # Pins are load-bearing: vllm-lens 1.1.0 is built against vLLM 0.19.0 — on vLLM>=0.22 the hook | |
| # crashes then SILENTLY skips injection; cu128 matches the cluster's driver 570 (cu130 wheels | |
| # fail at import). transformers must stay <5 (apply_chat_template API break). | |
| # /workspace-vast/celeste/envs/vllm-lens (nla-experiments) is a known-good fallback with the same pins. | |
| set -euo pipefail | |
| ROOT=/workspace-vast/celeste/maxact-fast | |
| VENV=${VENV:-/workspace-vast/celeste/envs/mxf-vllm} | |
| source "$VENV/bin/activate" | |
| export VLLM_ALLOW_INSECURE_SERIALIZATION=1 # pickle for apply_model(partial) weight sync | |
| export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True | |
| export HF_HOME=/workspace-vast/pretrained_ckpts | |
| export HF_TOKEN_PATH=/workspace-vast/celeste/.cache/huggingface/token | |
| : "${WANDB_API_KEY:?set WANDB_API_KEY in your shell}" | |
| export PYTHONUNBUFFERED=1 | |
| export PYTHONPATH=$ROOT/src:${PYTHONPATH:-} | |
| # NEVER set CUDA_VISIBLE_DEVICES here — SLURM does it. | |
| cd "$ROOT" | |
| python scripts/rl.py --tp "${SLURM_GPUS_ON_NODE:-1}" "$@" | |