新手先看這
之前一直使用CPU做訓(xùn)練,最近手上多了臺(tái)單卡1080Ti顯卡主機(jī),于是開始研究GPU訓(xùn)練。用GPU訓(xùn)練一定會(huì)使用CUDA了,剛開始接觸CUDA非常非常頭痛,對(duì)小白很不友好,我?guī)缀跽苏惶?,中途想放棄過很多次,最后終于弄好了,回頭看看其實(shí)不是很難,但是網(wǎng)上文章又多又雜,確實(shí)讓我來回鼓搗了很久,于是寫下這篇文章,希望對(duì)新入門GPU機(jī)去學(xué)習(xí),想安裝CUDA的朋友們一點(diǎn)幫助,少走彎路,不要像我一樣浪費(fèi)好多時(shí)間。
新手最難理解的就是CUDA和cuDNN是啥了,以及安裝過程,步驟。 這里先簡(jiǎn)單說一下,先檢查機(jī)器/usr/local目錄下有沒有cuda或cuda-xx.xx文件夾,如果沒有,那99.99%說明該機(jī)器沒有安裝CUDA。不要相信nvidia-smi或nvcc --version指令看到的CUDA版本號(hào),那都沒意義。
如果說CUDA是GPU深度學(xué)習(xí)的運(yùn)行庫(kù),那么cuDNN就是訓(xùn)練加速工具,兩者要相互配合使用,所以一般機(jī)器學(xué)習(xí)需要訓(xùn)練引擎(tensorflow-gpu) + CUDA + cuDNN使用。想不安裝cuDNN是不可以的,而且cuDNN版本要和CUDA版本相互搭配。具體搭配方式見下面博文。
檢查是否安裝顯卡驅(qū)動(dòng)
查看是否安裝NVIDIA顯卡
lspci | grep -i nvidia
查看顯卡信息
nvidia-smi
如果出現(xiàn)這個(gè)樣式,說明已經(jīng)安裝顯卡驅(qū)動(dòng)了。通常裝好的Ubuntu中都有顯卡驅(qū)動(dòng)。我是在阿里云上租借GPU云主機(jī)A100時(shí)候遇到了沒有顯卡驅(qū)動(dòng)。如果沒有驅(qū)動(dòng),那么就需要手動(dòng)安裝顯卡驅(qū)動(dòng)了。
先添加源:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
檢查可安裝的驅(qū)動(dòng):
ubuntu-drivers devices
找到最適合的驅(qū)動(dòng)安裝,安裝recommended標(biāo)記的,通常也是數(shù)字版本最大的那個(gè)。
sudo apt install nvidia-driver-XXX
也可以自動(dòng)安裝系統(tǒng)推薦那個(gè)
sudo ubuntu-drivers autoinstall
如果沒有遇到報(bào)錯(cuò),說明安裝成功,此時(shí)調(diào)用nvidia-smi指令可能還是看不到顯卡信息,不要擔(dān)心,重啟系統(tǒng)之后就能看到了。
安裝CUDA
我第一次接觸CUDA的時(shí)候,以為nvidia-smi指令看到的那個(gè)CUDA Version有值就是安裝了CUDA的意思。但是后來才知道這里的CUDA是說此顯卡最大支持的CUDA版本號(hào)。因此我們?nèi)匀恍枰謩?dòng)從官網(wǎng)下載CUDA,且版本號(hào)不能高于這個(gè)。安裝CUDA就不細(xì)說了,除了剛剛提到的細(xì)節(jié)外,幾乎坑不多,這里把有坑的地方簡(jiǎn)單介紹一下。
首先Ubuntu 20.04默認(rèn)g++9版本太高,會(huì)導(dǎo)致CUDA無法安裝,因此要先降低g++版本。
sudo apt-get install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1
sudo update-alternatives --display gcc
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1
sudo update-alternatives --display g++
然后從官網(wǎng)下載對(duì)應(yīng)的CUDA,這里對(duì)新人最不友好的就是什么是“對(duì)應(yīng)的CUDA”???除了我剛剛提到的GPU支持最大CUDA版本外,還需要考慮Tensorflow對(duì)應(yīng)的CUDA版本,從這里可以查到:
https://www.tensorflow.org/install/source_windows
?例如阿里云GPU主機(jī)常用的就是CUDA11 + cuDNN8,那么就要搭配tf-gpu 2.4.0版本使用。如果你不清楚你對(duì)應(yīng)的CUDA是啥,我推薦你使用CUDA10.1 + cuDNN7.6 + tensorflow-gpu 2.2.0這個(gè)組合。
知道要安裝的CUDA版本后,就很簡(jiǎn)單了,去NVIDIA官網(wǎng)直接下載對(duì)應(yīng)版本就好了。
https://developer.nvidia.com/cuda-toolkit-archive
有20.04的就用20.04的,沒有就選最大的,一般是18.04。推薦用runfile安裝,兩句話很簡(jiǎn)單:
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run
sudo sh cuda_11.1.1_455.32.00_linux.run
?第一句話是下載cuda_xxxx_linux.run腳本,第二句是執(zhí)行腳本。在彈出的安裝界面中選“continue”,如果選了會(huì)跳出安裝,就說明安裝失敗,給了失敗日志的路徑,自己查看原因,一般是gcc版本問題,上面提到過降級(jí)方法,不贅述。
在這一步輸入accept
然后選擇安裝項(xiàng),一般情況我們都安裝了顯卡驅(qū)動(dòng),所以這里第一項(xiàng)驅(qū)動(dòng)最好不勾選,其他默認(rèn)安裝。
成功后需要配置一下環(huán)境變量,這步很關(guān)鍵。一開始我忽略了這步,一直以為CUDA安裝好了,但是TF運(yùn)行的時(shí)候怎么都找不到GPU。
sudo vim ~/.bashrc
最后一行增加
$ export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
特別注意文件夾路徑,有時(shí)候文件夾直接是/usr/local/cuda,有時(shí)候是別的版本號(hào),要確保文件夾存在。
source ~/.bashrc
最后更新環(huán)境變量。
檢查一下CUDA是否安裝正確:(注意文件夾路徑一定要存在,需要跟上面設(shè)置環(huán)境變量的路徑保持一致)
cat /usr/local/cuda/version.txt
這里特別注意:
一開始的時(shí)候,我對(duì)CUDA不是很了解,執(zhí)行這句話沒有任何反應(yīng),我以為是該方法失效了。我使用nvidia-smi或nvcc --version指令都看到了CUDA版本號(hào)。但是CUDA環(huán)境沒有配置好,這兩個(gè)也是能拿到版本號(hào)的,所以不準(zhǔn)確。還是應(yīng)該用上面的方法檢查CUDA版本。
安裝cuDNN
cuDNN比CUDA安裝簡(jiǎn)單,下載對(duì)應(yīng)版本壓縮包,拷貝文件到指定目錄,給予權(quán)限就好了。
官網(wǎng)下載地址:(需要注冊(cè))
https://developer.nvidia.com/cudnn
特別注意拷貝的路徑一定是上面指定的環(huán)境變量路徑!
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*
查看cuDNN版本方法:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
注意,這句話可能執(zhí)行了沒效果,那是因?yàn)樾掳姹緭Q位置了,需要用:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
這里再次注意路徑問題。
至此CUDN + cuDNN安裝完成,可以執(zhí)行相關(guān)訓(xùn)練文件查看是否有g(shù)pu信息輸出,或監(jiān)控一下gpu狀態(tài)
watch -n 1 nvidia-smi
如果還是使用的CPU訓(xùn)練,就需要按照上面的步驟檢查到底哪里出了問題。文章來源:http://www.zghlxwxcb.cn/news/detail-434707.html
怎么樣,擼的開心嗎?文章來源地址http://www.zghlxwxcb.cn/news/detail-434707.html
到了這里,關(guān)于Ubuntu 20.04安裝CUDA & CUDNN 手把手帶你擼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!