[ 純文字版 ]
首先,這網誌荒廢了一陣子,但翻了一下,關於深度學習好像也是積累了幾篇,有興趣的可以看一下,但我想年代有點久遠,可能會不太適合現在的安裝了;網路很多教學文,所以這次就不說幹話,手把手教你自己打造安全的深度學習開發測試環境;希望能幫助大家踩越少坑越好 ! 選在 May the Fourth be with You 這天也不錯 !
從最開始心血來潮自己亂摸索,順手買了 960,直到狠下心的工欲善其事必先利其器
由於網路上真的太多教學了,但大家很容易沒仔細瞭解互相的相依性,一股腦的就裝,常常也看到很多人說裝不起來;所以首先來好好關注一下你需要注意以下這些東西,然後你全部看完後再決定到底要怎樣搭配各個版本:OS, GPU, CUDA, cuDNN, Docker / NGC / nVIDIA Docker, Python / Anaconda, Tensorflow, Pytorch
- OS:建議 ubuntu 16.04 LTS (支援至2021年04月),我個人之前機器都是14.04 LTS(支援至 2019年04月),後來都是用 docker,就沒再去做升級這樣;這次為了寫這篇則是裝了 16.04 LTS 這樣
- GPU 規格及型號 (驅動程式):有2個網址需要注意;很多時候因為驅動版本就會跟下方的cuda還有cudnn再互相衝到,需要特別注意 ! 以我自己為例,是使用 440.82
首先是 https://en.wikipedia.org/wiki/CUDA#GPUs_supported 這個 wiki,裡面清楚寫了各種 GPU 的Micro-architecture,基本上建議如果真的要跑深度學習,請務必以 Pascal 為基本款出發 ! 記得在安裝前一定要先 sudo service lightdm stop 關閉服務。
接著安裝相依套件:sudo apt install dkms build-essential linux-headers-generic
然後在本機端前面按 ctrl + alt + F1,切換到 tty 1 記議直接在本機端前做安裝驅動這件事;不然這裡會碰上一些奇怪的錯誤。
接著看是不是用 apt-get 安裝,如果是就通通移除:sudo apt-get remove --purge nvidia*
如果是用 dpkg 安裝驅動程式:先 dpkg -l 'nvidia*' 然後再 dpkg --remove nvidia-(Name)
確認了 GPU 型號後,就到這個網址挑選驅動程式下載吧,強烈建議看完全部想清楚再來挑選版本:https://www.nvidia.com.tw/Download/index.aspx?lang=tw
比如說我現在正要裝的是這個就這樣下載:wget http://tw.download.nvidia.com/XFree86/Linux-x86_64/440.82/NVIDIA-Linux-x86_64-440.82.run
下載好後記得 chmod a+x 補上執行權限,然後一定要 sudo service lightdm stop 接著
./NVIDIA-Linux-x86_64-440.82.run -no-x-check -no-nouveau-check -no-opengl-files -no-x-check
一般來說應該都正常,但如果碰上問題,可以試試這兩篇文章,有提到一些動作:
https://blog.csdn.net/ksws0292756/article/details/79160742
https://zhuanlan.zhihu.com/p/31575356
所以最後還是附上 PCHOME 購買網址勸敗:https://24h.pchome.com.tw/prod/DRADD4-A9009QS3O 還有放上我目前手上的 GPU 假裝是炫耀文 xD - CUDA:這個就非常重要了,因為跟上下兩個提到的都會互相依存,比如說 CUDA 10 就需要TensorFlow >= 1.13.0,然後驅動版本是自帶410.48 這樣就會把你第二步的440.82給蓋掉,這些都可以透過這個網站 https://developer.nvidia.com/cuda-toolkit-archive 來找到;另外附上網址與截圖,希望可以注意到裡面 cuda 版本跟驅動程式版本也是會有影響的,當下載好了以後,都是直接執行然後安裝的,要注意的是,一定要注意好 cuda 版本跟對應的驅動版本。
wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
sh cuda_10.0.130_410.48_linux
/Developer/NVIDIA/CUDA-#.#
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n
Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]:
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: n
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-10.0
Samples: Not Selected - cuDNN:這個也是會跟上方有互相搭配,全名是 NVIDIA CUDA® Deep Neural Network library,請先到後面網址註冊個帳號,https://developer.nvidia.com/rdp/form/cudnn-download-survey;後面 nVIDIA GPU Cloud 也會需要用到 ... 當然這個也需要注意一下跟 cuda 版本的搭配;下載好了之後,就是把相關的檔案復制到 cuda 資料夾的對應目錄裡;這邊比較麻煩的就是沒辦法直接 wget 在 ubuntu 上直接用,得想辦法自己先下載了再上傳這樣 !
- Docker / nVidia GPU Cloud / nVIDIA Docker:接著是要安裝 docker,這兩個指令就可以搞定
sudo apt-get install curl
curl -sSL https://get.docker.com | sudo sh
接著是要安裝 nvidia-docker2 (https://github.com/NVIDIA/nvidia-docker)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
apt-get update
apt-get install nvidia-docker2
安裝 nvidia-container-runtime:https://github.com/nvidia/nvidia-container-runtime#docker-engine-setup
apt-get install nvidia-container-runtime
service docker restart - python / anaconda:
這個就是需要到anaconda官網下載 https://www.anaconda.com/distribution/
wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh
sh Anaconda3-2020.02-Linux-x86_64.sh
如果做好一台的環境後可以這樣做,來匯入匯出避免反覆設定相關套件
conda env export --name yourenv --file yourenv.yml
conda env create -f yourenv.ymlconda info --envs - Tensorflow:
conda install tensorflow==1.15.0 - Pytorch:
這個就應該是最簡單的了,直接看網頁上就能裝
https://pytorch.org/get-started/locally/
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
至於驗證版本等則是用這樣的指令 !
python -c "import torch; print(torch.__version__)"
1.3.0
python3 -c "import torch; print(torch.version.cuda)"
10.1.243
python3 -c "import torch; print(torch.backends.cudnn.version())"
7603
python -c "import torch; print(torch.cuda.is_available())"
True