Tensorflow-gpu Install 安裝一條龍精華版
Author : Hanyun Zhang
微信公衆號:人工智不了能
Github:https://github.com/GitHub-ZHY/icehouse.git
Date : 2020/06/25
Tips : 歡迎關注我滴微信公衆號,有相關問題也歡迎發送郵件到 [email protected] 您的郵件我第一時間就會看到,一定會及時閱讀和回覆!
一、顯卡 & 驅動
本文講的是主流NVIDA顯卡(俗稱N卡)的Tensorflow-gpu的配置。
所以
- 先看看我們的小霸王配置怎麼樣,支不支持CUDA,不支持建議出門左轉x寶x東,大船靠岸。
- 如果支持 CUDA ,那就想盡辦法先把這顯卡驅動更新了。
相關鏈接:
查看本機顯卡是否支持 CUDA: https://developer.nvidia.com/cuda-gpus
N卡驅動下載:https://www.nvidia.cn/Download/index.aspx?lang=cn
沒裝 NVIDA GeForce Experience 的哥們兒們建議裝一波,不僅LOL段位能提高,主要還能自動更新顯卡驅動。
登高必自卑,行遠必自邇,先自己動起手來!
在這個承上啓下的部分,我先提出一個大重難點,即:
【Python & Tensorflow-gpu & 顯卡 & CUDA & cuDNN 的版本對應關係】”
着急看關係的朋友直接拉到最下面第八條
不推薦無腦選擇最新版本。畢竟 NVIDA Python Tensorflow 由不同組織來開發和維護。
不用慌,出現問題就解決問題,畢竟只是環境的小問題,接下來我們帶着問題,接着往下看”
二、CUDA
NVIDIA的顯卡驅動程序和CUDA是兩個完全不同的概念!
CUDA 是NVIDIA推出的用於自家GPU的並行計算框架,也就是說 CUDA 只能在 NVIDIA的GPU 上運行,而且只有當要解決的計算問題是可以大量並行計算的時候才能發揮 CUDA 的作用,所以它就是個工具包(ToolKit)。
CUDA 安裝包下載地址:https://developer.nvidia.com/cuda-toolkit-archive
點擊鏈接即可進入如下頁面,我們看到,有很多不同版本的 CUDA 。
截止2020/06/25,Tensorflow-gpu 所需的 CUDA 的安裝,建議
直接下載 CUDA Toolkit 10.1 (Feb 2019), Online Documentation
即圖中標紅項。
點進去後有一些對應版本的選擇,建議選擇 Local Install 本地安裝
,下載完了直接傻瓜安裝,此處不贅述。假如出現類似安裝MySQL安裝時的軟件依賴
,按提示安裝即可,不難,幹就完了。
三、cuDNN
cuDNN是一個SDK,是一個專門用於神經網絡的加速包。
注意,cuDNN 跟 CUDA 沒有一一對應的關係
即每一個版本的CUDA可能有好幾個版本的cuDNN與之對應,但一般有一個最新版本的cuDNN版本與CUDA對應更好。
通俗來講,CUDA 是 cuDNN的大哥。大哥有很多小弟,但二當家只有一個。
截止2020/06/25,Tensorflow-gpu 所需的 CUDA 的 cuDNN 的安裝,建議點擊鏈接
https://developer.nvidia.com/rdp/cudnn-archive
直接下載圈紅項 Download cuDNN v7.6.5 (November 5th, 2019), for CUDA 10.1
如果需要登錄,不妨註冊個賬號。
此處下載爲ZIP壓縮包,解壓到想要的位置,將其bin
路徑配置PATH
環境變量即安裝完畢。
四、Anaconda 虛擬環境
只要接觸過 Python
必然知道 Pycharm
和 Anaconda
,關於 Anaconda
我們不多講,此處就利用其虛擬環境來配置 Tensorflow-gpu
環境。
爲什麼要用虛擬環境呢?虛擬環境就相當於一個同學不同科目的筆記本,不同的本子記錄不同的東西,自然安排的功能也就不一樣。虛擬環境對於不同項目的配置以及各種包的管理十分思路清晰,不會雜亂。
另外,值得一提的是 Anaconda 命令行
的一系列操作。
貼個不錯的帖子:
Anaconda虛擬環境管理 https://www.cnblogs.com/chenhuabin/p/10718471.html
五、Tensorflow-gpu安裝
按下面一步步來,不要着急。
# 打開 Anaconda 命令行 Anaconda Prompt (Anaconda3)
# 檢測目前安裝了哪些環境
conda info --envs
# 創建對應Python版本的虛擬環境
conda create --name tensorflow-gpu python=3.8.3
# 激活剛剛創建的環境
activate tensorflow-gpu
# 直接 pip 安裝 tensorflow-gpu , 截止目前2020/06/25自動安裝 tf 2.2 版本
pip install tensorflow-gpu
另外,關於 windows
下 pip
、conda
的換源,相關帖子已備好,等待君上食用。
點擊即可 老狗——Windows os 的 pip & conda 換源(國內源,速度提升!)
六、安裝有效性測試
- 測試方法一:打開
Anaconda
的虛擬環境進入Python
交互式命令行,複製粘貼代碼運行。 - 測試方法二:打開
Pycharm
,
file > setting > project:xxx > project interpreter > 配置測試項目的project interpreter
解釋器爲虛擬環境路徑下的python.exe
,如下圖。
測試代碼一:
import tensorflow as tf
import timeit
with tf.device('/cpu:0'):
cpu_a = tf.random.normal([10000, 1000])
cpu_b = tf.random.normal([1000, 2000])
print(cpu_a.device, cpu_b.device)
with tf.device('/gpu:0'):
gpu_a = tf.random.normal([10000, 1000])
gpu_b = tf.random.normal([1000, 2000])
print(gpu_a.device, gpu_b.device)
def cpu_run():
with tf.device('/cpu:0'):
c = tf.matmul(cpu_a, cpu_b)
return c
def gpu_run():
with tf.device('/gpu:0'):
c = tf.matmul(gpu_a, gpu_b)
return c
# warm up
cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('warmup:', cpu_time, gpu_time)
cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('run time:', cpu_time, gpu_time)
輸出類似下面:
GPU (device: 0, name: GeForce 1060, pci bus id: 0000:02:00.0, compute capability: 6.1)
/job:localhost/replica:0/task:0/device:CPU:0 /job:localhost/replica:0/task:0/device:CPU:0
/job:localhost/replica:0/task:0/device:GPU:0 /job:localhost/replica:0/task:0/device:GPU:0
2020-06-25 22:11:16.634792: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
warmup: 1.4536040000000003 0.4982911999999997
run time: 1.3492356 0.0006344000000000349
測試代碼二:
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
a = tf.constant(1.)
b = tf.constant(3.)
print(a+b)
print('GPU:', tf.test.is_gpu_available())
輸出:
tf.Tensor(4.0, shape=(), dtype=float32)
.
.# 一大堆亂七八糟
.
1060, pci bus id: 0000:02:00.0, compute capability: 6.1) # GPU不同則不同
GPU: True
下面給一個我已經安裝成功環境的進入和測試用例:
七、CUDA & CUDNN 的卸載
測試提示Cannot found
…或是其他不好使的錯誤。
如果需要卸載重裝 CUDA,那麼在下圖矩形中,除了箭頭標識的項目,全部卸載!
如果 cuDNN 又因此不對應了,重新下載解壓對應版本,修改環境變量!
八、總結 Python & Tensorflow-gpu & 顯卡 & CUDA & cuDNN 的版本對應關係
Python
是一門動態編程語言。
TensorFlow
是谷歌基於DistBelief進行研發的第二代人工智能學習系統,其命名來源於本身的運行原理。Tensor (張量)意味着N維數組,Flow (流)意味着基於數據流圖的計算,TensorFlow爲張量從流圖的一端流動到另一端計算過程。TensorFlow是將複雜的數據結構傳輸至人工智能神經網中進行分析和處理過程的系統。
Python
對於Tensorflow
的支持較爲及時到位,截至2020/06/25
,Python 3.8.3
和Tensorflow 2.2
是完美契合的,且都是最新版。- 其次,顯卡的能力決定了你能不能使用
GPU
來計算,水平夠自然可以使用CUDA & cuDNN
。cuDNN 跟 CUDA 沒有一一對應的關係。每一個版本的CUDA
可能有好幾個版本的cuDNN
與之對應,但一般有一個最新版本的cuDNN
版本與CUDA
對應更好。 Tensorflow
對於CUDA
也是有要求的,目前Tensorflow
支持CUDA 10.1
(TensorFlow 2.1.0
及更高版本),具體的我甩個鏈接,哥們兒們慢慢兒看。
GPU支持 | TensorFlow https://tensorflow.google.cn/install/gpu?hl=zh_cn
另外,關於CUDA 工具包附帶的 CUPTI 的相關問題,我安裝時沒用到,也沒研究,等研究完再說吧。
此致,敬禮!