Instruction

手把手帶你學 Tensorflow、Pytorch、CUDA、NVIDIA-SMI、cuDNN、Ubuntu、NGC、Docker、NVIDIA-Docker 的安裝與設定

[ 圖文並茂 May the Fourth be with You 版 ]

各家 (twccGCPAzureAWS) 雲端計價
[轉載] 雲端平台怎麼選?比較三大雲端供應商 GCP 與 AWS 與 Azure

  • OS:建議 ubuntu 16.04 LTS (支援至2021年04月)

  • 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 補上執行權限,接著 ./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

  • 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? 選擇不安裝 cuda 自帶的 Driver

(y)es/(n)o/(q)uit: n

Install the CUDA 10.0 Toolkit? 安裝 cuda

(y)es/(n)o/(q)uit: y

Enter Toolkit Location

[ default is /usr/local/cuda-10.0 ]: 使用預設的 cuda 安裝路徑

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

Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...

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 上直接用,得想辦法自己先下載了再上傳這樣 ! 配合前面cuda跟driver,我用的是 cuDNN v7.6.4 (September 27, 2019), for CUDA 10.0

  • 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.yml

檢查:conda info --envs

列出虛擬環境:conda env list

複製虛擬環境conda create -n myEnvNameDes --clone myEnvNameSou

刪除虛擬環境conda env remove --name myEnvName

刪除虛擬環境的module:conda remove --name myEnvName pandas


  • Tensorflow:如果前面裝的沒啥問題,基本最後這兩個是最簡單的

conda install tensorflow==1.15.0

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