Linux系統搭建GPU加速的PyTorch環境

當前訓練CNN最受歡迎的兩個框架是TensorFlow和 pyTorch,搭建相應的環境其實不難,博主早先在筆記本的Ubuntu上很快就搭建了pyTorch環境及手寫了ResNet 的Demo。但是最近臺式機配上比較不錯的顯卡後,再次搭建帶CUDA的 pyTorch開發環境時,遇到一些問題,故簡略記錄於此。

博主一直使用的是Ubuntu+Windows雙系統,此次一併將雙系統(Win10+Ubuntu18.04)安裝方式總結啦。

 

雙系統安裝

這裏主要總結先安裝Win10,再安裝Ubuntu18.04的方法。

第一步:安裝Win10。

這一步很多人可以直接跳過,畢竟平時使用的就是Win10。而Windows的安裝方法當前也越來越簡單,將安裝包刻錄到U盤裏(使用UltraISO),然後在BIOS或UEFI啓動順序設置中將U盤設置爲優先啓動後,根據提示指引安裝即可,此處不贅述。

在既有的Win10上,需要做一件事情,以便後續安裝Ubuntu:進入“磁盤管理”後,將硬盤壓縮出50G左右,作爲“未使用”的空白盤。注意:1、如果有雙硬盤(固態+機械),則可選擇將固態硬盤壓縮出一些空間,作爲Ubuntu的boot空間(開機會快一點)。2、考慮到要處理大量圖像數據,最好將硬盤留大一點,比如我預留了500G空間未使用。

第二步:準備安裝Ubuntu18.04。

基本和安裝Win10類似,從官網獲取Ubuntu18.04後,將安裝包刻錄到U盤裏(使用UltraISO,具體操作請自行百度,有很多製作系統安裝盤的教程),然後在BIOS或UEFI啓動順序設置中將U盤設置爲優先啓動後,選擇“Install Ubuntu”後,進入安裝指引。其中有一步會提示“是否與Win10共存”,這一步很關鍵,如果沒有出現這個提示,之前的步驟會是有問題的。當然,此處我們選擇“Other/其他”,以便進行自定義安裝。

第三步:Ubuntu安裝分區設置。

根據安裝引導提示,將會進入分區設置界面。分區其實不難,關鍵是把握4個分區:主分區/,交換分區swap,引導分區boot,和用戶分區home。選擇之前預留的空白空間後,進行如下操作。

創建主分區/。主分區相當於系統盤,建議分配10G左右空間。選擇主分區、Ext4、和掛載點/。

創建交換分區swap。交換分區將被當成內存使用,建議設置爲物理內存同樣大小。選擇邏輯分區、交換空間。

創建引導分區boot。引導分區是用來開機引導的,建議500M左右,另外可創建在固態硬盤裏。選擇邏輯分區、Ext4、和掛載點/boot。

創建用戶分區home。這裏是平時工作的地方,主要是存儲數據。選擇邏輯分區、Ext4、和掛載點/home。

之後根據提示完成安裝即可。

 

Ubuntu系統安裝顯卡驅動

