多机多卡分布式:
多机基本上和单机多卡差不多:
第一台机器(主设备):
torchrun --master_port 6666 --nproc_per_node=8 --nnodes=${nnodes} --node_rank=0 --master_addr=${master_addr} train_with_multi_machine_and_multi_gpu.py
第二台机器(从设备):
torchrun --master_port 6666 --nproc_per_node=6 --nnodes=${nnodes} --node_rank=1 --master_addr=${master_addr} train_with_multi_machine_and_multi_gpu.py
是不是非常简单!! 唯一的区别就是--node_rank的区别,其他一模一样。
简单解释一下里面的参数:
--nproc_per_node 指的是每个阶段的进程数,这里第一台8个GPU,第二台6个GPU
--nnodes 节点数,这里是两机,所以是2
--node_rank 节点rank,对于第一台机器是0,第二台机器是1
--master_addr 主节点的ip,这里我填的第一台机器的ip
--master_port 主节点的端口号