TensorFlow的環境配置與安裝(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)

記錄一下安裝win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5

之前已經安裝過pycharm、Anaconda以及VS2013,因此,安裝記錄從此後開始

總體步驟大致如下:

1、確認自己電腦顯卡型號是否支持CUDA(此處有坑)

 

 

此處有坑!不要管NVIDIA控制面板組件中顯示的是CUDA9.2.148。

你下載的CUDA不一定需要匹配,尤其是CUDA9.2,最好使用CUDA9.0,我就在此坑摔的比較慘。

2、下載CUDA以及cuDNN,注意版本對應

①查看版本匹配:

https://www.tensorflow.org/install/source_windows

 

②下載CUDA:

https://developer.nvidia.com/cuda-toolkit-archive

 

官網上下載的CUDA 9.0有好幾個版本,其中主要是cuda_9.0.176_win10.exe,其他的四個是補丁。

 

③下載cuDNN:

https://developer.nvidia.com/cudnn

https://developer.nvidia.com/rdp/cudnn-archive

下載cuDNN需要註冊一個NVIDIA的賬號。

 

3、安裝CUDA和cuDNN,並設置環境變量(重要)

①CUDA安裝

我是按照默認路徑安裝的,沒有修改。此外,使用自定義安裝,但是幾乎全選了,除了一個當前版本已經是最新版本的組件沒有勾選。

切記CUDA的安裝路徑,因爲安裝cuDNN以及設置環境變量時需要。

 

 

②cuDNN9.0安裝

cuDNN是一個壓縮包,解壓後的內容如下

 

全選並複製所有內容,粘貼到CUDA的安裝路徑下,默認路徑是:

 

③設置環境變量(重要)

這部分我主要參考的是:https://blog.csdn.net/qilixuening/article/details/77503631

計算機上點右鍵,打開屬性->高級系統設置->環境變量,可以看到系統中多了兩個環境變量,接下來,分別是:

CUDA_PATH和CUDA_PATH_V8_0。

還要在系統變量中新建以下幾個環境變量:

CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0

CUDA_LIB_PATH = %CUDA_PATH%\lib\x64

CUDA_BIN_PATH = %CUDA_PATH%\bin

CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64

CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64

如下圖所示:

 

然後在系統變量中找到 PATH,點擊編輯並添加:

%CUDA_LIB_PATH%

%CUDA_BIN_PATH%

%CUDA_SDK_LIB_PATH%

%CUDA_SDK_BIN_PATH%

再添加如下4條(默認安裝路徑):

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64;

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin;

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\common\lib\x64;

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64;

 

如果你選用了自定義路徑,上述這些默認路徑都應該相應替換爲你的自定義路徑。

④查驗是否安裝成功

重啓計算機(必須),然後在Anaconda prompt中輸入nvcc -V。(注意,V是大寫)返回以下信息則安裝成功。

 

4、創建tensorflow-gpu環境並激活

(此部分可參考的教程比較多,可自行搜索)

①conda create --name tensorflow-gpu python=3.5

在Anaconda Prompt 中輸入conda create --name tensorflow-gpu python=3.5,創建名爲tensorflow-gpu的環境(名字可以自己改,不一定都叫tensorflow-gpu)。

②activate tensorflow-gpu

按照提示,接下來activate tensorflow-gpu,進入到新創建的環境,退出時使用deactivate

③conda info --envs

最後,conda info --envs,查看創建的所有環境,確保tensorflow-gpu環境創建成功

5、安裝tensorflow-gpu

使用activate進入到tensorflow-gpu環境,使用以下命令進行安裝:

pip install --ignore-installed --upgrade tensorflow-gpu==1.12.0

如果安裝緩慢請參考其他教程換源。

6、查驗tensorflow是否安裝成功

這部分主要參考:https://zhuanlan.zhihu.com/p/58607298

①activate到tensorflow-gpu環境中然後輸入python進入到python中,輸入一下代碼:

import tensorflow as tf
hello = tf.constant('Hello , Tensorflow! ')
sess = tf.Session()
print(sess.run(hello))

預期輸出:

b'Hello , Tensorflow! '

中間會有一大堆關於 GPU的Log信息,例如:

2020-06-22 09:47:38.562662: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2020-06-22 09:47:39.111893: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties:
name: GeForce GTX 1060 major: 6 minor: 1 memoryClockRate(GHz): 1.6705
pciBusID: 0000:01:00.0
totalMemory: 6.00GiB freeMemory: 4.97GiB
2020-06-22 09:47:39.134322: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0
2020-06-22 09:47:41.602201: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-06-22 09:47:41.612905: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988]      0
2020-06-22 09:47:41.618302: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0:   N
2020-06-22 09:47:41.631165: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 4722 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1060, pci bus id: 0000:01:00.0, compute capability: 6.1)

