1. 程式人生 > >ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 環境搭建

ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 環境搭建

1. 主機配置說明

在前幾天,得知公司新採購了幾臺主機,所以我們組領導就向公司申請了一臺回來,做資料分析。

伺服器買的是惠普的主機,型號是:HP EliteDesk 800 G3。不算強勁,但用來做GPU的資料分析測試,也可以了。
具體引數:
CPU:i7-7700
記憶體: 32G
顯示卡: GTX 1070
硬碟: 256 ssd + 1T
自帶 windows 10 64位 專業版系統

2. 更換系統

由於主機自帶的是windows系統,但是我們想用 ubuntu 的系統,因此,只能先重灌一下系統了。
具體的更換系統的過程就不寫了,大家有需要的,可以參考一下這篇文章

要注意的是,不要關閉主機板的 UEFI 引導,並且,你的 Ubuntu 系統引導盤,也就是U盤,需要用USB3.0的介面。因為,我測試的時候,用過普通 USB2.0 介面的,一直識別不了。同時,系統盤要製作成純系統盤,裡面出來系統軟體之外,不要有其他檔案。

3. 安裝顯示卡驅動

新安裝 ubuntu 18.04 的系統之後,先更新一下系統自帶的源,我在自己使用的 CentOS 或者 Ubuntu 等linux 系列系統的時候,都習慣更換成阿里雲的源,感覺速度和穩定都維護得比較好。

3.1 關閉系統預設的顯示卡驅動

如果你安裝的是 ubuntu 帶桌面圖形介面的版本,那麼它預設的顯示卡可能是nouveau,我們首先需要關閉它。具體方法:
開啟禁用列表:

sudo vim  /etc/modprobe.d/blacklist.conf

在後面新增:

blacklist nouveau
options nouveau modeset=0

儲存退出後,更新,重啟系統:

sudo  update-initramfs -u

sudo reboot

重啟後,你可能會發現螢幕沒有了輸出,甚至連登入介面也沒有了。
先別慌,如果你使用 xshell 這類終端登入工具的話,這時你仍然能遠端連線到系統的,前提是你已經在系統開啟了 openssh-server,不過ubuntu 18 預設是沒有開啟openssh-server 的。
如果你沒有用xshell 來連線,那麼你可以按一下 ctrl + alt + F3 組合鍵,這時候,螢幕上又會切換到字元登入介面,熟悉的輸入使用者名稱,密碼介面再次呈現。
這些都是因為,我們在上一步禁止了 nouveau 驅動,但是主機的獨立顯示卡驅動還沒有安裝好。

3.2 安裝nvidia 顯示卡驅動

在安裝顯示卡驅動前,還需要再確認一下你係統自帶的驅動有哪些:

[email protected]:~$ sudo ubuntu-drivers devices
[sudo] password for kkt: 
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001B81sv0000103Csd00006899bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP104 [GeForce GTX 1070]
driver   : nvidia-driver-396 - third-party free
driver   : nvidia-driver-390 - third-party free
driver   : nvidia-driver-410 - third-party free
driver   : nvidia-driver-415 - third-party free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

可以,看出nvidia 支援的驅動版本有396,390,410,415 幾個型別。不過這是我在新增顯示卡 ppa 源之後,才顯示這麼多個的,本來只有390,396兩個版本。
怎麼新增顯示卡 ppa 源:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

在新增 ppa 源的時候,可能會因為網路的原因,更新失敗。我們需要留意提示資訊,以為新增失敗之後,會導致某些版本根本不能安裝。
選擇你希望安裝的 nvidia 版本,我推薦安裝 nvidia-driver-396 的版本,不求它最新,因為最新的版本,相容性反而可能會差,甚至用不了。
安裝nvidia 驅動:
重點: 先刪除舊的 nvidia 驅動

sudo apt-get purge nvidia-*

sudo apt   install nvidia-driver-396

安裝完成之後,重啟主機 : sudo reboot
檢查 nvidia 顯示卡狀況:

sudo nvidia-smi

ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 環境搭建

