[原] 快速上手:在R中使用Mxnet[GPU/Linux]

前言

mxnet 是目前深度學習領域較爲前沿的一類框架,同時支持命令式與符號式編程,即提升了開發效率又保障部署效率,而且源碼極爲簡潔,具備分佈式部署效率高、多語言支持等優勢。mxnet 的出現,極大地拓展了R中張量計算的能力,使得本來CPU的計算能力能夠快速移植到GPU上。本文將介紹在R中如何配置 Mxnet on GPU,解決上手深度學習的基本問題。html

通過實踐發現 N卡的相關配置在不一樣平臺的配置難度以下:
Windows < Ubuntu < Macpython

Windows 由於有遊戲、CAD方面的積累使得GPU各方面的配置很是成熟,訓練階段建議優先 Windows 煉丹方案,部署階段再遷移到 Linux。Mac 目前雖然聲稱支持了 eGPU 可是對N卡支持很差容易出現五國語言等現象。linux

要求

  1. R>=3.4
  2. GCC>=5.3.0
  3. opencv>=3.0
  4. openblas/atlas

本文配置

  1. Ubuntu-16.04 LTS
  2. Nvidia GeForce 1080
  3. Nvidia Driver==387
  4. Cuda==9.1
  5. MXnet==0.10.0

GPU 採購

clipboard.png

GPU 種類有不少,一般入門級能夠買最高性價比的 1080c++

GPU購買地址

在工業界場景一般選擇 Tesla 系列,好比騰訊雲的 雙 M40-24G 配置,性能要比 1080 高出幾個數量級。git

Nvidia Installation

關閉服務器的桌面GUI功能github

sudo service lightdm stopapache

安裝 Nvidia 必要依賴編程

sudo apt-get install build-essential gcc-multilib dkmsjson

下載 Nvidia 驅動程序ubuntu

clipboard.png

配置 modprobe

sudo vi /etc/modprobe.d/blacklist-nouveau.conf

輸入下面配置後保存

blacklist nouveau
options nouveau modeset=0

安裝 Nvidia

run 文件:

sudo sh NVIDIA-Linux-x86_64-387.34.run

deb 文件:

sudo dpkg -i NVIDIA-Linux-x86_64-387.34.deb
sudo apt-get update
sudo apt-get install cuda-driver

檢測 Nvidia 是否安裝成功

cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.111 Tue Dec 19 23:51:45 PST 2017
GCC version: gcc version 5.4.1 20160904 (Ubuntu 5.4.1-2ubuntu1~16.04)

CUDA Installation

clipboard.png

下載後安裝(請選擇 runfile[local])

sudo sh ./cuda-linux64-rel-9.1.85_387_26.run

注意,當問到:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?

答案必須是n,不然以前安裝的GTX1080驅動就白費了。

添加動態編譯庫

sudo bash -c "echo /usr/local/cuda/lib64/ > /etc/ld.so.conf.d/cuda.conf"
sudo ldconfig

配置環境變量[可選]

echo "export PATH=$PATH:/usr/local/cuda/bin">> /etc/environments

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

檢驗是否安裝成功

nvidia-smi

R Installation

修改apt-get源

sudo echo "deb http://cran.rstudio.com/bin/linux/ubuntu xenial/" >> /etc/apt/sources.list
sudo apt-get update

安裝最新 R 版本

sudo apt-get install r-base

Opencv Installation

下載最新版本

apt-get install cmake # C complier
git clone https://github.com/Itseez/opencv.git

預編譯

cd ~/opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

並行編譯

make -j$(nproc)
sudo make install

GCC Installation

下載GCC源碼

wget https://ftp.gnu.org/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz
tar -xvf gcc-5.5.0.tar.gz

編譯

cd gcc-5.5.0
./configure --with-system-zlib --disable-multilib --enable-languages=c,c++

make -j 4
sudo make install

Mxnet Installation

安裝 gcc, python, 等

#
sudo apt-get install -y libatlas-base-dev libopencv-dev libprotoc-dev python-numpy python-scipy make unzip git gcc g++ libcurl4-openssl-dev libssl-dev libjpeg-turbo8-dev

sudo update-alternatives --install "/usr/bin/cc" "cc" "/usr/bin/gcc" 50

下載最新版本 MXNet 源碼

MXNET_HOME="$HOME/mxnet/"
git clone https://github.com/dmlc/mxnet.git "$HOME/mxnet/" --recursive
cd "$MXNET_HOME"

配置 MXNet

#
cp make/config.mk .
# if you want some configuration change,
# please change config file like this.
#echo "USE_DIST_KVSTORE = 1" >>config.mk

編譯和安裝 MXNet

#
make -j$(nproc)
sudo apt-get install libxml2-dev
sudo Rscript -e "install.packages('devtools', repo = 'https://cran.rstudio.com')"
cd R-package
sudo Rscript -e "library(devtools); library(methods); options(repos=c(CRAN='https://cran.rstudio.com')); install_deps(dependencies = TRUE)"
sudo Rscript -e "install.packages(c('curl', 'httr'))"
sudo Rscript -e "install.packages(c('Rcpp', 'DiagrammeR', 'data.table', 'jsonlite', 'magrittr', 'stringr', 'roxygen2'), repos = 'https://cran.rstudio.com')"
cd ..
sudo make rpkg
sudo R CMD INSTALL mxnet_current_r.tar.gz

檢驗 Mxnet on GPU

mxnet::mx.nd.array(1,mxnet::mx.gpu())

Mxnet on CPU

若是暫時沒有GPU,能夠先嚐試使用多線程的 Microsoft R OpenMxnet on CPU

安裝 R (MRAN)

#
wget https://mran.microsoft.com/install/mro/3.4.2/microsoft-r-open-3.4.2.tar.gz
tar -zxvpf microsoft-r-open-3.4.2.tar.gz
cd microsoft-r-open
sudo ./install.sh -a -u
cd ..
sudo rm -rf microsoft-r-open
sudo rm microsoft-r-open-3.4.2.tar.gz

安裝 Mxnet on Mac/Windows CPU

install.packages("mxnet",repos="https://s3-us-west-2.amazonaws.com/apache-mxnet/R/CRAN/",dependencies = T)

安裝 Mxnet on Windows GPU(兼容 Macbook bootcamp)

clipboard.png

參考資料

相關文章
相關標籤/搜索