File size: 2,247 Bytes
97863b7 | 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 | #!/usr/bin/env bash
# run2 ํ์ต ๋ฐ์ฒ: TJ-2~6(5๋
ธ๋ร8=40 GPU) FSDP. host=TJ-2, ์์ปค=TJ-3~6. โ
TJ-1์ ํ์ต ์ ์ธ(eval watcher ์ ์ฉ).
# TJ-1(์ค์ผ์คํธ๋ ์ดํฐ)์์ ์คํ โ ๋ก์ปฌ ํ์ต ํ๋ก์ธ์ค ์์. host๋ ์๊ฒฉ(ssh TJ-2)์ด๋ผ ์๊ธฐ์ฐธ์กฐ ํจ์ ์์.
# ์ฌ์ฉ: scripts/launch_om_run2.sh <rdzv_id> <config_abspath> <outdir> <logdir> [extra train.py args...]
set -u
R=/NHNHOME/WORKSPACE/0526040027_A/OpenPath
RDZV="$1"; CFG="$2"; OUTDIR="$3"; LOGDIR="$4"; shift 4
EXTRA="$*"
HOST="TJ-2"
EP="10.34.15.21:29500" # TJ-2 IB IP (rendezvous rank0)
WORKERS="TJ-3 TJ-4 TJ-5 TJ-6"
PYC="\$HOME/.cache/op_pyc_$RDZV" # ๋
ธ๋-๋ก์ปฌ. ์๊ฒฉ ์
ธ์์ ํ์ฅ๋๋๋ก escape
ENV="WANDB_MODE=disabled NCCL_DEBUG=WARN NCCL_IB_HCA=mlx5_1,mlx5_2,mlx5_4,mlx5_9 \
NCCL_SOCKET_IFNAME=bond0 GLOO_SOCKET_IFNAME=bond0 \
NCCL_IB_TIMEOUT=22 NCCL_IB_RETRY_CNT=13 NCCL_IB_QPS_PER_CONNECTION=4 \
PYTHONDONTWRITEBYTECODE=1 PYTHONPYCACHEPREFIX=$PYC PYTHONPATH=$R/third_party/OpenMidnight"
TR="venv/bin/torchrun --nnodes=5 --nproc-per-node=8 --rdzv-backend=c10d \
--rdzv-endpoint=$EP --rdzv-id=$RDZV \
third_party/OpenMidnight/dinov2/train/train.py --config-file $CFG --output-dir $OUTDIR $EXTRA"
mkdir -p "$LOGDIR" "$OUTDIR"
# 1) host(TJ-2) ์๊ฒฉ ๊ธฐ๋ โ โ
ssh๋ฅผ &๋ก ๋ฐฑ๊ทธ๋ผ์ด๋(์ ๊ทธ๋ฌ๋ฉด ์๊ฒฉ setsid์ ์์ fd๋ฅผ ๋ฌผ๊ณ ssh๊ฐ ๋ฐํ ์ ํจ=๋ฐ์ฒ ํ)
echo "launching host on $HOST ..."
ssh -n -o BatchMode=yes "$HOST" "mkdir -p $PYC; cd $R && setsid env $ENV $TR > $LOGDIR/${HOST}.log 2>&1 < /dev/null & echo ${HOST}-host-fired" &
# 2) host torchrun๊ฐ store ๋ฐ์ธ๋ฉํ ์๊ฐ(๊ณ ์ ๋๊ธฐ). c10d๋ ์์ปค๊ฐ ์ฌ์๋๋ก ๋ถ์ผ๋ฏ๋ก ssํด๋ง ๋ถํ์.
echo "waiting 30s for host store bind on $EP ..."
sleep 30
echo "firing 4 workers"
# 3) ์์ปค(TJ-3~6) ๋ณ๋ ฌ ๊ธฐ๋
for n in $WORKERS; do
ssh -n -o BatchMode=yes "$n" "mkdir -p $PYC; cd $R && setsid env $ENV $TR > $LOGDIR/${n}.log 2>&1 < /dev/null & echo ${n}-fired" &
done
# โ
wait ๋์ ๊ณ ์ sleep โ bg ssh๊ฐ ์๊ฒฉ setsid์ fd๋ฅผ ๋ฌผ์ด ๋ฐํ ์ ํ ์ ์์ด wait๋ ์์ํ ๋ฉ์ถค(autoresume blocking ํธ์ถ๋ ๋งํ).
sleep 20
echo "ALL launched: host $HOST + workers $WORKERS | rdzv=$RDZV | logs=$LOGDIR | out=$OUTDIR"
|