Mint下深度學習環境(tensorflow、pytorch)配置(CUDA10.0,cudnn7.5.0,tf1.14.0,pytorch1.2.0)之一——Mint安裝及深度學習框架安裝

前言

前幾天Win10升級失敗後回滾導致了很多不能容忍的bug(無法重命名文件夾、office不能用也不能成功重裝、某些應用程序安裝也提示缺失dll),被迫重裝了Win10。在配環境的過程中十分痛苦,比如lightgbm的gpu版的安裝令人吐血,至今仍未成功(不知道微軟自家的產品爲什麼不能優化一下在Win10上的體驗)。系統崩掉給我的陰影太大了,徹底消除了我對Win10最後一絲留戀,遂決定轉戰linux系統。
前前後後,嘗試了很多。Ubuntu16.04(貌似因爲UtraISO的原因安裝失敗)。Ubuntu18.04(點擊設置就死機、安裝NVIDIA顯卡驅動後循環登錄)。Pop!_OS自帶的驅動有些奇怪,安裝tensorflow十分方便但是安裝pytorch後無法識別顯卡。也下載了elementary OS,安裝界面過於花哨,感覺浪費電,本着奧卡姆剃刀的“如無必要,勿增實體”原則最後也沒有繼續用這個系統。總共大概裝了八九次系統,遇到了各種奇奇怪怪的bug,最後根據https://distrowatch.com/上的排名選擇了mint。(聽說MX Linux是刷的,而Manjaro不是Debian系擔心以後碰到各種各樣的問題找不到解決方法,畢竟Ubuntu纔是深度學習領域所採用的主流linux發行版)
我的需求主要是使用的穩定性(要作爲替代Win10日常使用的系統)和社區的豐富性(解決深度學習訓練模型中遇到的各種各樣的問題)。而Mint沒有Ubuntu詭異的內部錯誤,也應該不會出現Arch滾動更新中滾崩的情況。同時由於Ubuntu的用戶很多,Mint19.2遇到的問題基本可以直接參考Ubuntu18.04,藉助社區的豐富經驗免去了很多折騰的煩惱。我上了高中後就基本沒有用過QQ(大二這一年到頭沒有一個人給我發消息),微信的網頁版就可以湊合着用,沒必要找Deepin的WineQQ。對其他國產軟件的依賴度也很低,基本上不在電腦上聽歌,所以不需要網易雲音樂,uget挺好用的跟迅雷可以媲美,唯一不捨的只有CentBrowser了,後面用插件可以基本實現替代。Deepin和Elementary OS的桌面對我的吸引力也有限,Mint Cinnamon一來可以減少我從Win10上轉移過來的不適應,二來找軟件也比Dock更方便一點。
總的而言,Mint很符合我的需求。我也希望把我的踩坑過程記錄下來,以防哪天Mint也崩了得重裝(笑)。

更新:

這篇寫的過長,一不小心寫了一萬字,特此拆分爲兩部分,第一部分主要講系統安裝和深度學習框架配置,第二部分主要講軟件安裝。
第二部分:https://blog.csdn.net/sherpahu/article/details/100673023

安裝Mint系統

清華鏡像下載鏈接:https://mirrors.tuna.tsinghua.edu.cn/linuxmint-cd/stable/
我選的是最新的linux mint19.2
安裝教程:https://blog.csdn.net/oYueYang1/article/details/79236599
官方建議使用Rufus創建啓動盤,其他的方面跟Ubuntu的安裝類似,上面這裏說的已經很詳細了。
關鍵問題:在U盤啓動選擇安裝時注意按e,然後把quiet splash --刪掉換成nomodeset,進入垃圾畫質界面。由於在安裝系統完成後需要重啓,而此時好像沒法裝NVIDIA顯卡閉源驅動,所以會卡死。沒辦法,誰讓linux是開源系統而NVIDIA不開源自己的驅動呢,而開源的Xorg的驅動總是有問題,所以開機卡死、關機卡死、點擊設置卡死、循環登錄這種令人頭禿的問題一直伴隨Mint或Ubuntu出現。
其餘的大概只需要注意拔網線和選擇不連接WiFi(否則會下載很多沒用的語言包,國內的網絡環境由於你懂得的原因,所以下載很慢很慢),再就是安裝位置選擇something else。第一個共存的選項我沒試過,網絡上這種資料也不太多不知道能否成功,鑑於是安裝雙系統還是慎重一點好。

