一个GPU在训练期间比其他GPU占用更多的内存

时间:2019-06-08 04:00:27

标签: python memory gpu pytorch multi-gpu

我使用multigpu使用pytorch训练模型。一个gpu比其他gpu占用更多的内存,从而导致“内存不足”。为什么一个GPU使用更多的内存?是否可以使使用更加平衡?还有其他减少内存使用量的方法吗? (正在删除不再使用的变量...?)批处理大小已为1。谢谢。

1 个答案:

答案 0 :(得分:0)

DataParallel拆分批次并将每个拆分发送到不同的GPU,每个GPU都有模型的副本,然后独立计算正向传递,然后将每个GPU的输出收集回一个GPU每个GPU中独立地计算损失的原因。

如果要缓解此问题,可以将损耗计算包括在DataParallel模块中。

如果这仍然是一个问题,那么您可能需要模型并行性而不是数据并行性:使用.cuda(gpu_id)将模型的不同部分移动到不同的GPU。当模型的权重很大时,这很有用。