这篇文章将介绍MXNet的编译安装。

  MXNet的编译安装分为两步:

    1. 首先,从C++源码编译共享库(libmxnet.so for linux,libmxnet.dylib for osx,libmxnet.dll for windows)。
    2. 接着,安装语言包。

1. 构建共享库依赖

  目标是构建共享库文件。

最小构建需求:

  • 最新的支持C++ 11的C++编译器,比如g++ >= 4.8,clang
  • 一份BLAS库,比如libblas,atlas,openblas,或者 intel mkl

可选库:

  • CUDA Toolkit >= v7.0 以运行 nvidia GPUs

    • 需要 GPU 支持 Compute Capability >= 2.0
  • CUDNN 加速 GPU computation (only CUDNN 3 is supported)
  • opencv 进行图像的分段

2. Ubuntu/Debian上构建

安装依赖:

sudo apt-get update
sudo apt-get install -y build-essential git libatlas-base-dev libopencv-dev

构建MXNet:

git clone --recursive https://github.com/dmlc/mxnet
cd mxnet;
cp make/config.mk .
make -j4

3. OSX上的构建

安装依赖:

brew update
brew tap homebrew/science
brew info opencv
brew install opencv

构建MXNet:

git clone --recursive https://github.com/dmlc/mxnet
cd mxnet; cp make/osx.mk ./config.mk; make -j4

  

4. Windows上的构建

  Windows上,已经提供好预构建好的安装包,可以通过https://github.com/dmlc/mxnet/releases 下载。下载之后,解压并运行目录下的 setupenv.cmd 命令即可安装设置好环境。之后,即可编译运行MXNet的C++程序,或者安装Python包。

  当然,你也可以自己编译。

5. Python包的安装

  MXNet Python包的前提要求:python>=2.7 and numpy

  可运行如下命令测试:

python example/image-classification/train_mnist.py

  或者, 假如在编译的时候设置了USE_CUDA=1,可以使用GPU 0 来训练卷积神经网络。命令如下:

python example/image-classification/train_mnist.py --network lenet --gpus 0

  如果报错,找不到类似这样的库文件 libcudart.so.7.5,则要设置LD_LIBRARY_PATH,最简单的方式在你的 /etc/profile 或 ~/.bashrc 文件中添加如下语句

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

  或者执行命令 sudo vi /etc/ld.so.conf.d/cuda.conf,在文件中添加如下内容:

/usr/local/cuda/lib64
/lib

  然后再执行命令:

sudo ldconfig -v

  MXNet的Python包有多种安装方式,最简单明了的就是 添加 PYTHONPATH 环境变量,推荐开发者使用这种安装模式。使用这种安装模式,如果更新MXNet,并重新构建共享库之后,不需要任何重新安装Python包的步骤。否则,还必须重新安装MXNet的Python安装包,才能使用最新的。

  假设 mxnet 在你的主目录下,则 可以修改 ~/.bashrc 文件,并添加一行如下:

export PYTHONPATH=~/mxnet/python

  

6. R 包安装

Windows/Mac users:

  对于Windows/Mac users,有已编译好R包,可以在R控制台,直接运行如下命令:

install.packages("drat", repos="https://cran.rstudio.com")
drat:::addRepo("dmlc")
install.packages("mxnet")

  由于可能会更新,所以最好每周执行上面的命令,更新。

编译安装:

  在mxnet目录下,执行如下命令:

Rscript -e "install.packages('devtools', repo = 'https://cran.rstudio.com')"
cd R-package
Rscript -e "library(devtools); library(methods); options(repos=c(CRAN='https://cran.rstudio.com')); install_deps(dependencies = TRUE)"
cd ..
make rpkg

  如果有报缺少包的错误,则需先安装相应的R包,再执行以上命令。

  比如我的R环境缺少 roxygen2 包,则在R控制台,执行如下命令:

 install.packages("roxygen2")

  然后再执行最上面的脚本,编译出安装包,比如 mxnet_0.5.tar.gz 文件,最后执行如下命令安装:

R CMD INSTALL mxnet_0.5.tar.gz

  

7. 可选包安装

CUDA

  下载网址: CUDA

  缺省的编译不支持CUDA,所以如果要添加CUDA支持,要修改 config.mk 文件中的编译选项,使之支持CUDA。

  CUDA有几种安装方式,由于文件比较大,国内有源,所以这里选择从网络安装。

  下载相应的网络包,如我的是 cuda-repo-ubuntu1504_7.5-18_amd64.deb 。然后执行如下命令:

sudo dpkg -i cuda-repo-ubuntu1504_7.5-18_amd64.deb
sudo apt-get update
sudo apt-get install cuda

  修改文件 mxnet/make/config.mk,打开CUDA支持,如下:

    USE_CUDA = 1
    USE_CUDA_PATH = /usr/local/cuda

  如果以GPU计算模式执行报错,说找不到类似这样的库文件 libcudart.so.7.5,则要设置LD_LIBRARY_PATH,最简单的方式在你的 /etc/profile 或 ~/.bashrc 文件中添加如下语句:

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

  或者执行命令 sudo vi /etc/ld.so.conf.d/cuda.conf,在文件中添加如下内容:

/usr/local/cuda/lib64
/lib