重啓進入系統

還是像剛纔說的,在啓動時按e把quiet splash --刪掉換成nomodeset。

安裝NVIDIA顯卡驅動

網上關於安裝NVIDIA顯卡驅動有好幾種方式:

  1. 用Mint自帶的顯卡驅動管理器安裝
    推薦用這種方式,這種方式最好,也不會影響裝CUDA。
    首先換源,採用清華的Ubuntu18.04源就可以了(Mint在menu裏面的軟件源管理也可以換成清華的源),https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
    直接ctrl+alt+T打開命令行,輸入sudo nano /etc/apt/sources.list(mint默認沒安裝vim和gedit)。
    再把清華的源粘貼進去。
# 默認註釋了源碼鏡像以提高 apt update 速度,如有需要可自行取消註釋
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 預發佈軟件源,不建議啓用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

然後
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
這樣就可以更新Mint驅動管理器中的NVIDIA驅動(否則只有比較舊的390和特別新的430版,430版我之前一直沒法成功安裝CUDA10.0,輸入nivdia-smi也顯示CUDA10.2還是先更新一下驅動源安裝410最靠譜)。
打開Menu裏的驅動管理器,等待更新cache,安裝410版。
重啓一下,這次不用再加上nomodeset了,可以直接正常啓動。

  1. 更新ppa源後命令行安裝
    下載速度太慢了
  2. 在官網下載驅動後關閉圖形界面安裝
    麻煩得要死,Mint在sudo lightdm stop後出現了很奇怪的現象,圖形界面時隱時現,根本沒法好好輸命令,可能是沒關掉圖形界面,最後會卡死,然後只能強行關機。。。
    完全沒有必要這麼幹

安裝CUDA10.0

這部分大體參考: https://www.linuxidc.com/Linux/2019-06/158951.htm
截止2019/9/5,tensorflow、pytorch對CUDA10.1的支持還不太完善,所以安裝CUDA10.0。
在英偉達的網站上下載Ubuntu18.04對應版本的CUDA10.0。
https://developer.nvidia.com/cuda-toolkit-archive

uget

在此之前,可以安裝uget和aria2,相當於迅雷下載速度更快。
uget:https://sourceforge.net/projects/urlget/files/uget%20%28stable%29/
最新版可能沒有deb的包,可以選較爲舊一點的。最後選bionic的deb版(bionic是Ubuntu18.04的代號)

CUDA的安裝

選擇linux,64位,Ubuntu,18.04,runfile
最後直接用sudo sh cuda_10.0.130_410.48_linux.run安裝
最後選擇不安裝vscode,跟隨cuda一起安裝的vscode下載有點慢,稍後可以在vscode官網上下載。
然後編輯環境變量,添加以下內容,並啓用: source ~/.bashrc

