machine-learning - 如何知道传递给GPU的数据是否会导致CUDA内存不足

标签 machine-learning deep-learning pytorch gpu

我正在使用GPU来运行一些非常大的深度学习模型,当我选择batch size为8时,它可以适合内存,但是如果我使用batch size为16,则会导致CUDA out-of-内存错误,我必须终止该进程。

我的问题是,在实际将数据传递到GPU之前,有没有办法知道数据在GPU中占用了多大?

例如,下面的代码是关于我如何创建一个 pytorch dataloader 并将每批 dataloader 传递到 GPU,我可以在调用 batch.to(device) 之前知道它有多大

train_dataloader = DataLoader(train_data, sampler=train_sampler, batch_size=batch_size)
for step, batch in enumerate(train_dataloader):
    b_input_ids = batch[0].to(device)
    b_input_mask = batch[1].to(device)
    b_labels = batch[2].to(device)

最佳答案

我建议在这里使用 torchsummary 包。

pip install torchsummary

正在使用

from torchsummary import summary
myModel.cuda()
summary(myModel, (shapeOfInput)) # where shapeOfInput is a tuple of the sample's dimensions

这将为您提供模型的大小、前向传递的大小和后向传播的大小(以 MB 为单位),批处理大小为 1,然后您可以乘以批处理大小。

关于machine-learning - 如何知道传递给GPU的数据是否会导致CUDA内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63443270/

相关文章:

python - Keras 一个操作在 train_on_batch 时对梯度有 None

tensorflow - 如何从视频数据集制作数据集(首先是 tensorflow )

PyTorch - 变量和张量之间的元素乘法?

Pytorch:在 Linux 上未检测到支持 CUDA 的设备

machine-learning - 如何添加我的神经网络可以预测的每个分类的具体数字?

machine-learning - 神经网络偏差实现的差异

machine-learning - sklearn中的GridSearchCV如何选择交叉验证集?

r - 如何在R的keras包中设置class_weight?

python - 使用 scikit-learn 了解分类报告中的 UndefinedMetricWarning?

machine-learning - caffe中reduction层的参数如何设置?