-
[MMDetection 에러] RuntimeError: Address already in useProgramming Error/PyTorch 2021. 12. 16. 20:24
RuntimeError: Address already in use Traceback (most recent call last): File "/root/miniconda3/lib/python3.7/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "/root/miniconda3/lib/python3.7/runpy.py", line 85, in _run_code exec(code, run_globals) File "/root/miniconda3/lib/python3.7/site-packages/torch/distributed/launch.py", line 235, in <module> main() File "/root/miniconda3/lib/python3.7/site-packages/torch/distributed/launch.py", line 231, in main cmd=process.args) subprocess.CalledProcessError: Command '['/root/miniconda3/bin/python', '-u', './tools/train.py', '--local_rank=0', 'configs/wider/retinanet_r50_fpn_1x.py', '--launcher', 'pytorch']' returned non-zero exit status 1.
MMDetection을 사용하는 도중에 위와 같은 오류를 만났습니다. 처음에는 가장 밑부분에 있는 아래와 같은 오류를 봤었는데요.
subprocess.CalledProcessError: Command '['/root/miniconda3/bin/python', '-u', './tools/train.py', '--local_rank=0', 'configs/wider/retinanet_r50_fpn_1x.py', '--launcher', 'pytorch']' returned non-zero exit status 1.
가장 위에 RuntimeError: Address already in use라는 에러 메시지를 보면 "이미 주소를 사용하고 있다"라고 합니다.
보통 MMDetection을 Train할 때, MMDetection 폴더 경로에서 아래처럼 shell 파일을 실행시켜서 학습을 합니다.
bash tools/dist_train.sh configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py 1(=number_of_gpu)
저는 위의 코드로 하나의 모델을 학습하고 있었고, 추가로 하나의 프로세스를 더 실행하려고 할 때 "Address already in use"라는 오류를 만났습니다.
dist_train.sh 파일을 살펴보면 아래와 같은 코드로 이루어져 있는데요.
#!/usr/bin/env bash CONFIG=$1 GPUS=$2 PORT=${PORT:-29500} PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ python -m torch.distributed.launch --nproc_per_node=$GPUS --master_port=$PORT \ $(dirname "$0")/train.py $CONFIG --launcher pytorch ${@:3}
여기서 PORT 번호를 입력하게 되는데, 이 번호가 이미 첫 프로세스로 사용되고 있어서 발생하는 오류였습니다. 따라서, 해당 -29500을 다른 번호로 바꾸어주면 문제없이 해결되었습니다.
'Programming Error > PyTorch' 카테고리의 다른 글