os安裝
目前對tensorflow和cuda支持最好的是ubuntu的18.04 ,16.04這種lts洪燥,推薦使用18.04版本磕秤。非lts的版本一般不推薦。
Windows倒是也能用來裝深度GPU環(huán)境捧韵,但是Windows上的問題實(shí)在太多了市咆,而且很多都是跟環(huán)境相關(guān)的,不具備普遍性再来,解決了也沒有意義蒙兰。所以真心不推薦Windows環(huán)境。
這里需要注意的是芒篷,ubuntu有桌面版本和服務(wù)器版本的區(qū)別搜变,自己用的話,肯定是要桌面版本的针炉,但是如果只是放在角落里做運(yùn)算機(jī)又或者是桌面版本安裝失敗的時(shí)候挠他,可以考慮服務(wù)器版本。
ubuntu自帶的開源驅(qū)動(dòng)似乎有點(diǎn)問題篡帕,1080ti的顯卡不支持殖侵,所以只能用服務(wù)器版本裝好之后,再考慮怎么裝上桌面镰烧。
而且ubuntu從17.04的很多東西都可以安裝在$HOME/.local 下面愉耙,省去了很多的麻煩。
從ubuntu官網(wǎng)下載ubuntu的iso鏡像拌滋。
balabalabala...
系統(tǒng)安裝就完成了朴沿。
安裝完之后的設(shè)置
升級(jí)
裝完之后,推薦先升級(jí)一下系統(tǒng)败砂。試了一下赌渣,默認(rèn)的源速度不怎么好,換一個(gè)國內(nèi)的源昌犹。國內(nèi)的話坚芜,有ali,163斜姥,tuna鸿竖,中科大沧竟。參考各個(gè)國內(nèi)源說明文檔去修改sources.list即可。
ali的ubuntu18.04 sources.list設(shè)置
deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
執(zhí)行下述命令升級(jí)
sudo apt-get update
sudo apt-get upgrade
升級(jí)完系統(tǒng)之后缚忧,重啟一下系統(tǒng)悟泵。
sudo reboot
安裝rsync screen aptitude
因?yàn)橄到y(tǒng)里面現(xiàn)在還啥也沒有,安裝完之后對系統(tǒng)做一個(gè)易用性的設(shè)置闪水。
sudo apt-get install rsync screen aptitude
pip安裝
因?yàn)槲覀冞@里是用pip安裝的各個(gè)框架糕非,所以pip要先安裝一下
sudo aptitude install python3-pip
重要:ubuntu18.04里面自帶的已經(jīng)是python3.6了,如果操作系統(tǒng)使用的是ubuntu16.04球榆,其自帶的python是python3.5朽肥,則需要考慮使用conda等工具安裝python3.6之后再進(jìn)行后續(xù)的各個(gè)框架安裝了。
cuda持钉, cudnn的安裝
下載cuda
去這里下載ubuntu18.04對應(yīng)的最新的cuda10衡招。作者下載的是deb(local)的版本,這是一個(gè)deb文件每强,裝好之后蚁吝,就可以將整個(gè)cuda10的倉庫放在本地,省去在線下載的麻煩舀射,一定要看清楚,不要下載錯(cuò)了怀伦。
文件名為:
cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
找不到的可以到這里下載我已經(jīng)下載好的
下載cudnn
注冊一個(gè)nvidia的開發(fā)者帳號(hào)脆烟,下載cudnn7.4。地址
有時(shí)候國內(nèi)的用戶訪問這個(gè)網(wǎng)址會(huì)出現(xiàn)問題提示正在維護(hù)房待,具體原因邢羔。。桑孩。請自備梯子或者用我已經(jīng)下載好的拜鹤。
這里下載的是cuda10對應(yīng)的deb版本,不要下載錯(cuò)了流椒。
文件名為
libcudnn7_7.4.1.5-1+cuda10.0_amd64.deb
找不到的可以到這里下載我已經(jīng)下載好的
安裝cuda庫
直接用dpkg安裝這個(gè)文件就好了敏簿。裝好了整個(gè)cuda的倉庫就在本地了。
sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub # 執(zhí)行這一行是為了導(dǎo)入key
sudo aptitude update # 執(zhí)行升級(jí)宣虾,讓cuda庫起作用
這里安裝的其實(shí)是一個(gè)cuda的apt倉庫惯裕,相當(dāng)于把cuda的apt倉庫的本地版本。到這里绣硝,cuda還沒有安裝好蜻势。
安裝nvidia驅(qū)動(dòng)
想用nvidia的顯卡,不裝nvidia的驅(qū)動(dòng)怎么行鹉胖,其實(shí)ubuntu官方的倉庫里面是自己帶nvidia的閉源驅(qū)動(dòng)的握玛,不過我們這里使用的是cuda庫里面自帶的nvidia驅(qū)動(dòng)桦锄。
使用命令行安裝的方式如下:
sudo aptitude install nvidia-driver-410 --without-recommends
不同的編號(hào)支持不同的顯卡,如果是1080ti等比較新的顯卡示姿,直接用編號(hào)最高的應(yīng)該就沒問題蟹但。
比較老舊的顯卡,可以到nvidia的官方網(wǎng)站查詢市殷。
使用--without-recommends可以只安裝需要的東西愕撰,其他推薦安裝的東西可以都不安裝了,省了很多空間醋寝,
安裝完成之后搞挣,需要重啟一下系統(tǒng)。
sudo reboot
很多教程說要去下載sh的驅(qū)動(dòng)文件音羞,進(jìn)行編譯安裝囱桨,這里不太推薦,因?yàn)楹苈闊┒胰菀壮鰡栴}嗅绰,ubuntu對非開源驅(qū)動(dòng)的支持還是比較好的舍肠,直接用cuda庫里面的驅(qū)動(dòng)就可以。
關(guān)于驅(qū)動(dòng)的安裝窘面,有文章提到過cuda里面自己帶的驅(qū)動(dòng)是有問題的翠语,所以需要單獨(dú)裝驅(qū)動(dòng),而不是使用cuda里面自己帶的财边。但是我們這是測試過的發(fā)現(xiàn)肌括,就算裝的不是最新的驅(qū)動(dòng),cuda也會(huì)嘗試給更新到最新酣难,而且看上去沒啥問題谍夭,也許是特定版本的驅(qū)動(dòng)才會(huì)出現(xiàn)的問題。這個(gè)需要具體問題具體分析了憨募。
安裝cuda
直接執(zhí)行下面的命令安裝就可以了:
sudo aptitude install cuda-runtime-10-0 --without-recommends
因?yàn)槲疫@里只是要運(yùn)行這些框架紧索,并不是要編譯什么東西,所以這里裝的是cuda的runtime菜谣,也就是不帶任何工具珠漂,并且也沒裝任何額外的開發(fā)包,所以很快而且占用空間也不多尾膊。如果需要從源代碼編譯一些使用cuda的框架甘磨,那么還是需要老老實(shí)實(shí)裝cuda,命令行如下:
sudo aptitude install cuda
在18.04版本之前眯停,cuda都是單獨(dú)安裝的济舆,安裝到了/usr/local下面,所以需要一些其他的設(shè)置莺债,而現(xiàn)在滋觉,cuda直接安裝到/usr/lib下面去了签夭,就不需要那些單獨(dú)的設(shè)置了。
安裝cudnn
因?yàn)槲覀兿螺d的是deb椎侠,所以直接安裝就好了第租,很簡單,命令行如下:
sudo dpkg -i libcudnn7_7.4.1.5-1+cuda10.0_amd64.deb
安裝tensorflow
tensorflow的安裝碰到了一些小問題我纪,目前tf官方最新版本的1.12只支持cuda9.2的環(huán)境慎宾,并沒提供官方的cuda10支持。所以想要在我們現(xiàn)在已經(jīng)裝好的環(huán)境里面使用tensorflow浅悉,就有下面三種方式了:
- 從源代碼編譯tensorflow趟据,開啟cuda10的支持,順便可以做一下優(yōu)化編譯术健。
- 這個(gè)方案比較但疼的是tf的代碼在google的服務(wù)器上汹碱,國內(nèi)需要梯子才能下載,而且編譯要幾個(gè)小時(shí)荞估,很麻煩咳促,不太推薦。
- 使用nvidia-docker勘伺,這是個(gè)很不錯(cuò)的主意跪腹,而且還能提供環(huán)境隔離等,并且不限host機(jī)的cuda環(huán)境飞醉,因?yàn)橹桓鷇ocker內(nèi)部的cuda的環(huán)境有關(guān)冲茸。
- 這個(gè)方案安裝nvidia-docker已經(jīng)簡單很多了,幾乎是傻瓜式操作冒掌,但是docker的使用還是有些復(fù)雜,而且真心不如在本地直接安裝方便好用蹲盘,值得考慮股毫,但是這里不推薦。有興趣的可以參考我的另一個(gè)blog召衔。
- 使用自帶cuda10支持的非官方編譯tensorflow铃诬,有很多熱心網(wǎng)友提供了自己編譯好的支持cuda10的tensorflow。
- 這種熱心網(wǎng)友不多苍凛,而且人家編譯好的tensorflow未必適合你的機(jī)器趣席,例如compute capability不兼容等問題。而且醇蝴,如果碰上一個(gè)別有用心的網(wǎng)友宣肚,編譯好的tf里面帶一些惡意軟件也不一定。所以慎重考慮這種方式悠栓。
跟TinyMind的小伙伴打了個(gè)招呼霉涨,技術(shù)小哥給提供了一個(gè)編譯版本的Tensorflow按价,到這里下載一個(gè)編譯好的tf1.12。
GPU wheels for TensorFlow 1.12, built by TinyMind, the cloud machine learning platform.
To use the wheels on your own machine, Intel Broadwell or later CPU, and Nvidia computing capability 3.7 or later GPU with CUDA 10.0 and cuDNN 7.4 are required.
We use Compilation flags
-march=native
in our Broadwell CPU machine. Built for Ubuntu 18.04 LTS .This version is optimized for compute capabilities 3.7 (K80, AWS P2/GCP), 6.0 (P100, GCP), 6.1(GTX1050/1060/1080/1080Ti) and 7.0 (V100, AWS P3).
TensorRT is not supported.
注意笙瑟,compute capability是api版本楼镐,跟算力無關(guān),可以到這里查找你的顯卡對應(yīng)的compute capability往枷。
文件名為:
tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl
下載完后框产,重開一個(gè)終端,輸入:
pip3 install tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl
注意:tf官方放在pypi里面的tensorflow-gpu從1.7版本開始就默認(rèn)開啟了avx2的指令集優(yōu)化错洁,如果電腦的cpu型號(hào)比較老秉宿,例如e3 v2系列的cpu,安裝完成之后墓臭,運(yùn)行的時(shí)候會(huì)出現(xiàn)段錯(cuò)誤之類的問題蘸鲸,這種情況只能考慮自己編譯tf或者換cpu了。TinyMind小哥提供的版本是帶著avx2指令集優(yōu)化的窿锉。
安裝mxnet
重開一個(gè)終端酌摇,輸入
sudo aptitude install libgfortran3 # 一個(gè)依賴庫,必須裝一下
pip3 install mxnet-cu100mkl
安裝pyTorch
重開一個(gè)終端嗡载,輸入
pip3 install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp36-cp36m-linux_x86_64.whl
pip3 install torchvision
這個(gè)安裝命令是pyTorch官方給的窑多,官方很貼心的給出了基本所有可能用到的環(huán)境(conda,pip洼滚,windows埂息,linux)下的安裝命令。比tf社區(qū)強(qiáng)多了遥巴。
測試安裝
Tensorflow
mxnet
pyTorch
import torch
x = torch.rand(5, 3)
print(x)
torch.cuda.is_available()
總結(jié)
個(gè)人比較喜歡mxnet千康,他的社區(qū)和學(xué)習(xí)資料都是中文為主的,對國人很友好铲掐。而目前發(fā)展勢頭最猛的pyTorch也是很值得期待的拾弃,特別是1.0發(fā)布之后,有facebook這棵大樹在后面摆霉,整個(gè)生態(tài)也都在完善起來豪椿。另外,雖然有各種蛋疼的問題携栋,但是目前用戶群最廣搭盾,文檔資料最齊全,model-zoo最大的仍然是tensorflow婉支。而且有slim這樣的工業(yè)級(jí)框架加持鸯隅,tf絕對是大多數(shù)場景的不二之選。