2017年12月29日 星期五

CUDA9降版本至CUDA8 (ubuntu)


CUDA9已經發佈,但很遺憾目前的tensorflow並不支援,要到下一個版本才有支援。

不小心裝到CUDA9怎麼辦呢?

先下載好CUDA8的deb檔案

使用alt + ctrl + F1 進入命令列,輸入下列指令。(不確定是否必要)

$ sudo service lightdm stop

移除CUDA

$ sudo apt-get autoremove --purge cuda

安裝新版本

$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
$ sudo apt-get update
$ sudo apt-get install cuda-8.0
$ sudo reboot

重開機之後要把用先前版本的的相關程式重新安裝

ex:NCCL、Caffe、CuDNN


2017年4月22日 星期六

ubuntu建置Caffe與Digits

Nvidia CUDA

Nvidia CUDA網站:https://developer.nvidia.com/cuda-downloads
Nvidia cuDNN網站:https://developer.nvidia.com/cudnn
下載CUDA對應的.deb檔以及cuDNN

使用alt + ctrl + F1 進入命令列,輸入下列指令。
如果沒有輸入下列指令重開機會卡在登入處。
$ sudo service lightdm stop

安裝CUDA

$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
$ sudo apt update
$ sudo apt install cuda
$ sudo reboot

測試CUDA

進入/usr/local/cuda/samples
$ sudo make all -j4 
-j4意味用四線程跑

進入samples/bin/x86_64/linux/release
$ ./deviceQuery
檢查是否有錯誤並修正

安裝cuDNN

$ tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


設定CUDA環境變數

查詢Nvidia顯示卡驅動程式版本
$ Nvidia-smi

在.bashrc 設定內容(.bashrc在home/username下)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/lib/nvidia-375
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:/usr/local/cuda/bin
重新設置環境變數
$ source ~/.bashrc 

Caffe

官方網站:https://caffe.berkeleyvision.org/
官方版本:https://github.com/BVLC/caffe
Nvidia版本:https://github.com/NVIDIA/caffe
為了使用DIGITS使用Nvidia版本

安裝Caffe

依照說明安裝 https://caffe.berkeleyvision.org/installation.html

安裝額外依賴庫

$ sudo apt-get install libprotobuf-dev libleveldb-dev \
  libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev \
  libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler \
  libatlas-base-dev

python(選裝)
$ sudo  apt-get install python-dev

進入caffe資料夾,複製Makefile.config修改

$cp Makefile.config.example Makefile.config
自行選擇要修改什麼內容
我修改的內容
USE_CUDNN := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu
CUDA_ARCH := -gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61

修改Makefile,加入HDF5程式庫

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

(選)Python,執行caffe內python/requirements.txt
$ pip install -r requirements.txt

編譯Caffe

$ make all
$ (選) make py
$ make test
$ make runtest

設置Caffe環境變數,修改.bashrc

export CAFFE_ROOT=你的caffe路徑
$ source ~/.bashrc

Nvidia Digits

Nvidia Digits網站:https://github.com/NVIDIA/DIGITS

下載Digits

$ CUDA_REPO_PKG=http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
$ ML_REPO_PKG=http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
$ wget "$CUDA_REPO_PKG" -O /tmp/cuda-repo.deb && sudo dpkg -i /tmp/cuda-repo.deb && rm -f /tmp/cuda-repo.deb
$ wget "$ML_REPO_PKG" -O /tmp/ml-repo.deb && sudo dpkg -i /tmp/ml-repo.deb && rm -f /tmp/ml-repo.deb
$ sudo apt-get update

安裝Digits

$ sudo apt-get install digits

使用Digits

輸入網址 http://localhost/ 或者 0.0.0.0:5000

如果連不上DIGITS,找出./digits-devserver,執行它。
$ chmod +x ./digits-devserver
$ ./digits-devserver

自訂設置
$ ./digits-devserver --config

測試Digits

下載MNIST Dataset
$ python /usr/share/digits/tools/download_data /main.py mnist ~/mnist

創造dataset

  • 開啟digits,New Dataset > Images > Classification
  • Imagesize 修改 28*28,其餘自訂


訓練model

  • New Model > Images > Classification
  • 選擇剛剛創造的dataset
  • 選LeNet

訓練完成,可以直接觀察model。

測試單張圖片

  • 進入MNIST的資料夾,選擇test資料夾內圖片測試


測試多張圖片

  • 進入usr/share/digits/jobs,進入對應時間點的資料夾
  • 選擇val.txt檔案