个人技术分享

参数说明

1. 较早的pytorch.distributed.launch

python -m torch.distributed.launch --nproc_per_node=4 --nnodes=1 --node_rank=0 train.py --args XXX

在这里插入图片描述

参数解析:

nnodes:节点(主机)的数量,通常一个节点对应一个主机
node_rank:指的是当前启动的是第几台服务器,从 0 开始。
nproc_per_node:一个节点中显卡的数量
-master_addr:master节点的ip地址,也就是0号主机的IP地址,该参数是为了让 其他节点 知道0号节点的位,来将自己训练的参数传送过去处理
-master_port:master节点的port号,在不同的节点上master_addr和master_port的设置是一样的,用来进行通信

原文链接:http://t.csdnimg.cn/bDRj0

2. transfer a torch variable to a gpu

	device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")		# 指定设备
	device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")		# 指定设备
	device = (input1.device if input1.is_cuda else torch.device('cpu'))			# 指定目标变量的设备
	x=x.to(device)

3. torch.nn.DataParallel

  • link

  • 并行模块的输入,可以是module或module的子块

from torchvision import models
model = models.resnet50(pretrained=True) #pretrained=True 加载模型以及训练过的参数
# 下面两者都可
model.encoder = torch.nn.DataParallel(model.encoder)
model = torch.nn.DataParallel(model)