调用torch.nn.DataParallel(),实现多gpu并行训练的一些心得

·总结:

        不论先前在os.environ['CUDA_VISIBLE_DEVICES']中指定多少块gpu如果只有torch.device('cuda'),不调用nn.DataParallel(),那么最终还是会用一块gpu

        如果在此基础上调用nn.DataParallel()指定设备号,那么将会在多块gpu上训练。

        △注意,dev=torch.device(<设备>)应该是不能直接给device赋值多块gpu的(即括号里面的参数只能填一块设备)

———————————————————————————————————————————

原项目train.py中,关于配置训练设备的代码如下:

调用torch.nn.DataParallel(),实现多gpu并行训练的一些心得_第1张图片

(可以看到它默认用一块gpu进行训练)

最后被我改成了这样:

调用torch.nn.DataParallel(),实现多gpu并行训练的一些心得_第2张图片

 运行train.py之后,可以看到确实每块gpu都被分配了内存:

调用torch.nn.DataParallel(),实现多gpu并行训练的一些心得_第3张图片

具体历程比较长比较混乱,暂时没有精力整理。开头红字部分都是我验证过的,如有错误欢迎指出。

 

你可能感兴趣的:(python,开发语言,深度学习,pytorch,机器学习,计算机视觉,ubuntu)