elya-snes / train /qa_queue.sh
elyanlabs's picture
Source snapshot of github.com/Scottcjn/elya-snes@544ccea (part 4)
8e0f023 verified
Raw History Blame Contribute Delete
909 Bytes
#!/bin/bash
# Run a list of train_qa.py argument strings, at most JOBS at a time.
#
# The GPU on this box is shared with other work and had ~2 GB free; launching
# ten arms at once produced CUDA_STATUS_ALLOC_FAILED on four of them, which is
# a silent way to lose a cell of a factorial. A queue is cheaper than
# re-reading logs to find out which arms never ran.
#
# echo "--nexp 1 --seed 1
# --nexp 4 --seed 1" | train/qa_queue.sh
set -u
cd "$(dirname "$0")/.."
JOBS=${JOBS:-3}
STEPS=${STEPS:-8000}
OUT=${OUT:-runs/qa}
mkdir -p "$OUT" runs/logs
while IFS= read -r args; do
[ -z "${args// /}" ] && continue
while [ "$(jobs -rp | wc -l)" -ge "$JOBS" ]; do sleep 5; done
tag=$(echo "$args" | tr -cd 'A-Za-z0-9.' | tr -s ' ' '_')
echo "launch: $args"
python3 train/train_qa.py --steps "$STEPS" --out "$OUT" $args \
> "runs/logs/$tag.log" 2>&1 &
done
wait
echo "queue done"