近期因爲要學習深度學習相關知識,需要搭建深度學習環境。配置環境過程中,遇到了很多坑,如今記錄一下,以備後續參考。
安裝環境:
- ubuntu 16.04 64bit
- 顯卡:NVIDIA 1660ti + 集成顯卡gtx720
- 驅動:nvidia 430.05
- 軟件:cuda_10.0.130_410.48_linux.run + cudnn-10.0-linux-x64-v7.6.3.30.solitairetheme8
首先要了解配置深度學習環境所需要的軟件版本對應關係。
1)cuda與顯卡驅動的版本對應關係:
cuda各版本鏈接:https://developer.nvidia.com/cuda-toolkit-archive
2.內核版本確認
在安裝顯卡驅動之前,首先要查看ubuntu16.04對應的內核版本,可以參考https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html。
從上表可以看出是4.4,由於我的是4.15,需要將它降級到4.4。
a.查看當前安裝的內核版本dpkg -l|grep linux-image
b.查看可以更新的內核版本sudo apt-cache search linux-image
c.安裝新內核sudo apt-get install linux-image-4.4.0-77-generic linux-image-extra-4.4.0-77-generic
d.更新grub引導
sudo update-grub
e.重啓按Esc或Shift+Tab選擇Ubuntu高級選項,進入4.4的內核
f.卸載不要的內核
sudo apt-get purge linux-image-xx-xx-generic linux-image-extra-xx-xx-generic
g.更新grub引導
sudo update-grub
h. 查詢當前gcc版本:
gcc -v
i. 查看glibc版本方法有兩種:
第一種爲:ldd --version;
第二種方法爲:getconf GNU_LIBC_VERSION。
2.顯卡驅動安裝
1 禁用自帶的顯卡驅動nouveau
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
在其中加入:
blacklist nouveau option nouveau modeset=0
然後
sudo update-initramfs -u
重啓系統(一定要重啓)
驗證nouveau是否已禁用
lsmod | grep nouveau
沒有信息顯示,說明nouveau已被禁用,接下來可以安裝nvidia的顯卡驅動。
2.2 加入環境變量
sudo gedit ~/.bashrc
在其中加入:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
執行
source ~/.bashrc
2.3安裝NVIDIA顯卡驅動
在英偉達的官網上查找你自己電腦的顯卡型號然後下載相應的驅動。網址:http://www.nvidia.cn/page/home.html
我下載的版本:NVIDIA-Linux-x86_64-430.05.run(注意不同的版本最後安裝執行的具體選項不同)
下載後的run文件拷貝至home目錄下。
查看自己的顯卡型號:
sudo lshw -numeric -C display
如果之前安裝過nvidia驅動,先卸載:
sudo apt-get remove --purge nvidia-*
Ctrl-Alt+F1 進入命令行界面
cd Downloads
sudo service lightdm stop //這個是關閉圖形界面,不執行會出錯。
sudo /etc/init.d/lightdm stop #關閉當前圖形環境令
sudo chmod a+x NVIDIA-Linux-x86_64-430.05.run #給驅動run文件賦予執行權限
sudo ./NVIDIA-Linux-x86_64-430.05.run --no-x-check--no-nouveau-check --no-opengl-files
# 這句一定要加參數,不然就會循環登錄。
如果進入循環登錄,要再次Ctrl-Alt+F1 進入命令行界面,卸載驅動:
sudo apt-get remove –purge nvidia-*
- –no-opengl-files 只安裝驅動文件,不安裝OpenGL文件。這個參數最重要
- –no-check 安裝驅動時不檢查X服務
- –no-nouveau-check 安裝驅動時不檢查nouveau
後面兩個參數可不加(Ps: 沒懂 - 與 - - 的區別,貌似都可以,我上面寫的是兩個- -哦)。
sudo /etc/init.d/lightdm start #重新啓動圖形環境
sudo service lightdm start
reboot
3. 安裝cuda
去官網下載:https://developer.nvidia.com/cuda-downloads
注意一定要下載runfile。
Ctrl-Alt+F1 進入命令行界面
cd Downloads
sudo service lightdm stop #禁用X服務
sudo /etc/init.d/lightdm stop #一樣的命令
chmod +x ./
cuda_10.0.130_410.48_linux.run #
給文件添加運行權限:
sudo sh cuda_10.0.130_410.48_linux.run --no-opengl-libs
注:第一條問是否安裝nvidia驅動,選擇no,後面一直輸入yes就行
sudo /etc/init.d/lightdm start #啓用服務
reboot
重啓之後進入修改環境配置
sudo gedit ~/.bashrc
加入:
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
執行:
source ~/.bashrc
1)測試安裝是否成功:
cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
顯示gpu信息,說明安裝成功。
查看顯卡情況:nvidia-smi
2)測試是否安裝成功
nvcc -V
4. 配置cuDNN
4.1 官網下載:https://developer.nvidia.com/rdp/cudnn-download
註冊賬號之後,下載對應版本的cudnn
下載完直接解壓,解壓會出現一個cuda文件夾,裏面有兩個文件include 和 lib64,把裏面的文件copy到/usr/local/cuda/裏面相應的目錄裏。 如果你就在local下解壓的就不要移動了。只需要給文件加讀權限即可!
cd Downloads
4.2解壓
tar -xzvf cudnn-10.0-linux-x64-v7.6.3.30.tgz
43.把include/ 和 lib64/目錄下的文件拷貝到cuda的安裝目錄下的include/ 和 lib64裏面
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*
5. 驗證cudnn是否安裝成功
5.1查看cudnn版本
在終端輸入
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
如果出現版本信息,說明安裝成功。
5.2當選擇Debian File進行安裝時會在/usr/src/cudnn_samples_v7有一些cudnn的例子
編譯mnistCUDNN sample進行驗證
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
如果安裝成功將會有如下圖所示的:Test passed!
卸載CUDA以及CUDNN
(1)卸載CUDA
sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
(2)卸載CUDNN
刪除原來的cudnn文件:
sudo rm -rf /usr/local/cuda-10.0/lib64/libcudnn*
sudo rm -rf /usr/local/cuda-10.0/include/cudnn.h
參考文章:
ubuntu16.04 + NVIDIA驅動 + CUDA + cuDNN + tensorflow-gpu + keras安裝https://blog.csdn.net/FYZ530357172/article/details/79207764
ubuntu16.04安裝cuDNN的兩種方式以及驗證
https://blog.csdn.net/dudu815110/article/details/88592558;
Ubuntu 16.04 上 CUDA_10.0及cuDNN的安裝,
https://blog.csdn.net/lihe4151021/article/details/90237681
Ubuntu 16.04 下cuda和cudnn的卸載和升級
https://blog.csdn.net/wanzhen4330/article/details/81704474
Ubuntu16.04 + cuda9.0 + cudnn7.1.4 + tensorflow安裝
https://www.cnblogs.com/xiaojianliu/p/9312098.html