tensorflow前前后后裝過(guò)幾十次略荡,每次裝cuda&cuDNN都很麻煩夏哭,決定整理一下踩過(guò)的坑和安裝流程,記錄可能會(huì)遇到的問(wèn)題在這里備忘服球,過(guò)程會(huì)盡量寫(xiě)得完整詳細(xì)茴恰。
如果無(wú)法解決問(wèn)題,建議查閱結(jié)尾參考資料中的官方文檔鏈接斩熊,畢竟大部分情況下官方文檔才是最完整的往枣。
記錄兩種安裝方法,第一種是使用runfile粉渠,第二種用deb文件安裝分冈。
環(huán)境:
主板——Z370XP SLI
顯卡——2 * 微星紅龍1070ti
ssd——建興(LITEON) 睿速系列 T10 240G
系統(tǒng)環(huán)境——Ubuntu16.04 64位、Windows10 64位專(zhuān)業(yè)版本霸株,雙系統(tǒng)
電源——美商海盜船(USCorsair)額定1000W
當(dāng)時(shí)折騰ubuntu的引導(dǎo)程序也花了不少時(shí)間雕沉,不過(guò)如何分盤(pán)裝雙系統(tǒng)這里還是不具體介紹了,網(wǎng)上一堆教程去件。
前置準(zhǔn)備工作:
首先在官網(wǎng)查閱坡椒,自己的電腦是否支持。
查閱:Pre-installation Actions先確定下面四個(gè)沒(méi)有問(wèn)題尤溜。
Verify You Have a CUDA-Capable GPU]
Verify You Have a Supported Version of Linux
Verify the System Has gcc Installed
Verify the System has the Correct Kernel Headers and Development Packages Installed
開(kāi)始做預(yù)備工作:
安裝cuda的依賴(lài)包倔叼。
這里是cuda-sample的依賴(lài)包,不裝sample可以只裝上面的
1. deb安裝:
1.1 CUDA安裝
這種方法比較簡(jiǎn)單宫莱,推薦這種方法丈攒。
下載cuda9.0(https://developer.nvidia.com/nvidia-developer-zone)
下好以后在終端輸入(版本格式參考官方文檔)
sudo apt-get autoremove --purge nvidia-*
或者
sudo apt-get purge nvidia* 或者 sh ./nvidia.run --uninstall
來(lái)卸載原有驅(qū)動(dòng)。(可以用nvcc -V 查看是否成功卸載梢睛。)
卸載完后開(kāi)始安裝:
1. sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
2. sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub #添加key
3. sudo apt update
4. sudo apt -y install cuda
- 添加環(huán)境變量
配置環(huán)境變量肥印,運(yùn)行如下命令打開(kāi)profile文件
在profile結(jié)尾加入:
export CUDA_HOME=/usr/local/cuda-9.0
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后source /etc/profile
立即生效。
在終端輸入 : nvcc -V
看到相應(yīng)的nvcc編譯器信息绝葡,那么CUDA配置成功深碱。
那么重新啟動(dòng):sudo reboot
5*. 注意:重啟以后可能會(huì)有 循環(huán)登陸 的問(wèn)題,我之前就卡在這邊挺久藏畅,碰到這種情況最簡(jiǎn)單的方法當(dāng)然是使用第二種方法runfile文件安裝敷硅,然后安裝的時(shí)候選擇不安裝OpenGL。
但是實(shí)際上還有一種方法可以解決愉阎,這種情況發(fā)生很可能是主板的安全啟動(dòng)secure boot引起的绞蹦,先把它關(guān)掉(http://www.icharm.me/%E6%8A%80%E5%98%89gigabyte-b350m-gaming-3-%E5%85%B3%E9%97%AD-secure-boot.html),如果沒(méi)有解決那么應(yīng)該是顯卡的問(wèn)題榜旦。WIN10的電腦如果存在獨(dú)顯幽七,那么cpu的核顯驅(qū)動(dòng)是不會(huì)下載的,我們需要兩塊顯卡就得手動(dòng)設(shè)置溅呢,設(shè)置以后WIN10就能識(shí)別核顯并且能安裝驅(qū)動(dòng)了澡屡,此時(shí)ubuntu也一樣猿挚,我們需要下載ubuntu對(duì)應(yīng)的cpu的核顯,很多七代八代的cpu核顯ubuntu16.04并不支持驶鹉,那么我需要對(duì)linux內(nèi)核降級(jí)比較麻煩绩蜻,比較好的方法是用官網(wǎng)提供的自動(dòng)安裝腳本來(lái)安裝驅(qū)動(dòng)程序包,ubuntu 16.04 lts的解決方法在此網(wǎng)址:(https://software.intel.com/en-us/forums/opencl/topic/738108)
- 性能測(cè)試:
其實(shí)主要是看看cuda是否正確安裝室埋,
# 切換到cuda-samples所在目錄
cd /usr/local/cuda/samples
# 沒(méi)有make办绝,先安裝命令 sudo apt-get install cmake,-j是最大限度的使用cpu編譯姚淆,加快編譯的速度
sudo make –j8
# 編譯完畢孕蝉,切換release目錄(/usr/local/cuda/samples/bin/x86_64/linux/release完整目錄)
cd ./bin/x86_64/linux/release
# 檢驗(yàn)是否成功,運(yùn)行實(shí)例
./deviceQuery
# 最后能看到Result = PASS就算成功了肉盹。
1.2 cuDNN 安裝
cuDNN是GPU加速計(jì)算深層神經(jīng)網(wǎng)絡(luò)的庫(kù)昔驱。首先去官網(wǎng)(https://developer.nvidia.com/rdp/cudnn-download)下載cuDNN,需要注冊(cè)一個(gè)賬號(hào)才能下載上忍,以前需要幾天的審核時(shí)間,現(xiàn)在基本是秒批纳本。
選擇對(duì)應(yīng)版本下載窍蓝。
安裝cudnn比較簡(jiǎn)單,簡(jiǎn)單地說(shuō)繁成,就是復(fù)制幾個(gè)文件:庫(kù)文件和頭文件吓笙。將cudnn的頭文件復(fù)制到cuda安裝路徑的include路徑下,將cudnn的庫(kù)文件復(fù)制到cuda安裝路徑的lib64路徑下巾腕。具體操作如下:
#解壓文件
cp cudnn-9.0-linux-x64-v7.solitairetheme8 cudnn-9.0-linux-x64-v7.tgz
tar -xvf cudnn-9.0-linux-x64-v7.tgz
#切換到剛剛解壓出來(lái)的文件夾路徑
cd cuda
#復(fù)制include里的頭文件(記得轉(zhuǎn)到include文件里執(zhí)行下面命令)
sudo cp include/cudnn.h /usr/local/cuda/include/
#復(fù)制lib64下的lib文件到cuda安裝路徑下的lib64(記得轉(zhuǎn)到lib64文件里執(zhí)行下面命令)
sudo cp lib64/* /usr/local/cuda/lib64/
#設(shè)置權(quán)限
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
#======更新軟連接======
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7 #刪除原有動(dòng)態(tài)文件面睛,版本號(hào)注意變化,可在cudnn的lib64文件夾中查看
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7 #生成軟銜接(注意這里要和自己下載的cudnn版本對(duì)應(yīng)尊搬,可以在/usr/local/cuda/lib64下查看自己libcudnn的版本)
sudo ln -s libcudnn.so.7 libcudnn.so #生成軟鏈接
sudo ldconfig -v #立刻生效
終端輸入:nvcc -V
查看是否正常
2. runfile安裝
2.1 runfile安裝的前置準(zhǔn)備工作
首先去官網(wǎng)(http://www.nvidia.cn/Download/index.aspx?lang=cn)查找適配自己電腦GPU的驅(qū)動(dòng)叁鉴,我的電腦驅(qū)動(dòng)版本如下:
2.2 CUDA的安裝
(1)卸載原有驅(qū)動(dòng) sudo apt-get autoremove --purge nvidia-*
或者
sudo apt-get purge nvidia* 或者 sh ./nvidia.run --uninstall
(2)禁用nouveau驅(qū)動(dòng)
編輯文件blacklist.conf
sudo gedit /etc/modprobe.d/blacklist.conf
在文件最后部分插入以下兩行內(nèi)容
blacklist nouveau
options nouveau modeset=0
更新系統(tǒng)sudo update-initramfs -u
重啟系統(tǒng)sudo reboot
終端中運(yùn)行: lsmod | grep nouveau
確定已經(jīng)禁用了 nouveau,輸入以后沒(méi)反應(yīng)即成功
(3)安裝驅(qū)動(dòng):
sudo add-apt-repository ppa:graphics-drivers/ppa
//添加驅(qū)動(dòng)源
sudo apt update
sudo apt-get install nvidia-390
sudo apt-get install mesa-common-dev
//本句及下一句命令有的電腦需要佛寿,有的電腦不需要幌墓,根據(jù)實(shí)際情況輸入命令
sudo apt-get install freeglut3-dev
執(zhí)行完上述命令后若無(wú)問(wèn)題,重啟冀泻,若有問(wèn)題常侣,轉(zhuǎn)到第二種方法。
sudo reboot
重啟后輸入:
sudo nvidia-smi
如果顯示GPU列表弹渔,則證明驅(qū)動(dòng)安裝成功了胳施,另外也可以通過(guò)如下命令:
nvidia-settings
查看GPU信息,顯示界面如下:
出現(xiàn)這個(gè)是正常的
(4)下載cuda9.0 (https://developer.nvidia.com/nvidia-developer-zone)
(5)Ctrl + Alt + F1(或init 3等于直接執(zhí)行(5)和(6))
(6)輸入了sudo service lightdm stop
(7)sudo sh cuda_9.0.176_384.81_linux.run
(8)單擊回車(chē)或者 q肢专,輸入accept,一路選yes往下運(yùn)行舞肆,直到提示“是否為NVIDIA安裝驅(qū)動(dòng)nvidia-384您没?”,選擇否胆绊,因?yàn)橐呀?jīng)安裝好驅(qū)動(dòng)程序了氨鹏,其他的全都是默認(rèn),(如果是安裝tensorflow的話(huà)压状,cuda sample 可以不裝仆抵,一是裝了也經(jīng)常會(huì)有問(wèn)題,二是我們只通過(guò)tensorflow來(lái)調(diào)用CUDA,不直接寫(xiě)CUDA代碼种冬,也不是必須要安裝)不過(guò)要記住安裝位置镣丑,默認(rèn)是安裝在/usr/local/cuda文件夾下。
(8*)如果之前沒(méi)有手動(dòng)安裝驅(qū)動(dòng)娱两,而下載的cuda版本里自帶的驅(qū)動(dòng)剛好支持現(xiàn)在的顯卡
那么可以輸入:(如果是為了避免循環(huán)登陸莺匠,記得選擇不安裝opengl)
sudo sh cuda_9.0.176_384.81_linux.run -no-x-check -no-nouveau-check -no-opengl-files
Accept以后全部點(diǎn)了yes 和 enter
(9)輸入sudo service lightdm start
(10)添加環(huán)境變量
配置環(huán)境變量,運(yùn)行如下命令打開(kāi)profile文件
在profile結(jié)尾加入:
export CUDA_HOME=/usr/local/cuda-9.0
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后source/etc/profile
立即生效十兢。
注意:
如果環(huán)境變量寫(xiě)錯(cuò)導(dǎo)致 gedit命令失效趣竣,那么先臨時(shí)設(shè)置環(huán)境變量
export PATH="$PATH:/usr/bin"
現(xiàn)在這些命令就可以臨時(shí)使用了,打開(kāi)再修改就行旱物。
碰到Would you like to register the kernel module sources with DKMS?This will allow DKMS to auomatically build a new module,if you install a different kernel later
回答No遥缕。
(11)安裝完成以后
輸入: nvcc -V
會(huì)得到nvcc-V相應(yīng)信息,那么CUDA配置成功了。
2.3 安裝cuDNN
同第一種方法
3.anaconda 的常用命令以及tensorflow的安裝
3.1 anaconda 的常用命令
conda list (所有安裝的庫(kù)列表)
conda install package_name (庫(kù))安裝
conda clean清理
conda update package_name(更新)
conda remove package_name(庫(kù)) 刪除
conda search package_name(庫(kù))搜索
conda list -n env_name #指定查看某環(huán)境下安裝的庫(kù)
conda info -e 查看當(dāng)前系統(tǒng)下的環(huán)境
創(chuàng)建新的環(huán)境:
指定python版本為2.7宵呛,注意至少需要指定python版本或者要安裝的包
conda create -n env_name python=2.7
同時(shí)安裝必要的包:conda create -n env_name numpy matplotlib python=2.7
環(huán)境切換:
切換到新環(huán)境
linux下需要使用:source activate env_name
win下: activate env_name
退出環(huán)境:
win下(也可以使用’activate root’ 切回root環(huán)境)
deactivate env_name
linux下:
source deactivate
移除環(huán)境
conda remove -n env_name --all
安裝庫(kù)
anaconda search -t conda (庫(kù)例如:tensorflow) 搜索可用版本,搜到的名字
anaconda show (搜到的名字) 會(huì)顯示這個(gè)庫(kù)需要用什么指令下載
輸入安裝指令即可
更常用的方法是:直接pip install (庫(kù)名)
當(dāng)想要安裝的庫(kù)安裝不了或者下載沒(méi)速度的時(shí)候单匣,連到這個(gè)網(wǎng)址,(http://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost)直接ctrl+f搜想要的庫(kù)宝穗。
cp27代表python2.7以此類(lèi)推户秤,找到對(duì)應(yīng)版本的庫(kù)(和自己python版本以及win32/amd64版本一樣的庫(kù)下載)
下載下來(lái)是一個(gè)whl文件,找到該文件的路徑逮矛,然后pip install (該文件的文件名.whl)
3.2 安裝tensorflow
為了提升速度鸡号,建議使用清華大學(xué)開(kāi)源鏡像。復(fù)制生成的連接直接在終端輸入即可完成安裝橱鹏。
另外膜蠢,tensorflow中的依賴(lài)庫(kù)例如numpy跟anaconda root下的庫(kù)可能版本不一致,這樣會(huì)出現(xiàn)tensorflow報(bào)錯(cuò)的情況莉兰。需要?jiǎng)h掉anaconda中的numpy庫(kù)挑围,替換為tensorflow中自帶的,可是使用舊版本的numpy在其他代碼又會(huì)出現(xiàn)問(wèn)題糖荒。
所以推薦使用 anaconda或者virtualenv來(lái)隔離環(huán)境杉辙。
隔離環(huán)境可以參考另外兩篇博客,關(guān)于廖雪峰的python教程(http://www.reibang.com/p/3d6c0241503a)和anaconda 常用命令捶朵。(http://www.reibang.com/p/cf14d7b51fe7)
為了保持連貫蜘矢,anaconda常用命令已經(jīng)貼在3.1部分狂男。
怕麻煩的改配置,以后就都是從清華源安裝庫(kù)了
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
4. References:
[1]https://developer.nvidia.com/cudnn
[2]http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu-installation
[3]https://tensorflow.google.cn/install/install_linux#InstallingAnaconda
[4]https://www.cnblogs.com/iloveblog/p/7683349.html
[5]http://www.icharm.me/%E6%8A%80%E5%98%89gigabyte-b350m-gaming-3-%E5%85%B3%E9%97%AD-secure-boot.html
[6]https://stackoverflow.com/questions/12883128/installing-cuda-5-0-rc-samples
[7]https://software.intel.com/en-us/forums/opencl/topic/738108
[8]https://software.intel.com/en-us/forums/opencl/topic/738108
[9]Keras2.0官方中文教程