ubuntu18.04 tensorflow 機器學習環境搭建

1. 主機配置說明

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

服務器買的是惠普的主機,型號是:HP EliteDesk 800 G3。不算強勁,但用來做GPU的數據分析測試,也可以了。
具體參數:
CPU:i7-7700
內存: 32G
顯卡: GTX 1070
硬盤: 256 ssd + 1T
自帶 windows 10 64位 專業版系統
搭建環境版本選擇: ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9

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 顯卡驅動

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

kkt@kkt-HP:~$ 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 tensorflow 機器學習環境搭建

如果你沒有檢測到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 tensorflow 機器學習環境搭建

ubuntu18.04 tensorflow 機器學習環境搭建

注意,這裏選擇 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 tensorflow 機器學習環境搭建

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

其實是先解壓,然後將文件複製到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

如果 pip3 的安裝速度太慢,導致超時報錯,可以嘗試一下,使用國內源,具體方法:

修改 ~/.pip/pip.conf (沒有就創建一個):

 如果不存在此文件夾,則創建之
mkdir ~/.pip
vi ~/.pip/pip.conf

增加內容如下:

[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

6. 總結

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

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