数据并行加载在多个gpu上

本文介绍了如何在PyTorch中利用DataLoader和DataParallel进行数据并行加载,特别是在多GPU环境下。当处理2D图像时,可以顺利加载,但3D点云检测中由于点云数量不一致导致加载问题。解决方案是采用mmcv的DataContainer和MMDataParallel,以列表为单位平分数据到GPU上,解决了不规则数据的并行加载问题。
摘要由CSDN通过智能技术生成

一般数据读取会涉及两个函数:

1.get_dataset(data_path,cfg)。其中的__getitem__(self,idx)函数,这个函数用于读取给定路径下的数据并处理成所需的格式,返回一个数据的data,data一般为字典格式。作用:规范数据,path-->tensor(data)。

2.dataloader(get_dataset),可直接调用pytorch中的接口。通过

for i ,data_batch in enumerate(dataloader)

 调用前文提到的__getitem__,返回batch_size个data。之后按照pytirch中dataload函数,将多个data进一步处理,返回data_batch。

##先初始化model的网络结构,再将model定义为数据并行的状态
model = DataParallel(model.cuda(),device_ids=[0,1,2])

##训练数据前向传播
model(data_batch)

之后在使用model(data_batch)时,数据便会加载至model所在的gpu上。

pytorch中的DataLoader

def collate(data_batch, samples_per_gpu=1, num_gpus=1):
 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值