Ubuntu18.04完美搭建Tensorflow-gpu
- 2019 年 10 月 5 日
- 筆記

Ubuntu18.04完美搭建Tensorflow-GPU1.8
0.導語
這是18年的最後一個工作日,為了這篇文章耗費了半天的時間來琢磨!
關於文章更新,後面不能保證每天一篇了,因為要放假回家了,哈哈!
18年回顧
光城

請輸入

文章分享 互促共進

堅持分享,互促共進
Persist in sharing and promote mutual progress
共建共助
19年展望
光城
論文復現 刷爆offer


請輸入

堅持刷題,直通Offer
Stick to the brush, go straight to Offer
共助刷題
今天這篇文章主要講的是,我將我自己的系統全部刪除掉,然後裝上一個單系統,Ubuntu18.04!
然後在Ubuntu上搭建深度學習環境!
本次搭建環境,主要是在Ubuntu18.04版本,關於Centos系統搭建深度學習環境昨天也嘗試了,驅動與cuda都裝成功了!但可惜電腦莫名的啟動不了了,然後就換成這次的Ubuntu了,總結了一下,發現Ubuntu比Centos簡單了很多!
有時需要對自己狠一點,不留後路,就像這次換系統一樣,全部卸載掉,只保留一個單Linux系統,讓自己在Linux上重燃激情與活力,不斷磨鍊自己的學習毅力與能力!
1.驅動
1.1 檢查
配置深度學習GPU環境之前,首先了解一下自己的GPU是否是CUDA-capable!
lspci | grep -i nvidia
輸入上述命令,會看到如下輸出:

如果有,則支援,否則不支援!
1.2 禁驅動
不管是centos還是ubuntu系統,系統都會自帶nouveau驅動,而這個驅動會影響後面的cuda安裝,不當操作會出現黑屏現象!
現在來查看一下nouveau設備有沒有,輸入下面命令,如果有輸出,則說明這個驅動正在載入!
lsmod|grep nouveau
我們接下來需要做的工作就是禁用這個驅動!
編輯blacklist.conf
配置文件
sudo gedit /etc/modprobe.d/blacklist.conf
尾部追加:
blacklist nouveau options nouveau modeset=0
更新配置文件
sudo update-initramfs -u
再次查看驅動是否被載入
lsmod | grep nouveau
上述這個操作不能徹底禁用nouveau,則移除nouveau.ko與nouveau.ko.org文件即可!
如下操作:
cd /lib/modules/4.15.0-29-generic/kernel/drivers/gpu/drm/nouveau sudo rm -rf nouveau.ko sudo rm -rf nouveau.ko.org
上述4.15.0-29不一定一致,這裡直接tab補全就可以了,然後其他的同上!
隨後,在做更新
sudo update-initramfs -u
再檢查
lsmod | grep nouveau
如果還是有輸出,則重啟即可,否則沒有輸出,表示禁用成功!
1.3 安裝nvidia驅動
上述原裝驅動卸載後,開始裝nvidia驅動!
- 卸載原有nvidia驅動
sudo apt-get remove --purge nvidia-*
- 安裝驅動
有兩種方式安裝:
第一種方式,直接打開「軟體和更新」,然後找到附加驅動,直接選擇nvidia驅動安裝即可,但是不幸的是網速比較慢,容易出錯,所以不建議這種方式安裝,我第一次瞎搞,就這樣搞,是不行的!

第二種方式,也是我建議的方式:
首先確定自己所需要安裝的驅動版本:
ubuntu-drivers devices
會看到:
driver : nvidia-340 - distro non-free driver : nvidia-driver-390 - distro non-free recommended driver : xserver-xorg-video-nouveau - distro free builtin
然後來安裝驅動,一般看第二行,我們看到有個英文單詞recommended,表示建議安裝驅動!
sudo apt-get install nvidia-driver-390
上述一鍵安裝即可,安裝完後,測試:
nvidia-smi
輸出:

