Tensorflow-gpu 2.1、CUDA、cnDNN 詳細安裝教程

.

 

 

其實安裝 tensorflow-gpu, CUDA, cnDNN 這些東西沒有什麼難度的,但是就是會遇到版本匹配問題,很浪費時間。

所以把安裝方法詳細介紹一遍,希望能幫到大家。

 

各個軟件版本如下:

  • windows 10
  • python 3.7
  • pip 19
  • tensorflow-gpu 2.1
  • CUDA 10.2
  • cuDNN 7.6.4

 

一、顯卡檢測與驅動升級

1.1 顯卡檢測

    首先,檢測一下顯卡是否支持CUDA。

    CUDA 是 Nvidia 顯卡特有的,AMD 顯卡的類似功能叫做VEGA。

    下載 GPU-Z 軟件,就可以看到顯卡是否支持CUDA。

  

    看到 CUDA 選擇前面打了勾就表示是支持 CUDA 的。

 

1.2 驅動升級

1.2.1 下載驅動

    由於後續我們要安裝 CUDA,爲了支持最新版本的 CUDA,需要把顯卡驅動升級到最新。

    前面用 GPU-Z 看到了顯卡的型號,我們就根據這個型號去 Nvidia 官網下載對應的驅動即可。

    Nvidia 驅動官網:https://www.nvidia.com/Download/index.aspx

    在上面的頁面中,根據提示選擇自己的顯卡型號,我的是 750 Ti。然後點擊“Search”。

    接着出現顯示驅動的詳細信息,點擊“DOWNLOAD"即可。

1.2.2 安裝驅動

    驅動文件下載後如下:

    右鍵“以管理員身份運行”,解壓後,進入安裝程序,如下:

    點擊“同意並繼續”,

    點擊“下一步”,開始安裝,期間會黑屏一下。

    安裝完顯卡驅動之後,建議重新計算機。

 

二、CUDA Toolkit 安裝

    該工具包讓你可以創建高性能的GPU加速應用程序。

2.1 下載文件

    有兩種安裝方式:在線安裝和離線安裝,建議選擇離線安裝,因爲安裝文件有 2G+,使用P2P軟件下載比較快。

    CUDA 下載地址:https://developer.nvidia.com/cuda-downloads (可能需要VPN,下面給出P2P鏈接)

    如上圖,根據自己的配置進行下載即可,

    Windows - 64位 - CUDA 10 的地址是(直接拷貝鏈接然後打開P2P軟件下載):

    http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_441.22_win10.exe  

    離線安裝文件如下:

2.2 安裝

    右擊安裝文件,選擇“以管理員身份運行”,

    指定解壓路徑,然後點擊“OK",

    解壓完成後,自動打開安裝界面,如下:

點擊“下一步”,開始安裝

安裝完成~

 

2.3 環境變量

    右擊桌面“此電腦” - “屬性” - “高級系統設置” - “環境變量”,

    可以看到,在安裝完 CUDA 之後,自動添加了幾個變量,不需要我們動手:

  • CUDA_PATH
  • CUDA_PATH_V10_2
  • NVCUDASAMPLES_ROOT
  • NVCUDASAMPLES10_2_ROOT
  • NVTOOLSEXT_PATH

 查看 Path 變量:

    可以看到 CUDA 的路徑也添加到系統環境變量當中了:

 

2.4 驗證安裝

    打開命令行,輸入以下命令:

C:\WINDOWS\system32> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:32:27_Pacific_Daylight_Time_2019
Cuda compilation tools, release 10.2, V10.2.89

    看到上面輸出內容即表示 CUDA 安裝成功。

 

三、cuDNN 安裝

    Nvidia cuDNN是用於深度神經網絡的GPU加速庫。

    cvDNN 與 CUDA 的版本是有關聯的,具體見下文。

3.1 下載文件

    cuDNN下載地址:https://developer.nvidia.com/rdp/cudnn-archive 

    根據自己安裝的 CUDA 的版本,下載對應的 cuDNN的版本即可。

    例如:Windows 10 - 64位 - cuDNN v7.6.4 下載地址(直接拷貝鏈接然後打開P2P軟件下載):

    https://developer.nvidia.com/compute/machine-learning/cudnn/secure/7.6.4.38/Production/10.1_20190923/cudnn-10.1-windows10-x64-v7.6.4.38.zip 

    安裝文件如下:

 

3.2 cuDNN安裝

    無須安裝,解壓文件即可:

  • bin/cudnn64_7.dll 是動態庫
  • include/cudnn.h 是頭文件
  • lib/x64/cudnn.lib 是靜態庫

    解壓完成之後,把cuDNN 的內容複製到 CUDA 目錄下:

3.3 添加環境變量

    把 CUDA\lib\x64 添加到環境變量中,如下圖所示:

    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64     

 

