我正在迁移到Tensorflow 2.0,我正在研究
乌班图 18.04
库达 10.2
蟒蛇 3.7
佐泰 GeForce® GTX 1080 钛迷你 (ZT-P10810G-10P(
当我运行nvcc -V
和nvidia-smi
时,我可以看到GPU。但以下命令未列出 GPU。
tf.test.is_gpu_available(cuda_only=False, min_cuda_compute_capability=None)
Output: False
tf.config.experimental.list_physical_devices(device_type=None)
Output: [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
PhysicalDevice(name='/physical_device:XLA_CPU:0', device_type='XLA_CPU')]
from keras import backend as K
K.tensorflow_backend._get_available_gpus()
Output: []
编辑 1:在 tensorflow GPU 支持网站上,他们有tensorflow 1.15
和tensorflow 1.14
的说明,但没有更高版本的说明。
重新启动和重新停止 tensorflow-gpu 也无济于事。
更新 CUDA 和 cudnn 也不起作用。
从链接 https://www.tensorflow.org/install/source#linux,对于 tensorflow-2.0.0,它需要 cuDNN 版本 7.4 和 CUDA 10.0。不确定您的 cuDNN 版本是什么(您可以通过以下方式检查:
cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2
它应该返回:
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 5
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
=>这意味着它的 7.5.0
我读过,如果上面的链接指定 7.4,则不能使用任何其他版本(甚至不是 7.5、7.6 等(。因此,请在 cuDNN 下载中查找存档版本。
我建议你卸载/usr/local 文件夹中的所有 nvidia 驱动程序、tensorflow-gpu、cuDNN、所有 cuda 库和工具包,然后进行全新安装。不要同时安装 tensorflow 和 tensorflow-gpu。只需安装tensorflow-gpu。
以下是卸载 nvidia-cuda-toolkit 及其依赖项的方法:
sudo apt-get remove --auto-remove nvidia-cuda-toolkit
记得编辑你的 ~/.bash_profile 文件
正确卸载并清除所有内容后,安装 nvidia-driver-418(我个人使用此版本,但根据 nvidia 文档,对于 CUDA 10 只要它的 410.xx 就可以了 - nvidia docs tensorflow 发行说明(:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-driver-418
然后重新启动并使用 nvidia-smi 命令检查它说: NVIDIA-SMI 430.50驱动程序版本 430.50
然后下载并安装CUDA 10.0
请不要下载任何其他版本(不是 10.1、10.2 等 - 抱歉唠叨(
请记住选择 n(否(来安装 NVIDIA 加速显卡驱动程序。将出现一条错误消息,指出其安装不完整,但您可以忽略它。
确保 ~/.bashrc 文件包含 CUDA-10.0
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64
然后下载适用于 CUDA 10.0 的 cuDNN v7.4.2。使用 tar 命令解压缩 tgz 文件后,cd 到 cuda 文件夹中,并将 lib64/目录的内容及其所有内容复制到/usr/local/cuda/lib64/路径中。另外,将 include/文件夹复制到/usr/local/cuda/include/路径中,如下所示:
sudo cp -P lib64/* /usr/local/cuda/lib64/
sudo cp -P include/* /usr/local/cuda/include/
检查与
tf.test.is_gpu_available()
它应该返回 True。
完成上述所有操作后,我在运行 model.fit(..( 后出现错误 -
UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. [Op:Conv2D]
我在这里按照线程并遵循@RadV答案,它奏效了。他的回答——
根据此 TensorFlow GPU 指令页面上的指令升级
所以现在我有,
乌班图 18.04
当我在终端中运行
nvidia-smi
时,它显示 CUDA 10.2终端中
which nvcc
的输出给出/usr/local/cuda-10.0/bin/nvcc
是的,非常感谢方@Ran。
TF 2.0 只能在 CUDA 10.0 和 cuDNN 7.4 的 GPU 上运行 - 您可以 在此处检查依赖项
我完成了以上所有操作,我目前的版本是CUDA 10.0,cuDNN 7.4.1和NVIDIA-SMI 410.129。您可以检查 TF-CUDA 依赖项和 NVIDIA 驱动程序 - CUDA 依赖项。
对我来说,要检查 cuDNN 版本,以下命令适用于 Ubuntu 18.04 -
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
但是做上述所有操作并仅安装tensorflow-gpu并没有使GPU正常工作。
最终有效的是以下 - 先卸载所有 tensorflow 包,然后只安装 -
pip uninstall tensorflow tf-nightly tensorboard tb-nightly tensorflow-estimator
pip install tf-nightly-gpu-2.0-preview
像魅力一样工作。
按照本教程相应地安装 Tensorflow 2.0 和依赖项。
您还可以通过此,此和此文档来完全卸载较新的CUDA和cuDNN版本,并安装较旧的CUDA 10.0版本。