源由
由于需要做分布式的pytorch實(shí)驗(yàn)刑顺,首先需要在本地上進(jìn)行分布式調(diào)試后才便于將pytorch部署到天河二號(hào)中 進(jìn)行實(shí)驗(yàn)础爬,由于最初使用的是Win10系統(tǒng)脖旱,Win10不支持pytorch(0.4)的分布式盼玄,即在python環(huán)境下娩怎,查看下列代碼返回的是False還是True帕识,如果是False泛粹,則說(shuō)明該系統(tǒng)下Pytorch無(wú)法實(shí)現(xiàn)分布式。
import torch
torch._C._has_distributed()
Deepin(15.7)雙系統(tǒng)安裝
1.下載Deepin肮疗,一般可以從官網(wǎng)中獲取最新版本的鏡像資源晶姊,如若想獲取舊版本的Deepin,可以從這個(gè)網(wǎng)站上獲取伪货。
2.利用U盤作為系統(tǒng)安裝的啟動(dòng)盤们衙,可以參考使用Rufus來(lái)制作啟動(dòng)盤钾怔,特別方便。
3.啟動(dòng)盤制作完畢后砍艾,關(guān)機(jī)蒂教,重開(kāi)機(jī),進(jìn)入系統(tǒng)的BIOS設(shè)置界面脆荷,這時(shí)選擇從U盤啟動(dòng)電腦凝垛,就可以順利的進(jìn)入操作系統(tǒng)的安裝界面了,具體的安裝界面引導(dǎo)可以參考官網(wǎng)介紹蜓谋。
Nvidia驅(qū)動(dòng)+Cuda(9.0)+Cudnn
Pytorch是支持GPU的梦皮,并且GPU運(yùn)行深度學(xué)習(xí)能夠極大的提高我們的工作效率和實(shí)驗(yàn)運(yùn)行速度。但使用GPU前桃焕,需要我們安裝相應(yīng)的cuda以及顯卡驅(qū)動(dòng)剑肯。這個(gè)過(guò)程我安裝的時(shí)候踩了挺多的坑,現(xiàn)記錄下來(lái)观堂,僅供參考让网。
Nvidia驅(qū)動(dòng)
1.根據(jù)自己電腦顯卡的型號(hào)下載相對(duì)應(yīng)的顯卡驅(qū)動(dòng)。
2.禁用系統(tǒng)自帶的集顯驅(qū)動(dòng)
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
插入兩條語(yǔ)句
blacklist nouveau
options nouveau modeset=0
3.執(zhí)行下列語(yǔ)句师痕,并根據(jù)系統(tǒng)提示補(bǔ)裝包溃睹,可以通過(guò)apt-get的方式補(bǔ)裝。
sudo update-initramfs -u
4.執(zhí)行成功后胰坟,重新開(kāi)機(jī)因篇,在進(jìn)入Deepin系統(tǒng)的選擇界面后,不要選擇直接進(jìn)入系統(tǒng)笔横,界面上有三個(gè)選項(xiàng)竞滓,第一個(gè)是直接進(jìn)入Deepin,第二是進(jìn)入保護(hù)模式吹缔,第三忘了....商佑。這個(gè)時(shí)候需要摁e鍵,進(jìn)入boot parameter參數(shù)設(shè)置界面厢塘,需要更改boot啟動(dòng)參數(shù)茶没,找到Linux開(kāi)頭的那行,在行末添加3和nomodeset俗冻,例如:
linux XXXXXXXXXXXXXX 3 nomodeset
然后根據(jù)提示保存重新boot的。
5.修改正確后牍颈,boot會(huì)進(jìn)入命令行界面迄薄,輸入用戶名和密碼,
關(guān)閉Xwindow服務(wù)
sudo service lightdm stop
進(jìn)入驅(qū)動(dòng)的下載目錄煮岁,執(zhí)行驅(qū)動(dòng)安裝程序即可讥蔽。安裝完畢后重新開(kāi)啟Xwindow服務(wù)后正常重啟涣易。
sudo service lightdm restart
sudo reboot
6.終端檢查驅(qū)動(dòng)是否安裝成功。
nvidia-smi
Cuda(9.0)
1.根據(jù)自己系統(tǒng)的版本號(hào)下載對(duì)應(yīng)的Cuda
2.進(jìn)入安裝包的目錄冶伞,正常運(yùn)行安裝新症,安裝過(guò)程中如若提醒缺少相應(yīng)的.so文件,可以通過(guò)下面的方法補(bǔ)裝相對(duì)應(yīng)的編譯文件响禽。
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
3.安裝過(guò)程中徒爹,由于deepin系統(tǒng)的gcc是7代以上的,而Cuda9.0需要使用低版本的gcc和g++編譯器芋类,那么則需要我們安裝gcc5.5和g++5.5來(lái)進(jìn)行編譯隆嗅,然后再添加軟連接,更改系統(tǒng)默認(rèn)的g++和gcc版本侯繁。
#下載安裝gcc5.5和g++5.5
sudo apt-get install gcc-5 g++-5
#添加軟連接胖喳,更改系統(tǒng)默認(rèn)使用的gcc和g++編譯器
sudo ln -s /usr/bin/gcc-5.5 /usr/local/bin/gcc
sudo ln -s /usr/bin/g++-5.5 /usr/local/bin/g++
#查看系統(tǒng)g++和gcc版本是否已經(jīng)修改成功
gcc --version
g++ --version
4.重新安裝Cuda即可,一般的問(wèn)題都是出在gcc和g++版本過(guò)高以及缺少相應(yīng)的.so文件導(dǎo)致安裝失敗的贮竟,目前我在安裝Cuda的過(guò)程中就只遇到了這兩個(gè)問(wèn)題丽焊。安裝完成之后,添加環(huán)境變量咕别。
gedit ~/.bashr技健,#cuda export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64/:$LD_LIBRARY_PATH
#插入下面的語(yǔ)句至文件中
export PATH=/usr/local/cuda-9.0/bin:$PATH
#激活環(huán)境變量
source ~/.bashrc
5.驗(yàn)證Cuda安裝成功
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make ./deviceQuery
#顯示Pass即表示安裝成功
Cudnn
1.根據(jù)自己的Cuda版本下載對(duì)應(yīng)的Cudnn,我下載的是CuDnn7.1.4顷级。
2.解壓安裝包并安裝凫乖。
#進(jìn)入安裝包目錄
cd Downloads
tar -zxvf cudnn-9.0-osx-x64-v7.tgz
#返回cuda文件夾的上一級(jí)
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib/libcudnn* /usr/local/cuda/lib64
#激活權(quán)限
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
#同樣的添加環(huán)境變量
sudo vim ~/.bashrc
#cudnn
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
source ~/.bashrc
3.驗(yàn)證CuDNN安裝成功。
nvvc -V
基于Anaconda3安裝Pytorch0.4
1.首先選擇喜歡的版本下載Anaconda3弓颈,我使用的是Anaconda3-4.3.1-Linux-x86_64.sh帽芽。
2.正常安裝即可,安裝過(guò)程中可以讓系統(tǒng)幫忙添加路徑也可以自己手動(dòng)添加路徑翔冀。
sudo vim ~/.bashrc
export PATH="/home/user_name/anaconda3/bin:$PATH"
source ~./bashrc
#查看conda是否已安裝成功
conda list
#可以給anaconda3加一個(gè)清華源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
#查看.condarc文件
sudo vim .condarc
#刪除-defaults
3.創(chuàng)建一個(gè)虛環(huán)境导街,在虛環(huán)境下安裝pytorch
#先查看基環(huán)境的名字,有的是叫root纤子,有的是叫base
conda info --envs
#創(chuàng)建虛環(huán)境搬瑰,并且克隆基礎(chǔ)環(huán)境的所有已安裝的包
conda create -n pytorch --clone root(base)
#創(chuàng)建成功后激活虛環(huán)境
source activate pytorch
#退出虛環(huán)境
source deactivate pytorch
4.在虛環(huán)境下安裝pytorch,詳細(xì)教程可以參考pytorch官網(wǎng)控硼,但是按照conda的方法來(lái)安裝泽论,因?yàn)楸粔Φ木壒剩园惭b下載pytorch很慢卡乾,torchvision速度正常翼悴。建議翻墻后直接使用迅雷或者瀏覽器的下載器,下載相對(duì)應(yīng)的pytorch安裝包幔妨,例如pytorch_9.0_gpu鹦赎。
5.驗(yàn)證安裝成功谍椅。
import torch
a = torch.Tensor(2,4)
print (a.cuda())
如果正常顯示,說(shuō)明pytorch可以正常使用古话,并且cuda也是正常的雏吭。
結(jié)語(yǔ)
哈哈哈,第一次寫博客陪踩,有些不詳細(xì)的地方還請(qǐng)大家諒解杖们,其實(shí)初衷還是因?yàn)樽约涸诎惭b的過(guò)程當(dāng)中踩了好多坑,而且網(wǎng)上其他的博客有些寫得跳躍性太強(qiáng)了一點(diǎn)膊毁,自己邊看邊摸索胀莹,雖說(shuō)Linux技能有增長(zhǎng),但還是耽誤了一點(diǎn)點(diǎn)時(shí)間的婚温,希望這篇博文可以幫你們快速解決環(huán)境配置的問(wèn)題描焰,立馬上手pytorch。后面我還會(huì)記錄自己做分布式pytorch(單機(jī)單卡栅螟,單機(jī)多卡荆秦,多機(jī)多卡)這些的攻略,盡請(qǐng)期待啦~
引用
上述內(nèi)容都是從前人的博客啊力图,官網(wǎng)的內(nèi)容啊總結(jié)而來(lái)的步绸,所以也是大家的功勞。
https://blog.csdn.net/pursuit_zhangyu/article/details/79362128
https://blog.csdn.net/cvrszeng/article/details/78314859
https://blog.csdn.net/flyyufenfei/article/details/79187656
https://www.deepin.org/installation/
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html