多机多卡训练指南
1 分布式的机器配置
1.1 组成局域网
五台电脑IP地址分别为:192.168.56.111~115
组成局域网后有的电脑可以上互联网,有的不行。
测试是否组成局域网
- ifconfig 查看电脑IP
- ping 另外电脑的IP地址
1.2 共享home里面的文件夹(共享其它磁盘里的文件夹,权限不够)
首先设置要共享文件夹的电脑
ubuntu18.04怎么共享文件夹给其它电脑使用
Linux 多种方式实现文件共享
(https://jingyan.baidu.com/article/2f9b480dd15f4241cb6cc2d8.html)
其它要访问共享文件夹的电脑
在Ubuntu计算机上打开"主文件夹“,然后选择网络下的”连接到服务器“。在服务器地址中输入”smb://目标ip“
在 other location的服务器地址栏输入 smb:\192.168.56.113(192.168.56.113为有共享文件夹的电脑静态IP地址)
2 分布式训练
准备数据集imagenet
更改代码里的数据集路径
运行代码(貌似电脑数量为奇数会报error)
参考torch.distributed.launch.py设置:四台电脑的命令依次为(以第一台192.168.56.111为主机):
python -m torch.distributed.launch --nnodes=4 --node_rank=0 --nproc_per_node=1 --master_addr 192.168.56.111 --master_port 29500 train.py --per_node_batch_size 24
python -m torch.distributed.launch --nnodes=4 --node_rank=1 --nproc_per_node=1 --master_addr 192.168.56.111 --master_port 29500 train.py --per_node_batch_size 24
python -m torch.distributed.launch --nnodes=4 --node_rank=2 --nproc_per_node=1 --master_addr 192.168.56.111 --master_port 29500 train.py --per_node_batch_size 24python -m torch.distributed.launch --nnodes=4 --node_rank=3 --nproc_per_node=1 --master_addr 192.168.56.111 --master_port 29500 train.py --per_node_batch_size 24
–nnodes为总的节点数即电脑数量;
–node_rank为电脑的全局序号,rank=0的电脑必须是主机;
–nproc_per_node为每个电脑上的进程数量,一般一个GPU为一个进程;
–master_addr和–master_port为主机的IP地址和空闲端口地址;
train.py为通过launch.py启动的代码文件;(在后面的才是train.py的参数)
–per_node_batch_size为每个节点的batch size。
总进程数:world_size = args.nproc_per_node * args.nnodes

