使用Tensoflow 2.0.0时找不到GPU

时间:2019-12-10 09:32:45

标签: tensorflow keras gpu tensorflow2.0

我正在迁移到Tensorflow 2.0,我正在研究

  

Ubuntu 18.04

     

CUDA 10.2

     

Python 3.7

     

ZOTACGeForce®GTX 1080 Ti Mini(ZT-P10810G-10P)

当我运行nvcc -Vnvidia-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 support website上,他们有针对tensorflow 1.15tensorflow 1.14的说明,但没有针对更高版本的说明。

重新启动并重新安装tensorflow-gpu也无济于事。

更新CUDA和cudnn也不起作用。

3 个答案:

答案 0 :(得分:1)

从链接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 release notes) :

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 Accelerated Graphics Driver。将会出现一条错误消息,提示其安装不完整,但您可以忽略它。

确保〜/ .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。

答案 1 :(得分:0)

是的,非常感谢@Ran Fang。

  

TF 2.0只能在具有CUDA 10.0和cuDNN 7.4的GPU上运行-您可以   检查依赖项here

我完成了上述所有操作,当前的版本是CUDA 10.0,cuDNN 7.4.1和NVIDIA-SMI 410.129。您可以检查TF-CUDA dependenciesNVIDIA Drivers - CUDA dependencies

对我来说,要检查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

像魅力一样工作。

按照this教程安装Tensorflow 2.0和相应的依赖项。

您还可以浏览thisthisthis文档,以完全卸载较新的CUDA和cuDNN版本并安装较旧的CUDA 10.0版本。

答案 2 :(得分:0)

完成上述所有操作后,运行model.fit(..)后出现错误-

var listFiles = ListAllFiles(service).Files; if (listFiles != null && listFiles.Count > 0) { foreach (var file in listFiles) { if (file.Id == aIdFolder && !String.IsNullOrWhiteSpace(file.TeamDriveId)) { //here your result return true; } } }

我在这里遵循了thread,并遵循了@RadV的答案,它确实有效。他的答案-

  

对此TensorFlow GPU指令page

上的每个指令进行升级

现在我有了

  

Ubuntu 18.04

     

当我在终端中运行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]时,它显示CUDA 10.2

     

终端中nvidia-smi的输出给出   which nvcc