【问题标题】:How do deep learning frameworks such as PyTorch handle memory when using multiple GPUs?PyTorch 等深度学习框架在使用多个 GPU 时如何处理内存?
【发布时间】:2019-02-16 12:44:35
【问题描述】:

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

【问题讨论】:

    标签: deep-learning gpu hardware pytorch


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2017-09-27
      • 2020-07-21
      相关资源
      最近更新 更多