【问题标题】:why Tensorflow-gpu is still using cpu为什么 TensorFlow-gpu 还在使用 cpu
【发布时间】:2018-12-21 16:11:51
【问题描述】:

我在后端使用带有 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"

环境变量包含:

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\;

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

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

系统配置:

Windows-10 64 bit; IDE: Liclipse; Python: 3.6.5  

【问题讨论】:

  • 它同时使用 GPU 和 CPU,并非所有操作都在 GPU 中运行,并且一些数据处理在 CPU 中与 GPU 并行运行,例如向 GPU 提供数据。我在这里没有发现问题。
  • 如果是这样的话,我想没什么好担心的,我是否也应该发布我的代码以进行澄清
  • 有没有办法在 GPU 上也强制执行该任务

标签: python-3.x tensorflow keras liclipse


【解决方案1】:

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

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

Here 是一些更详细的解释。

【讨论】:

  • 1.如果您说的是 GPU 的 RAM,它是 6.33 GB,而我的任务不是那么繁重,如果您指的是系统内存,那么它总共是 8 GB。其次,我正在处理音频文件,所有功能都已经存储在一个直接加载的 pickle 文件中。同时,我正在创建一个 CSV 文件来记录结果。那么这个东西是不是因为它是 I/O 操作而消耗更多的 RAM 呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 2019-09-12
  • 2019-07-10
  • 2021-03-23
  • 2019-04-19
  • 2019-02-02
相关资源
最近更新 更多