如果只是平時做小規模的訓練,可以在Python Code前設置log等級:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

如果想徹底解決,請參考:https://blog.csdn.net/zhaohaibo_/article/details/80573676

②查看TensorFlow和Keras版本:

import tensorflow as tf
from tensorflow.keras import layers
print(tf.VERSION)
print(tf.keras.__version__)

輸出:

1.12.0
2.1.6-tf

7、在pycharm中調用tensorflow,

並查驗tensorflow是否能夠調用gpu做運算

①在PyCharm中新建Project

②進入中Existing interpreter右側瀏覽目錄

③在Interpreter右側瀏覽目錄中找到自己安裝Anaconda的路徑,在其中的envs文件夾中,有上文中自己創建的tensorflow-gpu環境,選中其中python.exe即可。

④在pycharm中查驗tensorflow是否能夠調用gpu做運算查驗tensorflow是否能夠調用gpu做運算:

創建一個.py文件,用TensorFlow,來比較一下CPU和GPU的時間差異:

例子來源:https://zhuanlan.zhihu.com/p/58607298

import tensorflow as tf
import timeit
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# See https://www.tensorflow.org/tutorials/using_gpu#allowing_gpu_memory_growth
config = tf.ConfigProto()
config.gpu_options.allow_growth = True

with tf.device('/cpu:0'):
    random_image_cpu = tf.random_normal((100, 1000, 100, 3))
    net_cpu = tf.layers.conv2d(random_image_cpu, 32, 7)
    net_cpu = tf.reduce_sum(net_cpu)

with tf.device('/gpu:0'):
    random_image_gpu = tf.random_normal((100, 1000, 100, 3))
    net_gpu = tf.layers.conv2d(random_image_gpu, 32, 7)
    net_gpu = tf.reduce_sum(net_gpu)

sess = tf.Session(config=config)

# Test execution once to detect errors early.
try:
    sess.run(tf.global_variables_initializer())
except tf.errors.InvalidArgumentError:
    print(
        '如果出了這個Error表示GPU配置不成功!\n\n')
    raise


def cpu():
    sess.run(net_cpu)


def gpu():
    sess.run(net_gpu)


# Runs the op several times.
print('Time (s) to convolve 32x7x7x3 filter over random 100x1000x100x3 images '
      '(batch x height x width x channel). Sum of ten runs.')
print('CPU (s):')
cpu_time = timeit.timeit('cpu()', number=10, setup="from __main__ import cpu")
print(cpu_time)
print('GPU (s):')
gpu_time = timeit.timeit('gpu()', number=10, setup="from __main__ import gpu")
print(gpu_time)
print('GPU speedup over CPU: {}x'.format(int(cpu_time / gpu_time)))

sess.close()

輸出:

Time (s) to convolve 32x7x7x3 filter over random 100x1000x100x3 images (batch x height x width x channel). Sum of ten runs.
CPU (s):
25.24234085335886
GPU (s):
1.5711942943447745
GPU speedup over CPU: 16x

輸出表明:這個任務GPU和6個i7的CPU相比快了16倍!

安裝踩坑總結:

其中最大的坑就是CUDA、cuDNN、tensorflow-gpu以及python版本之間的匹配了。有時候明明按照官方的版本匹配列表安裝,也是不行。

 

安裝之後如果出現“ImportError: DLL load failed: 找不到指定的模塊”錯誤,一般問題都是出在了版本不匹配上。

 

最需要注意的是CUDA9.2 。最初在NVIDIA控制面板,顯示我的顯卡支持CUDA 9.2.148,因此我按照推薦列表,選擇tensorflow-gpu1.12.0+cuDNN 7.5.0.56+CUDA 9.2.148 +python3.5.5。注意此處有坑!!無論如何都是安裝不成功,一直都是“ImportError: DLL load failed: 找不到指定的模塊”這個錯誤。

 

後來看到有網友說,推薦列表中只給出CUDA版本號 的第一位,一般使用的都是CUDA9.0或者CUDA10.0,後面版本可能會出現不兼容。

 

於是,卸載CUDA9.2(不要管NVIDIA控制面板組件中顯示的是CUDA9.2.148,不一定需要匹配),重新在推薦列表中尋找匹配的cuDNN以及tensorflow-gpu版本,最後成功安裝。

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