pytorch多卡调用与选择
单机多卡
第一步,查看gpu环境:
执行:nvidia-smi
第二步,gpu选择:
执行:os.environ['CUDA_VISIBLE_DEVICES'] = '0,3'
将gpu环境设定为0卡和3卡。
使用显卡训练有两个部分需要进行挂gpu。
1数据:直接
inputs = inputs.cuda()
labels = labels.cuda()
在模型上并行我们需要:
model = nn.DataParallel(model) # or torch.nn.DataParallel(net,device_ids=[0,1]).cuda()
model = model.cuda()
平衡DataParallel带来的显存使用不平衡:
使用DistributedDataParallel来代替DataParallel
初始化:
torch.distributed.init_process_group(backend='nccl', init_method='tcp://localhost:23456', rank=0, world_size=1)
分发:
torch.distributed.init_process_group(backend="nccl")
model = DistributedDataParallel(model) # device_ids will include all GPU devices by default
但是这里需要注意的是, 如果使用这句代码, 直接在pycharm或者别的编辑器中,是没法正常运行的, 因为这个需要在shell的命令行中运行, 如果想要正确执行这段代码, 假设这段代码的名字是main.py, 可以使用如下的方法进行:
python -m torch.distributed.launch main.py
多机多卡任务还未试验过,暂不书写,详细方法可以参考多GPU使用
https://zhuanlan.zhihu.com/p/86441879
博主写的很详细。