在torch官方文档中谈到DDP时,说要设置如下:
def setup(rank, world_size):
os.environ['MASTER_ADDR'] = 'localhost'
os.environ['MASTER_PORT'] = '12355'
现在我正在使用 slurm 提交 sbatch 作业,在普林斯顿大学提供的本教程中: https://github.com/PrincetonUniversity/multi_gpu_training/tree/main/02_pytorch_ddp 它具有以下设置:
export MASTER_PORT=$(expr 10000 + $(echo -n $SLURM_JOBID | tail -c 4))
master_addr=$(scontrol show hostnames "$SLURM_JOB_NODELIST" | head -n 1)
export MASTER_ADDR=$master_addr
echo "MASTER_ADDR="$MASTER_ADDR
但是似乎即使我只是将master_addr保留为localhost,将master_port保留为12355,然后将其提交到slurm,它仍然可以运行。
有人可以解释一下吗?比如“12355”从哪里来,可以是随机的吗?
谢谢!
是的,端口号是您计算机上可用的任何超过 1024 的随机端口(这些端口是保留的)。