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

标签 deep-learning gpu hardware pytorch

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

最佳答案

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

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

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

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

关于deep-learning - PyTorch 等深度学习框架在使用多个 GPU 时如何处理内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52285621/

相关文章:

python - 我的 CNN 模型中的内核权重初始化在哪里?

python - 在 Google Colaboratory 上使用 GPU 运行 LightGBM/LGBM

architecture - 什么是存储缓冲区?

macos - CP2102 设备未在 macOS 10.13 上的/dev 中列出

deep-learning - 向模型添加预处理层

machine-learning - caffe:5D blob 池化?

c++ - GPU 加速排序 (~1GB) 和归并排序 (~100GB)

matlab - 从 USB-1024HLS DAQ 板生成 PWM/时钟信号

python - keras 模型如何只预测一个样本?

c++ - 执行 C++ CUDA 内核时黑屏,输出正确结果