在前幾天,得知公司新采購了幾臺主機(jī),所以我們組領(lǐng)導(dǎo)就向公司申請了一臺回來,做數(shù)據(jù)分析。
創(chuàng)新互聯(lián)建站是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),外鏈,一元廣告為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計到用戶體驗提高,創(chuàng)新互聯(lián)力求做到盡善盡美。服務(wù)器買的是惠普的主機(jī),型號是:HP EliteDesk 800 G3。不算強(qiáng)勁,但用來做GPU的數(shù)據(jù)分析測試,也可以了。
具體參數(shù):
CPU:i7-7700
內(nèi)存: 32G
顯卡: GTX 1070
硬盤: 256 ssd + 1T
自帶 windows 10 64位 專業(yè)版系統(tǒng)
搭建環(huán)境版本選擇: ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9
由于主機(jī)自帶的是windows系統(tǒng),但是我們想用 ubuntu 的系統(tǒng),因此,只能先重裝一下系統(tǒng)了。
具體的更換系統(tǒng)的過程就不寫了,大家有需要的,可以參考一下這篇文章。
要注意的是,不要關(guān)閉主板的 UEFI 引導(dǎo),并且,你的 Ubuntu 系統(tǒng)引導(dǎo)盤,也就是U盤,需要用USB3.0的接口。因為,我測試的時候,用過普通 USB2.0 接口的,一直識別不了。同時,系統(tǒng)盤要制作成純系統(tǒng)盤,里面出來系統(tǒng)軟件之外,不要有其他文件。
新安裝 ubuntu 18.04 的系統(tǒng)之后,先更新一下系統(tǒng)自帶的源,我在自己使用的 CentOS 或者 Ubuntu 等linux 系列系統(tǒng)的時候,都習(xí)慣更換成阿里云的源,感覺速度和穩(wěn)定都維護(hù)得比較好。
如果你安裝的是 ubuntu 帶桌面圖形界面的版本,那么它默認(rèn)的顯卡可能是nouveau,我們首先需要關(guān)閉它。具體方法:
打開禁用列表:
sudo vim /etc/modprobe.d/blacklist.conf
在后面添加:
blacklist nouveau
options nouveau modeset=0
保存退出后,更新,重啟系統(tǒng):
sudo update-initramfs -u
sudo reboot
重啟后,你可能會發(fā)現(xiàn)屏幕沒有了輸出,甚至連登錄界面也沒有了。
先別慌,如果你使用 xshell 這類終端登錄工具的話,這時你仍然能遠(yuǎn)程連接到系統(tǒng)的,前提是你已經(jīng)在系統(tǒng)開啟了 openssh-server,不過ubuntu 18 默認(rèn)是沒有開啟openssh-server 的。
如果你沒有用xshell 來連接,那么你可以按一下 ctrl + alt + F3 組合鍵,這時候,屏幕上又會切換到字符登錄界面,熟悉的輸入用戶名,密碼界面再次呈現(xiàn)。
這些都是因為,我們在上一步禁止了 nouveau 驅(qū)動,但是主機(jī)的獨立顯卡驅(qū)動還沒有安裝好。
在安裝顯卡驅(qū)動前,還需要再確認(rèn)一下你系統(tǒng)自帶的驅(qū)動有哪些:
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 支持的驅(qū)動版本有396,390,410,415 幾個類型。不過這是我在添加顯卡 ppa 源之后,才顯示這么多個的,本來只有390,396兩個版本。
怎么添加顯卡 ppa 源:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
在添加 ppa 源的時候,可能會因為網(wǎng)絡(luò)的原因,更新失敗。我們需要留意提示信息,以為添加失敗之后,會導(dǎo)致某些版本根本不能安裝。
選擇你希望安裝的 nvidia 版本,我推薦安裝 nvidia-driver-396 的版本,不求它最新,因為最新的版本,兼容性反而可能會差,甚至用不了。
安裝nvidia 驅(qū)動:
重點: 先刪除舊的 nvidia 驅(qū)動
sudo apt-get purge nvidia-*
sudo apt install nvidia-driver-396
安裝完成之后,重啟主機(jī) : sudo reboot
檢查 nvidia 顯卡狀況:
sudo nvidia-smi
如果你沒有檢測到nvidia顯卡的狀態(tài),可能需要先掛載:
sudo nvidia modprobe nvidia
正常來說,如果你的主機(jī)有獨立顯卡,在安裝完nvidia顯卡驅(qū)動,重啟就能在屏幕輸出你熟悉的圖形登錄界面。
首先,cuda 9.0 編譯安裝只支持gcc、g++ 6.0 及以下的版本,所以,如果系統(tǒng)已經(jīng)默認(rèn)安裝了gcc 7.0 以上版本的,就需要將級了。
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
切換到 /usr/bin 目錄,對gcc7.0 進(jìn)行降級,其實就是重新創(chuàng)建軟連接:
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
確認(rèn)gcc、g++ 的版本為4.8 就可以了。
說明,現(xiàn)在先不要使用 cuda 9.1 或者 cuda 10,因為后面 tensorflow 對這些版本還沒有支持。我一開始安裝的也是cuda 9.1 以為版本越新越好。
cuda 各個版本的歸檔目錄在這里,選擇9.0 的版本:
注意,這里選擇 ubuntu 16.04 的系統(tǒng)版本,對18.04 也適用。
cuda 9.0 共5個文件,包括4個patch都需要下載。下載完成之后,上傳到服務(wù)器,進(jìn)行安裝,cuda安裝的過程中,會提示要安裝nvidia driver的,不要安裝,因為我們之前已經(jīng)安裝過了。其他的選項可以隨意。
安裝過程如下:
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 進(jìn)行安裝。cuDNN 的版本選擇 7.1.4,選擇7.0的大多數(shù)情況會沒有問題,但是當(dāng)使用 tensorflow 進(jìn)行卷積運算的時候,會提示初始化失敗,原因是 tensorflow 1.9 里編譯的支持的版本是 7.1.4 及以上。
下載 cuDNN 請在這里 ,注意,下載需要提供注冊賬號,自己搞一個郵箱注冊一下。
下載完成之后,上傳到服務(wù)器,開始安裝:
其實是先解壓,然后將文件復(fù)制到cuda-9.0 的目錄里。
sudo tar xvzf cudnn-9.0-linux-x64-v7.1.tgz
解壓之后,默認(rèn)的目錄名也叫 cuda.
然后,復(fù)制cuDNN的內(nèi)容:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
最后,修改權(quán)限:
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
至此,cuda 和 cudnn已經(jīng)安裝完畢。
但是,還需要修改一下環(huán)境變量:
修改 sudo vim ~/.bashrc,添加以下內(nèi)容:
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
修改 sudo vim /etc/profile ,添加以下內(nèi)容:
export PATH=/usr/local/cuda/bin:$PATH
繼續(xù)修改:
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 了
利用pip 的方式來安裝:
sudo pip3 install tensorflow-gpu==1.9.0
沒有pip3 的,自己安裝一下:
sudo apt install python3-pip
如果 pip3 的安裝速度太慢,導(dǎo)致超時報錯,可以嘗試一下,使用國內(nèi)源,具體方法:
修改 ~/.pip/pip.conf (沒有就創(chuàng)建一個):
如果不存在此文件夾,則創(chuàng)建之
mkdir ~/.pip
vi ~/.pip/pip.conf
增加內(nèi)容如下:
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
tensorflow 的版本兼容比較嚴(yán)格,這一點值得注意。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。