然后再执行命令:

sudo ldconfig -v

CUDNN

  下载网址:CUDNN (需要注册申请,批准通过,才能下载)

  缺省的编译不支持CUDNN,所以如果要添加CUDNN支持,要修改make/config.mk文件中的编译选项,使之支持CUDNN。

  解压缩下载文件,将 include 和 lib64 拷贝放置在 /usr/local/cuda 目录下即可。

  执行如下命令修改链接文件:

cd /usr/local/cuda/lib64
rm -rf libcudnn.so libcudnn.so.4
ln -s libcudnn.so.4.0.4 libcudnn.so.4
ln -s libcudnn.so.4 libcudnn.so

OpenCV

  下载网址:OpenCV

  缺省的编译支持OpenCV。

参考引用:

  MXNet主页: https://github.com/dmlc/mxnet/

  MXNet编译安装参考文档:http://mxnet.readthedocs.org/en/latest/build.html

DMLC深度机器学习框架MXNet的编译安装的更多相关文章

  1. 深度学习框架Caffe的编译安装

    深度学习框架caffe特点,富有表达性.快速.模块化.下面介绍caffe如何在Ubuntu上编译安装. 1. 前提条件 安装依赖的软件包: CUDA 用来使用GPU模式计算. 建议使用 7.0 以上最 ...

  2. 人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练

    人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练 MXNet 是一个轻量级.可移植.灵活的分布式深度学习框架,2017 年 1 月 23 日,该项目进入 Apache 基金会,成为 ...

  3. 机器学习框架MXnet安装步骤

    安装环境:redhat7.1+vmw 安装步骤: # Install git if not already installed. sudo yum -y install git-all# Clone ...

  4. Ubuntu 14.04 安装caffe深度学习框架

    简介:如何在ubuntu 14.04 下安装caffe深度学习框架. 注:安装caffe时一定要保持网络状态好,不然会遇到很多麻烦.例如下载不了,各种报错. 一.安装依赖包 $ sudo apt-ge ...

  5. 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架

    20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...

  6. 转:TensorFlow和Caffe、MXNet、Keras等其他深度学习框架的对比

    http://geek.csdn.net/news/detail/138968 Google近日发布了TensorFlow 1.0候选版,这第一个稳定版将是深度学习框架发展中的里程碑的一步.自Tens ...

  7. Amazon宣布将MXNet作为AWS的深度学习框架——貌似性能比tf高啊

    Amazon公司的Werner Vogels于上周宣布Amazon深度学习框架将会正式选用MXNet,并且AWS将会通过增加源代码贡献.改进文档以及支持来自其它框架的可视化.开发以及迁移工具,为实现M ...

  8. tensorflow/pytorch/mxnet的pip安装,非源代码编译,基于cuda10/cudnn7.4.1/ubuntu18.04.md

    os安装 目前对tensorflow和cuda支持最好的是ubuntu的18.04 ,16.04这种lts,推荐使用18.04版本.非lts的版本一般不推荐. Windows倒是也能用来装深度GPU环 ...

  9. MXNet在64位Win7下的编译安装

    注:本文原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) 我笔记本配置比较低,想装个轻量级的MXNet试试,装完之后报错,不是有效的应用程序,找不到 ...

随机推荐

  1. 为什么要 urlencode()

    1.是因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的2. 因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 ...

  2. RS485 介绍

    一.RS485总线介绍: RS485总线是一种常见的串行总线标准,采用平衡发送与差分接收的方式,因此具有抑制共模干扰的能力.在一些要求通信距离为几十米到上千米的时候,RS485总线是一种应用最为广泛的 ...

  3. ignite客户端找不到服务端的时候如何设置退出

    ignite启动客户端时需要有服务端支持: Ignition.setClientMode(true); Ignition.start("ignite.xml"); 这里有个问题,当 ...

  4. Vs2010 WPF 项目打包

    [转]图解WPF程序打包全过程 首先打开已经完成的工程,如图: 下面开始制作安装程序包. 第一步:[文件]——[新建]——[项目]——安装项目. 名称——可以自己根据要求修改. 位置——是指你要制作的 ...

  5. CodeForces 429B Working out 动态规划

    Description Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to loo ...

  6. SqlMapClient ,SqlExecutor 和SqlMapClientTemplate 的区别?

    SqlMapClient SqlExecutor SqlMapClientTemplate

  7. PARTITION BY 和 group by

    sum()   over   (PARTITION   BY   ...)   是一个分析函数.   他执行的效果跟普通的sum   ...group   by   ...不一样,它计算组中表达式的累 ...

  8. HDU 3552 I can do it!

    脑洞题.http://blog.csdn.net/dgq8211/article/details/7748078 #include<cstdio> #include<cstring& ...

  9. loadrunner常用计数器分析

    内存是第一个监视对象,确定系统瓶颈的第一个步骤就是排除内存问题.内存短缺的问题可能会引起各种各样的问题. Object(对象) Counters Description(描述) 参考值 Memory ...

  10. Android消息提示框Toast

    Android消息提示框Toast Toast是Android中一种简易的消息提示框.和Dialog不一样的是,Toast是没有焦点的,toast提示框不能被用户点击,而且Toast显示的时间有限,t ...