使用多个GPU时,PyTorch等深度学习框架如何处理内存?

时间:2018-09-11 23:56:06

标签: deep-learning gpu hardware pytorch

最近我遇到了一个N​​vidia V100内存不足的情况。我使用多个GPU训练网络的经验有限,因此我不确定数据并行化过程如何工作。可以说我使用的模型和批量大小需要20-25GB的内存。有什么方法可以利用两个16GB V100之间的全部32GB内存吗? PyTorch的DataParallel功能可以实现吗?我想也有可能分解模型并使用模型并行性。请原谅我对此事缺乏知识。预先感谢您的帮助或澄清!

1 个答案:

答案 0 :(得分:2)

只有当模型不能容纳在单个GPU的内存中时,才应将模型并行性作为最后的资源(对于16GB / GPU,您有足够的空间容纳巨大的模型)。

如果您有两个GPU,我将使用数据并行性。在数据并行性中,您在每个GPU上都有一个模型副本,并且每个副本都有一批。然后收集渐变并用于更新副本。

Pytorch使得实现数据并行性非常容易,因为您只需要将模型实例包装在nn.DataParallel中即可:

model = torch.nn.DataParallel(model, device_ids=[0, 1])
output = model(input_var)