1. 程式人生 > >嵌入式深度學習之Caffe2訓練環境搭建

嵌入式深度學習之Caffe2訓練環境搭建

參考資料:

訓練環境概述:

  • CPU:Intel i7-4790K
  • GPU:Nvidia GTX1060
  • 作業系統:Ubuntu 16.04.3 64位
  • GPU驅動版本:384.98
  • CUDA版本:9.0.176
  • cuDNN版本:7.0.4.31
  • 環境搭建時間:2017-12-26

如果Ubuntu中還未安裝好Nvidia的GPU驅動和CUDA/cuDNN開發包,請先安裝好上述驅動和開發包之後進行後續的操作

下載Caffe2原始碼:

因為訓練機器上之前已經安裝cuDNN7,所以必須配套使用caffe2的最新版本0.8.1(使用0.8.0或之前的版本都會出現編譯報錯)

GCC編譯器版本降級:

預設情況下Ubuntu 16.04安裝的gcc5.3或gcc5.4,但是CUDA8.0/9.0對於gcc版本的要求並不高,如果想更加保險可以通過如下方法將gcc版本降級為4.9.4版本:

sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20

原始碼編譯部分依賴庫:

APT安裝部分依賴庫和輔助編譯工具:

# caffe2的訓練環境採用eigen3
sudo apt-get install libeigen3-dev sudo apt-get install build-essential cmake

APT安裝Python工具

sudo apt-get install python-dev python-pip
# 通過pip進行python外掛安裝
sudo pip install numpy protobuf

APT安裝可選依賴庫

sudo apt-get install libgtest-dev libiomp-dev liblmdb-dev libopencv-dev \ 
    libopenmpi-dev openmpi-bin openmpi-doc python-pydot

PIP安裝Python深度學習輔助工具

# 通過pip安裝一些常用的深度學習輔助工具
sudo pip install flask future graphviz hypothesis jupyter matplotlib pydot python-nvd3 \ 
    pyyaml requests scikit-image scipy setuptools six tornado
# 安裝多個工具的過程中要關注是否存在中途退出的問題

下載可選第三方庫

caffe2-0.8.1根目錄下有一個third_party目錄,當通過cmake開啟某些可選功能時可以手動下載對應的軟體重新命名之後替換third_party目錄的對應的空目錄

編譯&安裝Caffe2

cd caffe2-0.8.1
mkdir _install # 在cmake-gui中設定為Build目錄
cmake-gui 
# 使用cmake-gui進行編譯配置工作,下面將列舉具體的設定項
BUILD_TEST                    TRUE # 開啟編譯
CMAKE_EXE_LINKER_FLAGS        -L/usr/lib/x86_64-linux-gnu/ # 64位系統時使用
USE_CNMEM                     FLASE 
USE_GLOO                      FALSE # gloo為多GPU訓練時使用
USE_LEVELDB                   FALSE # leveldb為舊的資料庫,推薦使用lmdb
USE_NCCL                      FLASE # ncll為多GPU訓練時使用
USE_NNPACK                    FLASE OR TRUE # 根據需要來控制是否開啟
# 完成cmake-gui generate生成makefile
cd _install
make -j8 
make install

測試Caffe2 CPU和GPU版本是否安裝成功

# 在_install目錄下執行python測試指令碼
# 測試CPU版本
sudo python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
# 測試GPU版本
sudo python -m caffe2.python.operator_test.relu_op_test
# 測試是否安裝成功時可能會出現如下錯誤
1.status == CUDNN_STATUS_SUCCESS. 4 vs 0 
解決方案:呼叫CUDNN的應用程式必須以root或者加上sudo執行

配置環境變數

# 暫時為空

啟動Juypter server

# 設定jupyter notebook登入密碼
# 生成jupyter notebook配置檔案
# 修改jupyter notebook配置檔案
jupyter notebook --no-browser --port=8889