如果你沒有檢測到nvidia顯示卡的狀態,可能需要先掛載:

sudo  nvidia  modprobe nvidia

正常來說,如果你的主機有獨立顯示卡,在安裝完nvidia顯示卡驅動,重啟就能在螢幕輸出你熟悉的圖形登入介面。

4. 安裝 CUDA 9.0

首先,cuda 9.0 編譯安裝只支援gcc、g++ 6.0 及以下的版本,所以,如果系統已經預設安裝了gcc 7.0 以上版本的,就需要將級了。

sudo apt-get install gcc-4.8

sudo apt-get install g++-4.8

切換到 /usr/bin 目錄,對gcc7.0 進行降級,其實就是重新建立軟連線:

ls  -l   gcc*  
sudo mv  gcc   gcc.bak
sudo ln -s  gcc-4.8  gcc

ls -l   g++*
sudo  mv  g++ g++.bak
sudo ln  -s  g++-4.8  g++

重新檢視g++、gcc 的版本:

g++  -v
gcc   -v

確認gcc、g++ 的版本為4.8 就可以了。

下載CUDA 9.0

說明,現在先不要使用 cuda 9.1 或者 cuda 10,因為後面 tensorflow 對這些版本還沒有支援。我一開始安裝的也是cuda 9.1 以為版本越新越好。
cuda 各個版本的歸檔目錄在這裡,選擇9.0 的版本:
ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 環境搭建

ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 環境搭建

注意,這裡選擇 ubuntu 16.04 的系統版本,對18.04 也適用。
cuda 9.0 共5個檔案,包括4個patch都需要下載。下載完成之後,上傳到伺服器,進行安裝,cuda安裝的過程中,會提示要安裝nvidia driver的,不要安裝,因為我們之前已經安裝過了。其他的選項可以隨意:

sudo sh cuda_9.0.176_384.81_linux-run
sudo sh cuda_9.0.176.1_linux-run
sudo sh cuda_9.0.176.2_linux-run
sudo sh cuda_9.0.176.3_linux-run
sudo sh cuda_9.0.176.4_linux-run

同樣,下載 cuDNN 進行安裝。cuDNN 的版本選擇 7.1.4,選擇7.0的大多數情況會沒有問題,但是當使用 tensorflow 進行卷積運算的時候,會提示初始化失敗,原因是 tensorflow 1.9 裡編譯的支援的版本是 7.1.4 及以上。
下載 cuDNN 請在這裡 ,注意,下載需要提供註冊賬號,自己搞一個郵箱註冊一下。
ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 環境搭建

下載完成之後,上傳到伺服器,開始安裝:

其實是先解壓,然後將檔案複製到cuda-9.0 的目錄裡。
sudo  tar  xvzf  cudnn-9.0-linux-x64-v7.1.tgz
解壓之後,預設的目錄名也叫 cuda.
然後,複製cuDNN的內容:
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   /usr/local/cuda/lib64/libcudnn*

至此,cuda 和 cudnn已經安裝完畢。
但是,還需要修改一下環境變數:

修改 sudo  vim  ~/.bashrc,新增以下內容:

export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export  PATH=${CUDA_HOME}/bin:${PATH}

修改 sudo  vim  /etc/profile ,新增以下內容:
export PATH=/usr/local/cuda/bin:$PATH

繼續修改:

sudo vim   /etc/ld.so.conf.d/cuda.conf

/usr/local/cuda/lib64

修改後,載入配置,但可能會提示:(/usr/local/cuda/lib64/libcudnn.so.7 不是符號連結?)

sudo   ldconfig
sudo  ln -sf /usr/local/cuda/lib64/libcudnn.so.7.1.4    /usr/local/cuda/lib64/libcudnn.so.7
sudo ldconfig

最後,可以安裝tensorflow 了

5. 安裝 tensorflow

利用pip 的方式來安裝:

sudo  pip3  install  tensorflow-gpu==1.9.0

沒有pip3 的,自己安裝一下:

sudo apt install  python3-pip

6. 總結

tensorflow 的版本相容比較嚴格,這一點值得注意。