#!/usr/bin/env bash
# [mmdetection]tools/dist_train.sh
CONFIG=$1 # 命令输入的文件后面的第一个参数
GPUS=$2 # 命令输入文件后面的的第2个参数
NNODES=${NNODES:-1} #如果NNODES为空,那个返回1 表示分布中有多少个主机
NODE_RANK=${NODE_RANK:-0} #如果NODE_RANK为空,返回0。 表示分布式训练中,当前主机的序号
PORT=${PORT:-29500} #如果PORT为空,返回29500 表示master节点的端口号
MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} #master节点的ip地址,也就是也就是0号主机上的IP地址
PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ # 表示文件的上一级目录加上环境中
python -m torch.distributed.launch \ #调用torch.distributed.launch 分布式下训练模块
--nnodes=$NNODES \ #主机数目
--node_rank=$NODE_RANK \ # 当前主机的序号
--master_addr=$MASTER_ADDR \ # 0号主机的ip地址
--nproc_per_node=$GPUS \ # 一个节点中显卡的数量
--master_port=$PORT \ # 0号主机的端口号
$(dirname "$0")/train.py \ #训练文件加载
$CONFIG \# 配置文件
--launcher pytorch ${@:3}
## --launcher pytorch 参数则是指定使用 PyTorch 默认的启动器。
## ${@:3} 表示取 $@ 中从第三个参数开始到最后一个参数的子列表。
## $@ 表示所有传递给脚本的参数列表
网友评论