resource distribute in slurm

우병주·2025년 1월 3일
0

training1.sh는 다음과 같이 생김

SNAPSHOTS=snapshots/moco/imagenet100/cast_small
mkdir -p ${SNAPSHOTS}
mkdir -p ${SNAPSHOTS}/lincls

export PYTHONPATH=moco-v3/:$PYTHONPATH

python -u -W ignore moco-v3/main_moco_suppix.py \
    -a castv2_small -b 256 --workers 0 \
    --optimizer=adamw --lr=1.5e-4 --weight-decay=.1 \
    --epochs=200 --warmup-epochs=20 \
    --stop-grad-conv1 --moco-m-cos --moco-t=.2 \
    --dist-url 'tcp://localhost:10001' \
    --multiprocessing-distributed --world-size 1 --rank 0 \
    /u/bwoo/Img_100
mv checkpoint_0199.pth.tar ${SNAPSHOTS}

python -u -W ignore moco-v3/main_lincls_suppix.py \
    -a castv2_small --lr 0.8 -b 256 --workers 0 \
    --dist-url 'tcp://localhost:10001' \
    --multiprocessing-distributed --world-size 1 --rank 0 \
    --pretrained ${SNAPSHOTS}/checkpoint_0199.pth.tar \
    /u/bwoo/Img_100/ &> lincls_log
mv checkpoint.pth.tar model_best.pth.tar lincls_log ${SNAPSHOTS}/lincls

나는 실험을 다음과 같이 돌림

bash job_cript.sh

현재의 GPU를 1개쓰는 job_script.sh는 다음과 같음

#!/bin/bash
#SBATCH --job-name=CAST-SEG
#SBATCH --partition=gpuA100x4
#SBATCH --nodes=1                    
#SBATCH --gres=gpu:1 
#SBATCH --ntasks-per-node=1             
#SBATCH --cpus-per-task=32           
#SBATCH --mem=80G                   
#SBATCH --time=12:00:00            
#SBATCH --output=/u/bwoo/logs/output.log
#SBATCH --error=/u/bwoo/logs/error.log

cd ./CASTv2                
conda activate cast

bash training1.sh

GPU를 2개 쓰는 job_script.sh는 다음과 같음

#!/bin/bash
#SBATCH --job-name=CAST-SEG
#SBATCH --partition=gpuA100x4
#SBATCH --nodes=1                    
#SBATCH --gres=gpu:2
#SBATCH --ntasks-per-node=2             
#SBATCH --cpus-per-task=32               
#SBATCH --mem=80G                   
#SBATCH --time=12:00:00            
#SBATCH --output=/u/bwoo/logs/output.log
#SBATCH --error=/u/bwoo/logs/error.log

cd ./CASTv2                
conda activate cast

bash training1.sh

여기서, 실험 2개를 노드 1개에서 동시에 돌리고 싶을때 (아래 명령어는 순차적인데, 동시에 돌리고 싶음!) :

bash training1.sh
bash training2.sh

기존 실험보다 더 무거운 실험 돌릴거라 GPU 2개가 필요한데,
첫 번째 실험에는 0,1 번 GPU, 두 번째 실험에는 2,3 번 GPU를 할당하고 싶고,
각 실험당 CPU를 32씩 할당하고 싶음.
노드에는 A100이 총 4개가 달려있고, CPU코어는 최대 64개까지 사용 가능함


task가 무엇인지? gpus 개수랑 똑같이 해야 에러 안생기던데.

관련 채용 정보