pytorch使用DistributedParallel单机多GPU训练

① 导入包import torch.distributed as dist
from torch.utils.data.distributed import DistributedSampler
③ 引入local_rank参数
parser.add_argument('--local_rank', type=int, default=-1)
④ 进程初始化
torch.distributed.init_process_group(backend='nccl',init_method='env://',rank=parser.local_rank, world_size=GPU_num) 其中,world_size代表使用的GPU数量;
⑤ 数据分发
data_sampler=DistributedSampler(dataset_train,rank=parser.local_rank,num_replicas=world_size)
dataloader_train=DataLoader(dataset_train,batch_size=2,num_workers=2,collate_fn=collater, drop_last=True, pin_memory=True, sampler=data_sampler) 其中,batch_size自行设置大小
⑥ 显卡选择
torch.cuda.set_device(parser.local_rank)
device = torch.device("cuda", parser.local_rank)
⑦ 并行处理
model= torch.nn.parallel.DistributedDataParallel(model, device_ids=[parser.local_rank], output_device=parser.local_rank, find_unused_parameters=True)
⑧ 训练周期for循环中加上
data_sampler.set_epoch(epoch_num)

训练语句
以两块GPU为例:

CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 train.py

Reference:

https://www.cnblogs.com/JunzhaoLiang/p/13535952.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>