前言
mxnet 是目前深度学习领域较为前沿的一类框架,同时支持命令式与符号式编程,即提高了开发效率又保障部署效率,并且源码极为简洁,具有分布式部署效率高、多语言支持等优点。mxnet 的出现,极大地拓展了R中张量计算的能力,使得原本CPU的计算能力可以快速移植到GPU上。本文将介绍在R中如何配置 Mxnet on GPU,解决上手深度学习的基本问题。
经过实践发现 N卡的相关配置在不同平台的配置难度如下:
Windows < Ubuntu < Mac
Windows 因为有游戏、CAD方面的积累使得GPU各方面的配置非常成熟,训练阶段建议优先 Windows 炼丹方案,部署阶段再迁移到 Linux。Mac 目前虽然声称支持了 eGPU 但是对N卡支持不好容易出现五国语言等现象。
要求
- R>=3.4
- GCC>=5.3.0
- opencv>=3.0
- openblas/atlas
本文配置
- Ubuntu-16.04 LTS
- Nvidia GeForce 1080
- Nvidia Driver==387
- Cuda==9.1
- MXnet==0.10.0
GPU 采购
GPU 种类有很多,通常入门级可以买最高性价比的 1080
在工业界场景通常选择 Tesla 系列,比如腾讯云的 双 M40-24G 配置,性能要比 1080 高出几个数量级。
Nvidia Installation
关闭服务器的桌面GUI功能
sudo service lightdm stop
安装 Nvidia 必要依赖
sudo apt-get install build-essential gcc-multilib dkms
配置 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
下载后安装(请选择 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 Open
和 Mxnet 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)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。