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

Deep learning 当使用多个GPU时,PyTorch等深度学习框架如何处理内存?,deep-learning,gpu,hardware,pytorch,Deep Learning,Gpu,Hardware,Pytorch,我最近遇到了一种情况,我在一台Nvidia V100上的内存不足。我使用多个GPU来训练网络的经验有限,所以我对数据并行化过程的工作方式有点不确定。假设我使用的模型和批量大小需要20-25GB的内存。有没有办法利用我在两台16GB V100之间拥有的32GB内存?PyTorch的DataParallel功能能实现这一点吗?我认为也有可能将模型分解并使用模型并行性。请原谅我对这个问题缺乏知识。提前感谢您的帮助或澄清 您应该将模型并行性作为最后的资源,并且只有当您的模型不适合单个GPU的内存时(使用

我最近遇到了一种情况,我在一台Nvidia V100上的内存不足。我使用多个GPU来训练网络的经验有限,所以我对数据并行化过程的工作方式有点不确定。假设我使用的模型和批量大小需要20-25GB的内存。有没有办法利用我在两台16GB V100之间拥有的32GB内存?PyTorch的DataParallel功能能实现这一点吗?我认为也有可能将模型分解并使用模型并行性。请原谅我对这个问题缺乏知识。提前感谢您的帮助或澄清

您应该将模型并行性作为最后的资源,并且只有当您的模型不适合单个GPU的内存时(使用16GB/GPU,您有足够的空间容纳一个巨大的模型)

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

Pytorch使实现数据并行变得非常容易,因为您只需将模型实例包装到:

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