【发布时间】:2020-02-05 22:55:21
【问题描述】:
我在 Windows 10 上使用 keras-gpu 和 tensorflow-gpu 和 NVIDIA GeForce RTX 2080 Ti 运行 CNN。我的计算机有 Intel Xeon e5-2683 v4 CPU (2.1 GHz)。我正在通过 Jupyter(最新的 Anaconda 发行版)运行我的代码。命令终端中的输出显示正在使用 GPU,但是我正在运行的脚本花费的时间比我预期的训练/测试数据的时间要长,当我打开任务管理器时,看起来 GPU 利用率非常低。这是一张图片:
请注意,CPU 没有被利用,任务管理器上没有其他任何东西表明任何东西都被充分利用了。我没有以太网连接并且已连接到 Wifi(不认为这会产生任何影响,但我不确定 Jupyter,因为它通过网络浏览器运行)。我正在训练大量数据(~128GB),这些数据全部加载到 RAM(512GB)中。我正在运行的模型是一个完全卷积神经网络(基本上是一个 U-Net 架构),具有 566,290 个可训练参数。到目前为止我尝试过的事情: 1. 将批量大小从 20 增加到 10,000(将 GPU 使用率从 ~3-4% 增加到 ~6-7%,如预期的那样大大减少了训练时间)。 2.将use_multiprocessing设置为True,增加model.fit中worker的数量(无效)。
请注意,此安装专门不安装 CuDNN 或 CUDA。过去我在让 tensorflow-gpu 与 CUDA 一起运行时遇到了麻烦(尽管我已经 2 年多没有尝试过了,所以使用最新版本可能更容易),这就是我使用这种安装方法的原因。
这很可能是 GPU 没有得到充分利用(没有 CuDNN/CUDA)的原因吗?它是否与专用 GPU 内存使用成为瓶颈有关?或者可能与我正在使用的网络架构(参数数量等)有关?
如果您需要有关我的系统或我正在运行的代码/数据的更多信息以帮助诊断,请告诉我。提前致谢!
编辑:我注意到任务管理器中有一些有趣的东西。批量大小为 10,000 的 epoch 大约需要 200 秒。对于每个 epoch 的最后约 5 秒,GPU 使用率增加到约 15-17%(从每个 epoch 的前 195 秒的约 6-7% 上升)。不确定这是否有帮助或表明 GPU 之外的某个地方存在瓶颈。
【问题讨论】:
-
如果没有安装 CUDA,那么 tensorflow 根本没有使用 GPU。使用 GPU 需要 CUDA。
标签: tensorflow keras gpu