gpt4 book ai didi

tensorflow - 为什么当我增加批量大小时 tensorflow GPU 内存使用量会减少?

转载 作者:行者123 更新时间:2023-12-03 15:50:59 30 4
gpt4 key购买 nike

最近我使用 Tensorflow 和 PyTorch 实现了一个 VGG-16 网络,数据集是 CIFAR-10。每张图片为 32 * 32 RGB。

我一开始使用 64 的批量大小,而我发现 PyTorch 使用的 GPU 内存比 tensorflow 少得多。然后我做了一些实验,得到了一个图,贴在下面。

Figure : GPU memory use compare

经过一番研究,我知道了使用 BFC 算法来管理内存的 tensorflow。所以它可以解释为什么 tensorflow 的内存使用减少或增加 2048, 1024, ... MB,有时当批大小更大时,内存使用不会增加。

但我仍然感到困惑,为什么当批大小为 512 时内存使用量低于批大小为 384、448 等时的内存使用量,后者的批大小较小。与batch size为1024~1408,batch size为2048~2688时相同。

这是我的源代码:

PyTorch:https://github.com/liupeng3425/tesorflow-vgg/blob/master/vgg-16-pytorch.py

tensorflow :https://github.com/liupeng3425/tesorflow-vgg/blob/master/vgg-16.py

编辑:
我的电脑上有两个 Titan XP,操作系统:Linux Mint 18.2 64 位。

我使用命令 nvidia-smi 确定 GPU 内存使用情况.

我的代码在我的代码中定义的 GPU1 上运行:

os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = "1"

而且我确信只有一个应用程序使用 GPU1。

GPU 内存使用可以由下面的应用程序列表确定。
例如,像下面发布的屏幕截图,进程名称是 /usr/bin/python3其 GPU 内存使用量为 1563 MiB。

Figure : terminal nvidia-smi

最佳答案

如评论中所述,默认情况下 TensorFlow 始终占用 GPU 上的所有内存。我假设您在此测试中禁用了该功能,但它确实表明算法通常不会尝试最小化保留的内存,即使它并未全部用于计算。
为了找到适合您的设备和代码的最佳配置,TensorFlow 通常会多次运行(部分)第一次计算。我怀疑这包括将数据预加载到 GPU 的设置。这意味着您看到的数字恰好是您的设备和配置的最佳值。
由于 TensorFlow 不介意使用更多内存,因此此处的“最佳”是通过速度而非内存使用来衡量的。

关于tensorflow - 为什么当我增加批量大小时 tensorflow GPU 内存使用量会减少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47504924/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com