分布式训练启动工具—Launch utility

Launch utility

概述:

torch.distributed 提供了一个启动工具,即 torch.distributed.launch,用于在每个单节点上启动多个分布式进程。其同时支持 Python2 和 Python 3。

launch 可用于单节点的分布式训练,支持 CPU 和 GPU。对于 GPU 而言,若每个进程对应一个 GPU,则训练将取得最大性能。可通过指定参数(nproc_per_node),让 launch 在单节点上创建指定数目的进程(不可大于该节点对应的 GPU 数目)。

该工具以及多进程分布式训练,目前只有在 NCCL 上才能发挥最好的性能,NCCL 也是被推荐用于分布式 GPU 训练的。

参数:

training_script

位置参数,单 GPU 训练脚本的完整路径,该工具将并行启动该脚本。

–nnodes

指定用来分布式训练脚本的节点数。

–node_rank

多节点分布式训练时,指定当前节点的 rank。

–nproc_per_node

指定当前节点上,使用 GPU 训练的进程数。建议将该参数设置为当前节点的 GPU 数量,这样每个进程都能单独控制一个 GPU,效率最高。

–master_addr

master 节点(rank 为 0)的地址,应该为 ip 地址或者 node 0 的 hostname。对于单节点多进程训练的情况,该参数可以设置为 127.0.0.1。

–master_port

指定分布式训练中,master 节点使用的端口号,必须与其他应用的端口号不冲突。

使用

单节点多进程分布式训练

python -m torch.distributed.launch --nproc_per_node=NUM_GPUS_YOU_HAVE YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other arguments of your training script)

多节点进程分布式

Node1(主机1)(192.168.1.1:1234)

python -m torch.distributed.launch --nproc_per_node=NUM_GPUS_YOU_HAVE --nnodes=2 --node_rank=0 --master_addr="192.168.1.1" --master_port=1234 YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other arguments of your training script)

Node2(主机2)

python -m torch.distributed.launch --nproc_per_node=NUM_GPUS_YOU_HAVE --nnodes=2 --node_rank=1 --master_addr="192.168.1.1" --master_port=1234 YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other arguments of your training script)

查看帮助

python -m torch.distributed.launch --help

知识补充:

在命令行中python -m 的作用:详细解释

-m mod run library module as a script (terminates option list)

"mod"是“module”的缩写,即“-m”选项后面的内容是 module(模块),其作用是把模块当成脚本来运行。

“terminates option list”意味着“-m”之后的其它选项不起作用,在这点上它跟“-c”是一样的,都是“终极选项”。官方把它们定义为“接口选项”(Interface options),需要区别于其它的普通选项或通用选项。

你可能感兴趣的:(分布式,分布式,深度学习,python)