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

news/2024/7/7 14:59:30 标签: 人工智能, r语言, git

前言

mxnet 是目前深度学习领域较为前沿的一类框架,同时支持命令式与符号式编程,即提高了开发效率又保障部署效率,并且源码极为简洁,具有分布式部署效率高、多语言支持等优点。mxnet 的出现,极大地拓展了R中张量计算的能力,使得原本CPU的计算能力可以快速移植到GPU上。本文将介绍在R中如何配置 Mxnet on GPU,解决上手深度学习的基本问题。

经过实践发现 N卡的相关配置在不同平台的配置难度如下:
Windows < Ubuntu < Mac

Windows 因为有游戏、CAD方面的积累使得GPU各方面的配置非常成熟,训练阶段建议优先 Windows 炼丹方案,部署阶段再迁移到 Linux。Mac 目前虽然声称支持了 eGPU 但是对N卡支持不好容易出现五国语言等现象。

要求

  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 种类有很多,通常入门级可以买最高性价比的 1080

GPU购买地址

在工业界场景通常选择 Tesla 系列,比如腾讯云的 双 M40-24G 配置,性能要比 1080 高出几个数量级。

Nvidia Installation

关闭服务器的桌面GUI功能

sudo service lightdm stop

安装 Nvidia 必要依赖

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

下载 Nvidia 驱动程序

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

参考资料

  • Microsoft R Open
  • Mxnet Installation
  • https://gist.github.com/wangr...
  • MXNET & GAN
  • Opencv 3.0 installation
  • Applying Deep Learning at Cloud Scale, with Microsoft R Server & Azure Data Lake
  • GCC 5.5 Installation

http://www.niftyadmin.cn/n/1774902.html

相关文章

试题 G: 外卖店优先级

2019第十届蓝桥杯省赛java b组总结 试题 G: 外卖店优先级 【问题描述】 “饱了么”外卖系统中维护着 N 家外卖店&#xff0c;编号 1 ∼ N。每家外卖店都有 一个优先级&#xff0c;初始时 (0 时刻) 优先级都为 0。 每经过 1 个时间单位&#xff0c;如果外卖店没有订单&#xff0…

ORACLE错误一览表

2019独角兽企业重金招聘Python工程师标准>>> ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程&#xff1b;无…

Android ---------- TabLayout 实战 (二) 仿京东商品详情页

1.效果图 2.原理&#xff1a;TabLayout提供了一个水平的布局用来展示 Tabs 作为一级标签导航&#xff1b;用横向布局的recycleview作为第二级标签导航。 3.添加依赖&#xff1a; compile com.android.support:design:27. ‘ 4.布局文件&#xff1a; &#xff08;1&#xff09…

试题 H: 人物相关性分析

2019第十届蓝桥杯省赛java b组总结 试题 H: 人物相关性分析 【问题描述】 小明正在分析一本小说中的人物相关性。他想知道在小说中 Alice 和 Bob 有多少次同时出现。 更准确的说&#xff0c;小明定义 Alice 和 Bob“同时出现”的意思是&#xff1a;在小说文本 中 Alice 和 Bob …

看阿里P9架构师如何向你定义架构及架构师

架构的定义先来看看软件架构的普遍定义吧。一个程序和计算系统软件体系结构是指系统的一个或多个结构。结构中包括软件的构建&#xff0c;构建的外部可见属性以及它们之间的相互关系。体系结构并非可运行软件。确切的说&#xff0c;它是一种表达&#xff0c;使软件工程师能够&a…

用Python做股市数据分析

为什么80%的码农都做不了架构师&#xff1f;>>> 这篇博文是用Python分析股市数据系列两部中的第一部&#xff0c;内容基于我犹他大学 数学3900 (数据科学)的课程。在这些博文中&#xff0c;我会讨论一些基础知识。比如如何用pandas从雅虎财经获得数据&#xff0c; …

试题 I: 后缀表达式

2019第十届蓝桥杯省赛java b组总结 试题 I: 后缀表达式 【问题描述】 给定 N 个加号、M 个减号以及 N M 1 个整数 A1, A2, , ANM1&#xff0c;小 明想知道在所有由这 N 个加号、M 个减号以及 N M 1 个整数凑出的合法的 后缀表达式中&#xff0c;结果最大的是哪一个&…

JavaScript学习之旅-3(原创)

在上一篇文章中&#xff0c;我们主要介绍了javaScript的基本语法、数据类型、数组&#xff0c;这一篇的内容我们主要学习JavaScript的变量、对象 变量 变量是存储信息的容器。当然&#xff0c;这是百度上面的解释。我个人通俗的理解是&#xff08;通过拆字来分析&#xff09;&a…