Tensorflow似乎没有看到我的gpu

Nik*_*nko 23 tensorflow

我已经在cuda 7.5和8.0上尝试过tensorflow,没有cudnn(我的GPU很老,cudnn不支持它).

当我执行时device_lib.list_local_devices(),输出中没有gpu.Theano看到了我的gpu,并且运行良好,/ usr/share/cuda/samples中的示例也可以正常工作.

我通过pip install安装了tensorflow.我的gpu太老了,不支持吗?gtx 460

kso*_*all 17

我在jupyter笔记本中遇到过同样的问题.这可能很容易解决.

$ pip uninstall tensorflow
$ pip install tensorflow-gpu
Run Code Online (Sandbox Code Playgroud)

您可以检查它是否有效:

tf.test.gpu_device_name()
Run Code Online (Sandbox Code Playgroud)

  • 用conda install tensorflow-gpu破坏某些问题后,帮助我解决了问题 (3认同)
  • 这对我来说非常有效。我已经正确配置了所有东西,但只安装了tensorflow和tensorflow-gpu。我猜它只是在使用tensorflow,因此更早的时候只列出了我的CPU。我都卸载了两个,然后才安装了tensorflow-gpu。现在我可以看到CPU和GPU都可以调用`device_lib.list_local_devices()`函数了 (3认同)

And*_*wPt 17

概括:

  1. 检查 tensorflow 是否看到您的 GPU(可选)
  2. 检查您的视频卡是否可以与 tensorflow 一起使用(可选)
  3. 查找与您的 tf 版本兼容的 CUDA Toolkit 和 cuDNN SDK 版本
  4. 安装 CUDA 工具包
  5. 安装cuDNN SDK
  6. pip卸载张量流;pip 安装 tensorflow-gpu
  7. 检查 tensorflow 是否看到您的 GPU

*来源 - https://www.tensorflow.org/install/gpu

详细说明:

  1. 检查 tensorflow 是否看到您的 GPU(可选)

    from tensorflow.python.client import device_lib
    def get_available_devices():
        local_device_protos = device_lib.list_local_devices()
        return [x.name for x in local_device_protos]
    print(get_available_devices()) 
    # my output was => ['/device:CPU:0']
    # good output must be => ['/device:CPU:0', '/device:GPU:0']
    
    Run Code Online (Sandbox Code Playgroud)
  2. 检查您的卡是否可以使用 tensorflow(可选)

  3. 找到您需要的 CUDA Toolkit 和 cuDNN SDK 版本

    a) 找到你的 tf 版本

    import sys
    print (sys.version)
    # 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)]
    import tensorflow as tf
    print(tf.__version__)
    # my output was => 1.13.1
    
    Run Code Online (Sandbox Code Playgroud)

    b) 为您的 tf 版本找到正确版本的 CUDA Toolkit 和 cuDNN SDK

    https://www.tensorflow.org/install/source#linux
    * it is written for linux, but worked in my case
    see, that tensorflow_gpu-1.13.1 needs: CUDA Toolkit v10.0, cuDNN SDK v7.4
    
    Run Code Online (Sandbox Code Playgroud)
  4. 安装 CUDA 工具包

    a) 安装 CUDA Toolkit 10.0

    https://developer.nvidia.com/cuda-toolkit-archive
    select: CUDA Toolkit 10.0 and download base installer (2 GB)
    installation settings: select only CUDA
        (my installation path was: D:\Programs\x64\Nvidia\Cuda_v_10_0\Development)
    
    Run Code Online (Sandbox Code Playgroud)

    b) 添加环境变量:

    system variables / path must have:
        D:\Programs\x64\Nvidia\Cuda_v_10_0\Development\bin
        D:\Programs\x64\Nvidia\Cuda_v_10_0\Development\libnvvp
        D:\Programs\x64\Nvidia\Cuda_v_10_0\Development\extras\CUPTI\libx64
        D:\Programs\x64\Nvidia\Cuda_v_10_0\Development\include
    
    Run Code Online (Sandbox Code Playgroud)
  5. 安装cuDNN SDK

    a) 下载cuDNN SDK v7.4

    https://developer.nvidia.com/rdp/cudnn-archive (needs registration, but it is simple)
    select "Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 10.0"
    
    Run Code Online (Sandbox Code Playgroud)

    b) 将“bin”文件夹的路径添加到“环境变量/系统变量/路径”中:

    D:\Programs\x64\Nvidia\cudnn_for_cuda_10_0\bin
    
    Run Code Online (Sandbox Code Playgroud)
  6. pip 卸载 tensorflow pip 安装 tensorflow-gpu

  7. 检查 tensorflow 是否看到您的 GPU

    - restart your PC
    - print(get_available_devices()) 
    - # now this code should return => ['/device:CPU:0', '/device:GPU:0']
    
    Run Code Online (Sandbox Code Playgroud)


小智 10

