(黃獻德) Hsien-De Huang | E-Mail:TonTon (at) TWMAN.ORG | TonTon (痛痛)
Deep Learning (深度學習) | Malware Analysis (惡意程式分析)
Type-2 Fuzzy Logic (第二型模糊邏輯) | Ontology Application (知識本體應用)
Leopard Mobile (台灣雪豹科技)

ONE PIECE (海賊王)

ONE PIECE (海賊王)

2020年5月4日

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

[ 純文字版 ]

首先,這網誌荒廢了一陣子,但翻了一下,關於深度學習好像也是積累了幾篇,有興趣的可以看一下,但我想年代有點久遠,可能會不太適合現在的安裝了;網路很多教學文,所以這次就不說幹話,手把手教你自己打造安全的深度學習開發測試環境;希望能幫助大家踩越少坑越好 ! 選在 May the Fourth be with You 這天也不錯 !

從最開始心血來潮自己亂摸索,順手買了 960,直到狠下心的工欲善其事必先利其器
由於網路上真的太多教學了,但大家很容易沒仔細瞭解互相的相依性,一股腦的就裝,常常也看到很多人說裝不起來;所以首先來好好關注一下你需要注意以下這些東西,然後你全部看完後再決定到底要怎樣搭配各個版本:OS, GPU, CUDA, cuDNN, Docker / NGC / nVIDIA Docker, Python / Anaconda, Tensorflow, Pytorch
  1. OS:建議 ubuntu 16.04 LTS (支援至2021年04月),我個人之前機器都是14.04 LTS(支援至 2019年04月),後來都是用 docker,就沒再去做升級這樣;這次為了寫這篇則是裝了 16.04 LTS 這樣
  2. 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

  3. 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


  4. cuDNN:這個也是會跟上方有互相搭配,全名是 NVIDIA CUDA® Deep Neural Network library,請先到後面網址註冊個帳號,https://developer.nvidia.com/rdp/form/cudnn-download-survey;後面 nVIDIA GPU Cloud 也會需要用到 ... 當然這個也需要注意一下跟 cuda 版本的搭配;下載好了之後,就是把相關的檔案復制到 cuda 資料夾的對應目錄裡;這邊比較麻煩的就是沒辦法直接 wget 在 ubuntu 上直接用,得想辦法自己先下載了再上傳這樣 !


  5. 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
  6. 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
  7. Tensorflow

    conda install tensorflow==1.15.0

  8. 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
    python -c "import torch; print(torch.cuda.is_available())"
    True