我将nn.DataParallel()
用于model
,但遇到错误。
我正在做类似的事情
self.model = self.model.to(device)
self.model = nn.DataParallel(self.model)
如果设备为cuda:1
,那么我得到RuntimeError: all tensors must be on devices[0]
。
但是,如果我将设备更改为cuda:0
,那么在多个GPU上进行并行训练就不会出错。我想知道问题是什么。
答案 0 :(得分:0)
我将以下内容:self.model = DataParallel(self.model)
更改为:self.model = DataParallel(self.model, device_ids=[1,0])
现在工作正常。但是,如果我写:self.model = DataParallel(self.model, device_ids=[0,1])
,则会弹出错误。如果有更多GPU,请说4,然后编写:self.model = DataParallel(self.model, device_ids=[1,2,3,0])