如果您使用的是conda,则可能已安装了tensorflow的cpu版本。检查环境的软件包列表(conda list),以查看是否是这种情况。如果是这样,请使用删除软件包conda remove tensorflow并安装keras-gpu(conda install -c anaconda keras-gpu.。这将安装在GPU中运行机器学习代码所需的所有内容。

PS您应该首先检查是否已使用正确安装了驱动程序nvidia-smi。默认情况下,它不在您的PATH中,因此您可能还需要将文件夹添加到您的路径中。.exe文件位于C:\Program Files\NVIDIA Corporation\NVSMI


Laz*_*vić 10

我遇到了问题,因为我没有指定Tensorflow的版本,所以我的版本是2.11。经过几个小时后,我发现安装指南中描述了我的问题:

注意:TensorFlow 2.10是在本机 Windows 上支持 GPU 的最后一个 TensorFlow 版本。从TensorFlow 2.11开始,您需要在 WSL2 中安装 TensorFlow,或者安装 tensorflow-cpu,并且可以选择尝试 TensorFlow-DirectML-Plugin

在此之前,我阅读了这个问题和类似问题的大部分答案。我遵循@AndrewPt 的回答。我已经安装了CUDA但更新了版本以防万一,安装了cudNN并重新启动了计算机。

对我来说最简单的解决方案是降级到 2.10(您可以尝试安装指南中提到的不同选项)。我首先卸载了所有这些软件包(可能没有必要,但我不想看到 pip 如何在凌晨 2 点搞乱版本):

pip uninstall keras
pip uninstall tensorflow-io-gcs-filesystem
pip uninstall tensorflow-estimator
pip uninstall tensorflow
pip uninstall Keras-Preprocessing
pip uninstall tensorflow-intel
Run Code Online (Sandbox Code Playgroud)

因为我只想要旧版本所需的软件包,而没有对2.11 版本的所有所需软件包执行此操作。之后我安装了tensorflow 2.10

pip install tensorflow<2.11
Run Code Online (Sandbox Code Playgroud)

它起作用了。

我使用此代码来检查 GPU 是否可见:

pip uninstall keras
pip uninstall tensorflow-io-gcs-filesystem
pip uninstall tensorflow-estimator
pip uninstall tensorflow
pip uninstall Keras-Preprocessing
pip uninstall tensorflow-intel
Run Code Online (Sandbox Code Playgroud)


小智 9

当我查找您的GPU时,我看到它仅支持CUDA Compute Capability 2.1。(可以通过https://developer.nvidia.com/cuda-gpus进行检查。)不幸的是,TensorFlow需要具有最低CUDA计算能力3.0的GPU。 https://www.tensorflow.org/get_started/os_setup#optional_install_cuda_gpus_on_linux

您可能会看到来自TensorFlow的一些日志正在检查您的GPU,但最终该库将避免使用不受支持的GPU。


end*_*ith 8

因此,截至 2022 年 4 月,该tensorflow软件包包含 CPU 和 GPU 版本。要安装 GPU 版本,请搜索以查看可用的内容:

\n
\xce\xbb conda search tensorflow\nLoading channels: done\n# Name                       Version           Build  Channel\ntensorflow                    0.12.1          py35_1  conda-forge\ntensorflow                    0.12.1          py35_2  conda-forge\ntensorflow                     1.0.0          py35_0  conda-forge\n\xe2\x80\xa6\ntensorflow                     2.5.0 mkl_py39h1fa1df6_0  pkgs/main\ntensorflow                     2.6.0 eigen_py37h37bbdb1_0  pkgs/main\ntensorflow                     2.6.0 eigen_py38h63d3545_0  pkgs/main\ntensorflow                     2.6.0 eigen_py39h855417c_0  pkgs/main\ntensorflow                     2.6.0 gpu_py37h3e8f0e3_0  pkgs/main\ntensorflow                     2.6.0 gpu_py38hc0e8100_0  pkgs/main\ntensorflow                     2.6.0 gpu_py39he88c5ba_0  pkgs/main\ntensorflow                     2.6.0 mkl_py37h9623b36_0  pkgs/main\ntensorflow                     2.6.0 mkl_py38hdc16138_0  pkgs/main\ntensorflow                     2.6.0 mkl_py39h31650da_0  pkgs/main\n
Run Code Online (Sandbox Code Playgroud)\n

您可以看到 TF 2.6.0 的版本支持 Python 3.7、3.8 和 3.9,并且是为MKL(Intel CPU)、Eigen或 GPU 构建的。

\n

要缩小范围,您可以在搜索中使用通配符。这将找到为 GPU 构建的任何 Tensorflow 2.x 版本,例如:

\n
\xce\xbb conda search tensorflow=2*=gpu*\nLoading channels: done\n# Name                       Version           Build  Channel\ntensorflow                     2.0.0 gpu_py36hfdd5754_0  pkgs/main\ntensorflow                     2.0.0 gpu_py37h57d29ca_0  pkgs/main\ntensorflow                     2.1.0 gpu_py36h3346743_0  pkgs/main\ntensorflow                     2.1.0 gpu_py37h7db9008_0  pkgs/main\ntensorflow                     2.5.0 gpu_py37h23de114_0  pkgs/main\ntensorflow                     2.5.0 gpu_py38h8e8c102_0  pkgs/main\ntensorflow                     2.5.0 gpu_py39h7dc34a2_0  pkgs/main\ntensorflow                     2.6.0 gpu_py37h3e8f0e3_0  pkgs/main\ntensorflow                     2.6.0 gpu_py38hc0e8100_0  pkgs/main\ntensorflow                     2.6.0 gpu_py39he88c5ba_0  pkgs/main\n
Run Code Online (Sandbox Code Playgroud)\n

要在空环境中安装特定版本,您可以使用如下命令:

\n
\xce\xbb conda activate tf\n\n(tf) \xce\xbb conda install tensorflow=2.6.0=gpu_py39he88c5ba_0\n\n\xe2\x80\xa6\n\nThe following NEW packages will be INSTALLED:\n\n  _tflow_select      pkgs/main/win-64::_tflow_select-2.1.0-gpu\n  \xe2\x80\xa6\n  cudatoolkit        pkgs/main/win-64::cudatoolkit-11.3.1-h59b6b97_2\n  cudnn              pkgs/main/win-64::cudnn-8.2.1-cuda11.3_0\n  \xe2\x80\xa6\n  tensorflow         pkgs/main/win-64::tensorflow-2.6.0-gpu_py39he88c5ba_0\n  tensorflow-base    pkgs/main/win-64::tensorflow-base-2.6.0-gpu_py39hb3da07e_0\n  \xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n

如您所见,如果您安装 GPU 版本,它也会自动安装兼容包cudatoolkitcudnn软件包。您不需要手动检查版本兼容性,或者从 Nvidia 网站手动下载几 GB,或者注册为开发人员,正如其他答案或官方网站上所说的那样。

\n

安装后,通过运行以下命令确认其工作正常并且可以看到 GPU:

\n
\xce\xbb python\nPython 3.9.12 (main, Apr  4 2022, 05:22:27) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32\nType "help", "copyright", "credits" or "license" for more information.\n>>> import tensorflow as tf\n>>> tf.__version__\n\'2.6.0\'\n>>> tf.config.list_physical_devices()\n[PhysicalDevice(name=\'/physical_device:CPU:0\', device_type=\'CPU\'), PhysicalDevice(name=\'/physical_device:GPU:0\', device_type=\'GPU\')]\n
Run Code Online (Sandbox Code Playgroud)\n

然而,让 conda 安装 GPU 版本您想要使用的其他软件包是另一回事,因为对我来说有很多软件包不兼容。我认为您能做的最好的事情就是使用通配符指定安装标准并祈祷。

\n

这会尝试安装为 GPU 构建且具有与 Spyder 和 matplotlib 的依赖项兼容的依赖项的任何TF 2.x 版本,例如:

\n
\xce\xbb conda install tensorflow=2*=gpu* spyder matplotlib\n
Run Code Online (Sandbox Code Playgroud)\n

对我来说,这最终安装了两年前的 GPU 版本的 TensorFlow:

\n
  matplotlib         pkgs/main/win-64::matplotlib-3.5.1-py37haa95532_1\n  spyder             pkgs/main/win-64::spyder-5.1.5-py37haa95532_1\n  tensorflow         pkgs/main/win-64::tensorflow-2.1.0-gpu_py37h7db9008_0\n
Run Code Online (Sandbox Code Playgroud)\n

我以前曾使用过该tensorflow-gpu软件包,但现在不再起作用了。conda 通常会一直努力寻找要安装的兼容包,即使安装了它,它实际上也没有安装 GPU 版本的 TensorflowCUDA 依赖项:

\n
\xce\xbb conda list\n\xe2\x80\xa6\ncookiecutter              1.7.2              pyhd3eb1b0_0\ncryptography              3.4.8            py38h71e12ea_0\ncycler                    0.11.0             pyhd3eb1b0_0\ndataclasses               0.8                pyh6d0b6a4_7\n\xe2\x80\xa6\ntensorflow                2.3.0           mkl_py38h8557ec7_0\ntensorflow-base           2.3.0           eigen_py38h75a453f_0\ntensorflow-estimator      2.6.0              pyh7b7c402_0\ntensorflow-gpu            2.3.0                he13fc11_0\n
Run Code Online (Sandbox Code Playgroud)\n


小智 6

以下对我有用,hp 笔记本电脑。我有一个 Cuda Compute 功能(版本)3.0 兼容的 Nvidia 卡。Windows 7的。

pip3.6.exe uninstall tensorflow-gpu
pip3.6.exe uninstall tensorflow-gpu
pip3.6.exe install tensorflow-gpu
Run Code Online (Sandbox Code Playgroud)