#CUDA Config - ~/.bashrc
export PATH=/usr/local/cuda-10.0/bin:/usr/local/cuda-10.0/NsightCompute-1.0${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

測試:nvcc -V
聽說只用nvcc -V測試是不夠的,還得試一下cuda自帶的sample。
可以參考https://medium.com/repro-repo/install-cuda-10-1-and-cudnn-7-5-0-for-pytorch-on-ubuntu-18-04-lts-9b6124c44cc
(這老哥文章題目叫pytorch其實是在安裝tensorflow,23333)

cudnn7.5.0安裝

https://developer.nvidia.com/rdp/cudnn-download
沒註冊的註冊,註冊了的登錄,下載。
注意點擊Archive list安裝cudnn7.5.0,否則如果安裝了7.6到最後就算安裝了tensorflow也會報錯。直接ctrl+f頁面查找Download cuDNN v7.5.0 (Feb 21, 2019), for CUDA 10.0
兩種安裝方法:

  1. 下載cuDNN Library for Linux
    得到文件:cudnn-10.0-linux-x64-v7.5.0.56.tgz
    tar zxvf cudnn-10.0-linux-x64-v7.5.0.56.tgz
    解壓後得到 名爲 cuda 的文件夾,需要將裏面的幾個文件拷貝到已安裝的cuda文件夾下面,並賦予相應的權限
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64/
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.0/lib64/libcudnn*

此處的文件夾名稱究竟是cuda-10.0還是cuda與上面cuda添加的PATH有關,只要對應了應該都行。

  1. 安裝deb包
    更方便,參考 https://medium.com/repro-repo/install-cuda-10-1-and-cudnn-7-5-0-for-pytorch-on-ubuntu-18-04-lts-9b6124c44cc

Tensorflow安裝

安裝anaconda並換源,參考:https://mirror.tuna.tsinghua.edu.cn/help/anaconda/
給pip換源,參考: https://blog.csdn.net/chenghuikai/article/details/55258957
可能得首先安裝bazel,參考https://www.jianshu.com/p/d92913173d5b。不要把sh文件下載到有中文路徑的文件夾下(如果你在安裝mint時選擇的語言是Chinese,而又沒有換路徑名的話,這個問題稍後解決)https://blog.csdn.net/guyuealian/article/details/84344105
安裝過程中,我一直遇到權限不夠的問題,兩種解決方案

  1. 用戶安裝(可以臨時用用,很麻煩)
    pip install --user tensorflow-gpu
  2. 給conda添加權限(根本解決方法)
    sudo chown -R user /home/user_name/anaconda3
    user_name換成你的用戶名(實質上就是conda的安裝路徑,按照你自己的來改)
    然後conda install tensorflow-gpu
    參考:https://stackoverflow.com/questions/49181799/conda-update-conda-permission-error

以上兩種方法我都試過了,都可以完美解決問題。
tensorflow一般用pip安裝,pytorch一般用conda安裝,不知道爲什麼,23333

Pytorch安裝

按照上面的方法給conda賦予權限。
官網有安裝命令,但是conda的命令得改一改
conda install pytorch torchvision cudatoolkit=10.0
不能有-c pytorch,否則會用pytorch自己的國外源安裝,你懂得原因所以特別慢。

tensorflow&pytorch測試

import tensorflow as tf
tf.__version__
tf.test.is_gpu_available()
import torch
torch.__version__
torch.cuda.is_available()

結果:

'1.14.0'
亂七八糟的帶有GPU的參數
True
'1.2.0'
True

這樣基本上就大功告成了

另外的一些小問題

tensorflow的警告

import tensorflow後可能會報numpy的錯,打開提示中提到的所有的dtypes.py文件,把1改成(1,)就行了。不要聽一些博客瞎說降級numpy,我試了沒用。
解決方法參考:https://blog.csdn.net/BigDream123/article/details/99467316

中文路徑問題

export LANG=en_US
xdg-user-dirs-gtk-update

再輸入
export LANG=zh_CN
參考: https://blog.csdn.net/jeffrey_li/article/details/54947502

Mint自帶的一些優點

系統管理裏面的Timesshift或者紅移(有時叫英文名有時叫中文名,真是奇怪)很不錯,感覺有點像mac的功能。
Dock和麪板的擺放類似與Win10,很方便好用,也不怎麼佔空間。有人說很醜,但我覺得還行。相比於Ubuntu18.04的大額頭來說,這種擺放是很優秀的了(知乎上很多人噴Ubuntu18.04的雙頭欄把15寸的屏幕變成了14寸,233333)。

後記

折騰了好幾天,再應該開始好好幹活了。裝了八九次系統,我是真的佛了,懶得再折騰了。
Mint的自帶界面沒有Pop!_OS或者Elementary OS美觀,在深度學習領域也不想Ubuntu那樣有這麼高的存在感,也沒有Manjaro那麼豐富的軟件資源。
但是,我覺得上述這些系統也都有各自的缺點,Mint起碼能夠保證相對的美觀和一定的通用性,常用的軟件也基本都有(本人不用QQ,微信網頁版的就可以滿足我的需求)。我對系統的穩定性和社區的基本要求就決定了選擇系統時必須考慮系統的短板效應,Mint能夠做到折中就很不錯了。
綜合來看,Mint是在我折騰的幾個系統裏讓我最滿意的,畢竟我的目的是爲了提升工作效率和保證穩定性。
首尾呼應一下,還是應該將奧卡姆剃刀原理貫徹到底,“如無必要,勿增實體”!
貫徹到底

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章