四、tensorflow-gpu 安裝

    TensorFlow 是一個開源軟件庫,用於使用數據流圖進行數值計算,它讓 機器學習變得更快更簡單。tensorflow-gpu 是 GPU 版本的 TensorFlow。

4.1 下載和安裝

    安裝好 Python 3.7 + pip 之後,直接使用 pip 命令安裝即可:

 pip install tensorflow-gpu == 2.1

    看到以下輸出則表示安裝成功:

Successfully installed astor-0.8.1 gast-0.2.2 keras-applications-1.0.8 tensorboard-2.0.2 tensorflow-estimator-2.1.1 tensorflow-gpu-2.1.0

4.2 測試安裝結果

    進入 python 交互命令窗口:

>>> import tensorflow as tf
2020-06-03 00:24:17.960848: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll

>>> print(tf.config.list_physical_devices('GPU'))
2020-06-03 00:24:33.659128: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll
2020-06-03 00:24:33.687434: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1555] Found device 0 with properties:
pciBusID: 0000:05:00.0 name: GeForce GTX 750 Ti computeCapability: 5.0
coreClock: 1.0845GHz coreCount: 5 deviceMemorySize: 2.00GiB deviceMemoryBandwidth: 80.47GiB/s
2020-06-03 00:24:33.693089: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2020-06-03 00:24:33.702776: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2020-06-03 00:24:33.711254: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2020-06-03 00:24:33.716824: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2020-06-03 00:24:33.727397: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2020-06-03 00:24:33.735731: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2020-06-03 00:24:33.751438: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2020-06-03 00:24:33.756007: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

 

五、錯誤及解決方法

5.1 動態庫

    安裝了 tensorflow 2.0 + CUDA 10.2, 在 " import tensorflow as tf " 的時候出現錯誤:

Could not load dynamic library 'cudart64_100.dll'

    錯誤原因,tensorflow 2.0 依賴的是 CUDA 10.0,所以它會去嘗試加載 " cudart64_100.dll ",這個動態庫的命名形式爲:

cudart64_vesion.dll

* cudart64_100.dll
* cudart64_101.dll
* cudart64_102.dll

    對應關係:

  • tensorflow 2.0 ---- cudart64_100.dll
  • tensorflow 2.1 ---- cudart64_101.dll
  • tensorflow 2.2 ---- cudart64_102.dll

    所以,我們只需要下載  " cudart64_100.dll " 文件,然後把它放到 CUDA 安裝目錄的 " bin " 目錄下即可。這樣 tensorflow 就可以找到這個動態庫來加載了。

    文件下載地址:https://download.zip.dll-files.com/f0ab3cac7e90959a38e97b262ebdf3f2/cudart64_100.zip?token=5i1TJlOi2yZ1FtWLhoghkw&expires=1591158929 

    下載後放到以下目錄下:

5.2 ImportError DLL load failed

    安裝 tensorflow==2.1 或 2.2 ,CUDA = 10.2 ,此時可能會報以下錯誤:

>>> import tensorflow as tf
Traceback (most recent call last):
  File "D:\Program Files\Python37\lib\site-packages\tensorflow_core\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "D:\Program Files\Python37\lib\site-packages\tensorflow_core\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "D:\Program Files\Python37\lib\site-packages\tensorflow_core\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "D:\Program Files\Python37\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "D:\Program Files\Python37\lib\imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: DLL load failed: 找不到指定的模塊。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Program Files\Python37\lib\site-packages\tensorflow\__init__.py", line 101, in <module>
    from tensorflow_core import *
  File "D:\Program Files\Python37\lib\site-packages\tensorflow_core\__init__.py", line 40, in <module>
    from tensorflow.python.tools import module_util as _module_util
  File "D:\Program Files\Python37\lib\site-packages\tensorflow\__init__.py", line 50, in __getattr__
    module = self._load()
  File "D:\Program Files\Python37\lib\site-packages\tensorflow\__init__.py", line 44, in _load
    module = _importlib.import_module(self.__name__)
  File "D:\Program Files\Python37\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "D:\Program Files\Python37\lib\site-packages\tensorflow_core\python\__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "D:\Program Files\Python37\lib\site-packages\tensorflow_core\python\pywrap_tensorflow.py", line 74, in <module>
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "D:\Program Files\Python37\lib\site-packages\tensorflow_core\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "D:\Program Files\Python37\lib\site-packages\tensorflow_core\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "D:\Program Files\Python37\lib\site-packages\tensorflow_core\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "D:\Program Files\Python37\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "D:\Program Files\Python37\lib\imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: DLL load failed: 找不到指定的模塊。

    解決方法是:

  • 方法一:降低版本爲 tensorflow=2.0,然後用以上的方法解決。
  • 方法二:下載 Visual Studio 最新的 Redistributable。

 

    方法二詳解:

    下載 Visual Studio 最新的 Redistributable。

    下載地址 :https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

    下載 x64,下載完成後進行安裝。

    安裝完後需要重啓:

 

 

 

.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章