安裝好Ubuntu後,發現分辨率比較低,而且操作比較卡頓,直覺告訴我是顯卡驅動的問題。博主顯卡是RTX 2080Ti,於是立刻到NVIDIA官網(https://www.geforce.com/drivers)下載了個相應的顯卡驅動:NVIDIA-Linux-x86_64-418.56.run(請根據自己的顯卡和當前驅動更新發布情況選擇適當的驅動版本)。

安裝前需要禁用系統默認的顯卡驅動,如下操作。

打開系統黑名單:

sudo gedit /etc/modprobe.d/blacklist.conf

在文件末尾加入這幾行:

# for nvidia display device install
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

保存,然後更新initramfs:

sudo update-initramfs -u

重啓電腦後,輸入命令查看是否禁用成功:

lsmod | grep nouveau

無輸出則說明禁用成功。

接下來進行驅動安裝。首先需要將安裝文件的權限提升到最高:

sudo chmod 777 NVIDIA-Linux-x86_64-418.56.run

然後運行安裝程序:

sudo ./NVIDIA-Linux-x86_64-418.56.run

如果安裝過程中遇到錯誤如未找到gcc或make,那麼安裝好這些必要的程序後再重新運行安裝顯卡驅動。

顯卡驅動安裝好後,重新啓動電腦,發現分辨率正常了,找到“設置”→“詳細”,發現顯示了RTX 2080Ti。說明顯卡驅動安裝成功。

檢測顯卡的另一個方法,運行命令:nvidia-smi。

 

安裝Anaconda

目前pyTorch搭建IDE比較推薦Anaconda。至官網下載Linux64位版本的Anaconda安裝包(博主下載的是Anaconda3-5.2.0-Linux-x86_64.sh)。將該文件權限提升到最高:

sudo chmod 777 Anaconda3-5.2.0-Linux-x86_64.sh

然後sudo運行安裝即可。

安裝成功後,在Terminal中輸入jupyter notebook,即可在瀏覽器中打開notebook操作界面。

注意:若官網下載Anaconda太慢的話,可以從清華鏡像平臺上下載:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

 

安裝pyTorch和相應CUDA

這部分可以參考官網的指導“get-started”:https://pytorch.org/get-started/locally/

理論上這一步可以直接運行官網推薦的命令進行安裝的(以CUDA9.0爲例):

conda install pytorch torchvision cudatoolkit=9.0 -c pytorch

安裝成功後,可以在notebook中使用一下代碼進行測試:

from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)

應該輸出類似於以下的結果:

tensor([[0.3380, 0.3845, 0.3217],
        [0.8337, 0.9050, 0.2650],
        [0.2979, 0.7141, 0.9069],
        [0.1449, 0.1132, 0.1375],
        [0.4675, 0.3947, 0.1426]])

另外,測試cuda:

import torch
torch.cuda.is_available()

如果輸出True,就說明安裝一切安裝成功了。

但是如果安裝失敗,可以嘗試手動安裝這些組件:CUDA、cuDNN、pyTorch。

CUDA安裝包下載地址:https://developer.nvidia.com/cuda-downloads

cuDNN安裝包下載地址:https://developer.nvidia.com/rdp/cudnn-download

pyTorch建議命令安裝:conda install pytorch

主要CUDA與cuDNN需要安裝互相兼容的版本,官網上可找到其兼容性的相關說明。CUDA下載的最後一步選擇“runfile(local)”

博主在手動安裝CUDA時搗鼓了很久,本來想裝CUDA10.1,但是進入安裝界面後,如果選擇“不安裝驅動”(顯卡驅動之前已經安裝過了啊),就會報錯“需要在安裝驅動基礎上進行後續安裝”;而如果選擇“安裝驅動”,就會出現“假的安裝成功”。之後卸載當前的顯卡驅動後,再進行安裝,會出現“近似的安裝成功”(/usr/local目錄下出現了cuda10.1的目錄,但是其實似乎沒完全安裝)。但是重啓後,發現驅動還是沒有,於是又重新裝了一次顯卡驅動。另外,據說還可能出現gcc版本和CUDA不兼容,可能需要將gcc降級處理(兼容信息同樣可以在官網CUDA兼容說明中找到,如:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html)。

手動安裝容易出各種問題,還是建議儘量使用命令:conda install pytorch torchvision cudatoolkit=9.0 -c pytorch,直接搞定。

另外,有篇博客也對此進行了總結,可以參考:Ubuntu18.04下安裝深度學習框架Pytorch(GPU加速)

其他參考內容:

在Ubuntu 18.04系統中安裝RTX 2080Ti顯卡驅動的方法

ubuntu安裝cuda

至此,安裝結束。現在啓用cuda跑一跑你的CNN訓練,不出意外的話,訓練速度瞬間將得到顯著的提升。繼續努力吧!

 

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