.
其實安裝 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軟件下載):
離線安裝文件如下:
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軟件下載):
安裝文件如下:
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 就可以找到這個動態庫來加載了。
下載後放到以下目錄下:
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,下載完成後進行安裝。
安裝完後需要重啓:
.