为什么 Tensorflow-gpu 还在使用 cpu

Hri*_*ore 6 python-3.x liclipse keras tensorflow

我在后端使用带有 tensorflow-gpu 的 Keras,我没有安装 tensorflow(CPU - 版本),所有输出都显示 GPU 被选中,但 tf 正在使用 CPU 和系统内存

当我运行我的代码时,输​​出是:output_code

我什至跑了 device_lib.list_local_device() 并且输出是:list_local_devices_output

运行代码后,我尝试使用 nvidia-smi 查看 gpu 的使用情况,输出为: nvidia-smi output

Tensorflow-gpu = "1.12.0"
CUDA toolkit = "9.0"
cuDNN = "7.4.1.5"
Run Code Online (Sandbox Code Playgroud)

环境变量包含:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp;
C:\WINDOWS\system32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
C:\WINDOWS\System32\OpenSSH\;
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
D:\Anaconda3;D:\Anaconda3\Library\mingw-w64\bin
D:\Anaconda3\Library\usr\bin;
D:\Anaconda3\Library\bin;
D:\Anaconda3\Scripts;D:\ffmpeg\bin\;
Run Code Online (Sandbox Code Playgroud)

但是当我在任务管理器中检查内存使用情况时,输出仍然是

CPU 利用率 51%,RAM 利用率 86% GPU 利用率 1%,GPU-RAM 利用率 0% Task_manager_Output 所以,我认为它仍然使用 CPU 而不是 GPU。

系统配置:

Windows-10 64 bit; IDE: Liclipse; Python: 3.6.5  
Run Code Online (Sandbox Code Playgroud)

ixe*_*ion 8

正如您在日志中看到的那样,它正在使用 GPU。问题是,很多事情不能在 GPU 上完成,只要你的数据很小,你的复杂性低,你最终会得到低 GPU 使用率。

  • 可能 batch_size 太低 -> 增加直到遇到 OOM 错误
  • 您的数据加载正在消耗大量时间,您的 gpu 必须等待(IO 读取)
  • 您的 RAM 太低,应用程序使用磁盘作为后备
  • 预处理很慢。如果您正在处理图像,请尽可能将所有内容作为生成器或在 gpu 上进行计算
  • 您正在使用一些非 GPU 加速的操作

这里有一些更详细的解释。