若顯示如上表,則表示驅動nvidia安裝成功!
2.Cuda
2.1 版本
關於版本,我選擇Cuda9.0!
下載地址:
https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1704&target_type=runfilelocal
進入上述下載地址後,我們發現選擇的Ubuntu系統支援到17.04,我當時也納悶了,沒有18.04,那怎麼搞呢?
想了半天不管了,最後果然,沒得影響,所以直接按照我下面勾選的下載安裝即可,不用糾結!

2.2 安裝
輸入下面命令,進行安裝:
sudo sh cuda_9.0.176_384.81_linux.run
中間會提示是否為NVIDIA安裝,由於前面安裝過了,所以選擇no,其餘默認即可,安裝過程,如果修改了安裝路徑,請記住,後面配置需要用到!
2.3 環境變數
配置環境變數
sudo gedit /etc/profile
尾部追加
export PATH=/usr/local/cuda-9.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64$LD_LIBRARY_PATH
上述保存後,然後重啟電腦!
2.4 測試Cuda
依次輸入下面命令
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery sudo make ./deviceQuery
如果顯示GPU相應資訊,則成功!
如下圖所示:

額外的庫文件安裝
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
2.5 動態鏈接
編輯~/.bashrc文件
vi ~/.bashrc
尾部追加
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
打開環境配置文件
sudo gedit /etc/profile
尾部追加
export PATH=/usr/local/cuda/bin:$PATH
創建鏈接文件
sudo gedit /etc/ld.so.conf.d/cuda.conf
添加
/usr/local/cuda/lib64
執行生效
sudo ldconfig
3.CudNN
3.1 版本
cudnn-9.0-linux-x64-v7.tgz
下載地址:
https://developer.nvidia.com/cudnn
需要註冊!
3.2 安裝
解壓並安裝
tar -xzvf cudnn-9.0-linux-x64-v7.tgz sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h
更新鏈接
cd /usr/local/cuda/lib64/ sudo chmod +r libcudnn.so.7.0.3 # 自己查看.so的版本 sudo ln -sf libcudnn.so.7.0.3. libcudnn.so.7 sudo ln -sf libcudnn.so.7 libcudnn.so sudo ldconfig
4.Anaconda3
4.1 版本
版本為:
Anaconda3-5.2.0-Linux-x86_64.sh
下載地址:
https://repo.continuum.io/archive/
這個5.2.0有bug!建議改為5.3以上!
4.2 安裝
bash Anaconda3-5.2.0-Linux-x86_64.sh
一直選擇默認,回車就行!
中間的一個安裝注意點:是否選擇添加環境變數到~/.bashrc,選擇是就可以了!
最後執行
source ~/.bashrc
4.3 測試
輸入python
顯示上述Anaconda,則表示安裝成功!可以看看conda命令是否可以使用!

5.Tensorflow-GPU
5.1 版本
版本:tensorflow-gpu-1.8
5.2 安裝
直接輸入:
conda install tensorflow-gpu==.
最後發現,直接輸入pip就可以了,所以上述換成:
pip install tensorflow-gpu==.
兩者區別是,cond安裝會更新包,pip則不會!
6.測試
依次輸入如下命令:
import tensorflow as tf a = tf.constant([1.0,2.0,3.0],name='a') b = tf.constant([3.0,4.0,5.0],name='b') c = a + b sess = tf.Session() print(sess.run(c))
測試結果如下圖:

看到[4. 6. 8.],並看到自己的GPU設備,測試成功!
但是發現了一個小的bug,上面導包的時候有個警告,這個可以忽略不計,但是為了追求完美,最後的解決方案是:重裝h5py即可!

上圖這個警告是h5py與numpy不兼容,我卸載後,然後重裝,警告解決!
重裝解決如下圖:

導包後,沒警告了,很完美!哈哈,終於安裝完畢!
7.總結
由於cuda8.0以上不支援gcc5.0以上,所以要保證自己電腦的gcc與g++版本!將這兩個進行降級,有關解決問題方案,網上很多,如果安裝過程碰到可以留言,也可以Google!
希望通過本文,大家可以對深度學習環境有個更深刻的認識,並且深入了解Ubuntu系統的操作!