File size: 1,950 Bytes
2ae6691
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
# Run all evals on THIS node, on one GPU nobody is using (for an interactive session on a compute node).
# Usage: ./eval_here.sh [model.pt]    (default: export the newest complete checkpoint first)
set -uo pipefail
cd /fsx/ajay-stu/AR
source .venv/bin/activate
export PYTHONPATH=$PWD HF_DATASETS_OFFLINE=1
H=$(hostname)

# 1) never on our own training nodes (their GPUs are fully used by training)
TRAIN=$(scontrol show hostnames $(squeue -u $USER -n ar-real -h -o %N | head -1) 2>/dev/null)
echo "$TRAIN" | grep -qx "$H" && { echo "STOP: $H is one of our training nodes"; exit 1; }

# 2) one free GPU (inside a Slurm session, use the GPU Slurm gave us)
if [ -z "${CUDA_VISIBLE_DEVICES:-}" ]; then
  G=$(nvidia-smi --query-gpu=index,memory.used --format=csv,noheader,nounits | awk -F', ' '$2 < 2000 {print $1; exit}')
  [ -z "$G" ] && { echo "no free GPU on $H"; exit 1; }
  export CUDA_VISIBLE_DEVICES=$G
fi
used=$(nvidia-smi -i ${CUDA_VISIBLE_DEVICES%%,*} --query-gpu=memory.used --format=csv,noheader,nounits)
[ "$used" -ge 2000 ] && { echo "GPU $CUDA_VISIBLE_DEVICES already in use ($used MiB)"; exit 1; }
echo "=== on $H, GPU $CUDA_VISIBLE_DEVICES ==="

# 3) model: the given file, or export the newest complete checkpoint once (~5 min, CPU)
C=/fsx/ajay-stu/ar-data/checkpoints
if [ -n "${1:-}" ]; then
  M=$1
else
  CK=$(for d in $C/ckpt_*; do if [ -f $d/.metadata ]; then echo $d; fi; done | sort -t_ -k2 -n | tail -1)
  M=/fsx/ajay-stu/ar-data/eval/model_$(basename $CK).pt
  [ -f $M ] || python -m ar.eval.export_ckpt --ckpt $CK --out $M || { echo "export failed"; exit 1; }
fi
echo "=== evaluating $(basename $M)  $(date -u) ==="

# 4) all evals; keep the score lines
python -m ar.eval.val_loss --model $M --data /fsx/ajay-stu/ar-data/heldout/stack_python.bin /fsx/ajay-stu/ar-data/heldout/fineweb.bin
python -m ar.eval.humaneval --model $M | tail -1
python -m ar.eval.gsm8k --model $M | tail -1
echo "=== done  $(date -u) ==="