Linux 安裝 Tensorflow-gpu

實驗環(huán)境:
????硬件:Dell G7 / RTX2060
????系統(tǒng):Kubuntu 20.04 LTS
????軟件環(huán)境(已預先安裝):
????????nvidia-driver-470
????????nvidia-cuda-toolkit
????????python3、pip3(沒有安裝Anaconda)

首先,先放幾個重要的鏈接:
????tensorflow各個版本與cuda版本的對應關系(有時效性,僅供參考)
????????https://blog.csdn.net/ysten618/article/details/106928786/
????NVIDIA cuDNN 官方下載站
????????https://developer.nvidia.com/rdp/cudnn-archive#a-collapse765-101

安裝TensorFlow并使其能夠使用電腦的英偉達顯卡,需要同時安裝CUDA(讓NVIDIA顯卡能夠用于并行計算的工具包)和cuDNN(讓NVIDIA顯卡能夠用于神經網絡計算的包)。
也就是,總共3個包:(默認python3、顯卡驅動等這些基礎的東西你已經裝好了)
????Tensorflow-GPU
????CUDA
????cuDNN
(若沒有安裝英偉達顯驅,可參考 https://zhuanlan.zhihu.com/p/59618999 中的1.1和1.2步驟安裝)

CUDA安裝
????由于本萌新認為安裝顯卡驅動是最危險、最難處理的步驟,所以本萌新安裝tensorflow是以“不更改顯卡驅動”為核心準則的,(實際上三個包的安裝的版本并不是固定的)。通過命令
????????sudo aptitude install nvidia-cuda-toolkit
自動地安裝適應當前顯驅的最合適的CUDA。(本實驗已經提前安裝了CUDA,所有沒有實際執(zhí)行這一句)
????查看CUDA版本:
????????本來應該有兩種方法:
????????????1)輸入命令:
??????????????? nvidia-smi

????????????2)輸入命令:
????????????????nvcc -V

????????????兩種方法顯示的結果不一致,經過實驗,以第二種方法的結果為準。

Tensorflow-GPU安裝
????根據“對應表”,選擇合適的Tensorflow版本進行安裝

????例如,我的CUDA版本是10.1.243,所以可以選擇Tensorflow-GPU-2.3.0進行安裝,使用命令:
????????sudo pip3 install tensorflow-gpu==2.3.0
????(注:pip3前面加sudo是我個人的陋習,你們實踐的時候可以嘗試不加sudo)
????

cuDNN安裝
????前往cuDNN官方下載站,根據“對應表”,選擇合適的cuDNN版本下載。例如,我的CUDA版本為10.1.243,Tensorflow版本為2.3.0,那么cuDNN的版本應為7.6。

????為了安裝方便,本萌新選則使用Deb包進行傻瓜式安裝,在這里有三個文件,只有1號文件是必須安裝的cuDNN本體,2號3號隨意安裝,但安裝必須先安裝1號文件。
????下載好后先命令行cd到下載目錄下,然后使用命令:
????????sudo dpkg -i xxxxxxxxx.deb
進行Deb包安裝。
????(注:實驗系統(tǒng)為Kubuntu20.04,但安裝了屬于Ubuntu18.04的包,目前尚未出現(xiàn)兼容性問題)

????至此,tensorflow-gpu已經成功安裝,現(xiàn)在可以檢查其是否可以正常使用。本萌新提供一份簡單的渣渣測試代碼:
#########################################################################
import tensorflow as tf
import numpy as np
tf.compat.v1.disable_eager_execution()
N = 1000
x_data = np.random.rand(N).astype(np.float32)
y_data = x_data * 0.5 - 0.5
### Create TF Structure Start #################################################
# -1至1 的一維初始權重
Weights = tf.Variable(tf.random.uniform([1],-1.0,1.0))
# 0 的一維初始偏置
biases = tf.Variable(tf.zeros([1]))
#神經元計算值
y = Weights * x_data + biases
#誤差(平方均值)
cost = tf.reduce_mean(tf.square(y - y_data))
#求導優(yōu)化器(0.5的學習效率)
optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.5)
#按照cost啟動優(yōu)化器
train = optimizer.minimize(cost)
#神經網絡結構初始化按鈕
init = tf.compat.v1.global_variables_initializer()
### Create TF Structure End #################################################
sess = tf.compat.v1.Session()
sess.run(init)
for step in range(1000):
??? sess.run(train)
??? if step%20 == 0:
??????? print('%04d:'%step,'Weights = %f'%sess.run(Weights)[0],'biases = %f'%sess.run(biases)[0])
########################################################################
????試運行該代碼,觀察輸出結果,著重看有沒有類似“Could not load dynamic library xxxxxxxx.so.xx.x.x”的錯誤發(fā)生,即缺少什么什么文件。
????若顯示缺少libcudart.so.10.1文件,那么說明安裝的Tensorflow-GPU的需要的CUDA版本為10.1.x,(著重看文件的數(shù)字后綴,它對應者包的版本)。
????若顯示缺少libcudnn.so.7文件,即說明安裝的Tensorflow-GPU的需要的cuDNN版本為7.x。
????這種問題自行重新安裝各個包、調整其版本即可。