모델 학습을 위한 train.py를 분산학습 시키는 스크립트 코드
#!/usr/bin/env bash
set -x
GPUS=$1
NNODES=${NNODES:-1}
NODE_RANK=${NODE_RANK:-0}
PORT=${PORT:-29500}
MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"}
PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \
python -m torch.distributed.run \
--nnodes=$NNODES --node_rank=$NODE_RANK \
--master_addr=$MASTER_ADDR --nproc_per_node=$GPUS \
--master_port=$PORT \
$(dirname "$0")/train.py \
${@:2}
위 스크립트 명령어를 하나 하나 주석을 달면 다음과 같다.
#!/usr/bin/env bash # 이 줄은 스크립트가 bash 인터프리터로 실행되도록 지정합니다.
set -x # 이 줄은 스크립트의 모든 명령어를 실행하기 전에 출력하도록 설정합니다.
GPUS=$1 # 이 줄은 첫 번째 인자를 GPUS라는 변수에 할당합니다.
NNODES=${NNODES:-1} # 이 줄은 NNODES라는 변수가 정의되지 않았다면 1로 설정하고, 그렇지 않다면 그대로 둡니다.
NODE_RANK=${NODE_RANK:-0} # 이 줄은 NODE_RANK라는 변수가 정의되지 않았다면 0으로 설정하고, 그렇지 않다면 그대로 둡니다.
PORT=${PORT:-29500} # 이 줄은 PORT라는 변수가 정의되지 않았다면 29500으로 설정하고, 그렇지 않다면 그대로 둡니다.
MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} # 이 줄은 MASTER_ADDR이라는 변수가 정의되지 않았다면 "127.0.0.1"로 설정하고, 그렇지 않다면 그대로 둡니다.
PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ # 이 줄은 현재 스크립트 파일의 상위 디렉토리를 PYTHONPATH에 추가합니다.
python -m torch.distributed.run \ # 이 줄은 파이썬 모듈 torch.distributed.run을 실행합니다.
--nnodes=$NNODES --node_rank=$NODE_RANK \ # 이 줄은 분산 학습을 위한 노드 수와 랭크를 인자로 전달합니다.
--master_addr=$MASTER_ADDR --nproc_per_node=$GPUS \ # 이 줄은 마스터 주소와 노드 당 프로세스 수를 인자로 전달합니다.
--master_port=$PORT \ # 이 줄은 마스터 포트를 인자로 전달합니다.
$(dirname "$0")/train.py \ # 이 줄은 현재 스크립트 파일과 같은 디렉토리에 있는 train.py 파일을 실행합니다.
${@:2} # 이 줄은 두 번째 인자부터 모든 인자를 train.py에 전달합니다.
요렇게 파일을 만들어놓고 train.py 학습 파일 별 요구하는 인자들을 끝에 몰아 넣어 쓰면 된다.
RTX3600 구닥다리 열일중...
참고:
https://github.com/yjh0410/YOWOv2/issues/8
https://mmaction2.readthedocs.io/en/latest/user_guides/train_test.html
'Deep Learning' 카테고리의 다른 글
GPT API의 새로운 기능 Structured Outputs 사용해보기 (0) | 2024.08.12 |
---|---|
GPT-4를 활용하여 여러 장의 이미지를 사용한 few-shot learning 하기 (0) | 2024.08.09 |
Q. GPU 작업 모니터 편리하게 하는 방법은? (0) | 2022.11.08 |
[GAN 첫걸음] 진짜 쉽게 설명해주는 GAN (0) | 2021.07.28 |
[AI class w10d4] 신경망 기초 - 순환 신경망 (0) | 2021.07.03 |