【问题标题】:Keras with TensorFlow doesn't use GPU but use the CPU带有 TensorFlow 的 Keras 不使用 GPU,而是使用 CPU
【发布时间】:2018-09-25 09:25:09
【问题描述】:

我已经安装了 tensorflow 1.5:

pip install tensorflow==1.5

因为我有一个错误:

(ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory

Failed to load the native TensorFlow runtime.)

在我安装 Keras 之后:

pip install Keras

最后我安装了 TensorFlow gpu:

pip install tensorflow-gpu

当我运行我搜索的代码时:

nvidia-smi

如果有我的流程但没有。 我能做什么?

【问题讨论】:

标签: tensorflow keras gpu


【解决方案1】:

尝试卸载之前版本的tenserflow,tenserflow-gpu,安装指定版本。 Tenserflow-gpu 还安装了tenserflow 作为依赖项,因此您可能会有版本控制差异。可以在他们的 git repo 上找到有关此问题的更多信息。

pip uninstall tensorflow
pip uninstall tensorflow-gpu
pip install tensorflow==1.5.0
pip install tensorflow-gpu==1.5.0 

【讨论】:

  • 我安装了 tensorflow 1.4.1 因为我有 Cuda 8.0 但问题仍然存在。
【解决方案2】:

你安装了 cuda 和 cudnn 吗?并将环境路径添加到.bashrc?

在 ~/.bashrc 中设置 CUDA 路径:

# Cuda Nvidia path
$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
$ export CUDA_HOME=/usr/local/cuda

pd:你只需要安装 tensorflow-gpu 版本,而不是 cpu 版本。

之后您需要download a cuDNN version 与您的Cuda 版本兼容。例如,您可以通过 ssh/putty 下载 cuda v7.1.3:

$ wget https://developer.download.nvidia.com/compute/machine-learning/cudnn/secure/v7.1.3/prod/8.0_20180414/cudnn-8.0-linux-x64-v7.1.tgz?2H2brULbeJyaEnHtkjrwUED5JR-vx6QBedn-A-nsa9Q73hUCfYCmWbFG_-eBnlAv3_CjRmI3qhRPJDiRz0wRC3oGviiYTX7M-H-RUiZQR_vuo21iCM5W-R0iaJOuwt0bmw-RFTg2XK_a8gdiV-uemVTH8Lf8-Q8rf3Msh52hznszsZKCP0hq2DvYNFuTSjyOSgPiH-3c_Th2uw

下载后,只需将其解压缩并将相关文件复制到 CUDA 安装目录。此示例适用于 cuda v8.0 和 cudnn v7.1.3:

$ mv cudnn-8.0-linux-x64-v7.1.tgz?2H2brULbeJyaEnHtkjrwUED5JR-vx6QBedn-A-nsa9Q73hUCfYCmWbFG_-eBnlAv3_CjRmI3qhRPJDiRz0wRC3oGviiYTX7M-H-RUiZQR_vuo21iCM5W-R0iaJOuwt0bmw-RFTg2XK_a8gdiV-uemVTH8Lf8-Q8rf3Msh52hznszsZKCP0hq2DvYNFuTSjyOSgPiH-3c_Th2uw cudnn-8.0-linux-x64-v7.1.tgz
$ tar -zxvf cudnn-8.0-linux-x64-v7.1.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

然后,您可以检查 tensorflow 是否在 GPU 上运行:

# Python
import tensorflow as tf

# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

如果一切正常,你会得到这样的结果:

2018-09-25 13:27:23.614538: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1356] Found device 0 with properties: 
name: GeForce GTX 1070 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.683
pciBusID: 0000:01:00.0
totalMemory: 7.93GiB freeMemory: 6.22GiB
2018-09-25 13:27:23.614552: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1435] Adding visible gpu devices: 0
2018-09-25 13:27:23.800175: I tensorflow/core/common_runtime/gpu/gpu_device.cc:923] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-09-25 13:27:23.800210: I tensorflow/core/common_runtime/gpu/gpu_device.cc:929]      0 
2018-09-25 13:27:23.800215: I tensorflow/core/common_runtime/gpu/gpu_device.cc:942] 0:   N 
2018-09-25 13:27:23.800393: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 5997 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1070 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1)
Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 1070 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1
2018-09-25 13:27:23.857141: I tensorflow/core/common_runtime/direct_session.cc:284] Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 1070 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1

MatMul: (MatMul): /job:localhost/replica:0/task:0/device:GPU:0
2018-09-25 13:27:23.857701: I tensorflow/core/common_runtime/placer.cc:886] MatMul: (MatMul)/job:localhost/replica:0/task:0/device:GPU:0
b: (Const): /job:localhost/replica:0/task:0/device:GPU:0
2018-09-25 13:27:23.857729: I tensorflow/core/common_runtime/placer.cc:886] b: (Const)/job:localhost/replica:0/task:0/device:GPU:0
a: (Const): /job:localhost/replica:0/task:0/device:GPU:0
2018-09-25 13:27:23.857736: I tensorflow/core/common_runtime/placer.cc:886] a: (Const)/job:localhost/replica:0/task:0/device:GPU:0
[[22. 28.]
 [49. 64.]]

【讨论】:

  • Cuda 8.0 已安装。如何查看是否安装了 cudnn?
  • Tensorflow-cpu 未安装。
  • @MrCaptainAlex 你需要 download Cudnn 使用与你的 Cuda 版本兼容的版本并将其解压到你的 cuda 路径中。我将主要编辑我的答案。
  • 我使用的不是我的服务器,而是另一个带有putty的服务器,所以我无法将cudnn文件放入CUDA安装目录。我已经知道服务器的所有者正确使用了 GPU。另一件事是在CUDA/include的目录中没有cudnn.h文件
  • @MrCaptainAlex 您可以通过 putty 执行wget url,因此您可以将 cudnn 文件下载到服务器中。
猜你喜欢
  • 2017-10-11
  • 2021-03-23
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
相关资源
最近更新 更多