MXNet 目前支持 Python, R, Julia, and Scala。对于 Mac 上使用 Python 的用户,MXNet提供了一个安装全部 MXNet 依赖和 MXNet 库的 Git Bash 脚本。
这部分是可选的。如果不打算使用GPU的话可以跳过此部分。如果使用GPU你需要配置 CUDA 和 cuDNN。
首先,下载并安装 CUDA 8 工具包.
安装完了CUDA工具包你需要配置一些环境变量,将下面命令添加到 ~/.bash_profile 文件中:
export CUDA_HOME=/usr/local/cuda export DYLD_LIBRARY_PATH="$CUDA_HOME/lib:$DYLD_LIBRARY_PATH" export PATH="$CUDA_HOME/bin:$PATH"
重新加载 ~/.bash_profile 文件然后安装依赖:
. ~/.bash_profile brew install coreutils brew tap caskroom/cask
然后下载 cuDNN 5.
解压此文件并且进入 cudnn 根目录。将头文件和库文件移动到你本地的 CUDA 工具包文件夹:
$ sudo mv include/cudnn.h /Developer/NVIDIA/CUDA-8.0/include/ $ sudo mv lib/libcudnn* /Developer/NVIDIA/CUDA-8.0/lib $ sudo ln -s /Developer/NVIDIA/CUDA-8.0/lib/libcudnn* /usr/local/cuda/lib/
现在我们可以开始编译 MXNet.
克隆MXNet的源码仓库到你的电脑上,运行安装脚本。除了安装 MXNet 外,这个脚本还会安装: Homebrew, Numpy, LibBLAS, OpenCV, Graphviz, NumPy 以及 Jupyter 。
安装这些大概需要花费5到10分钟。
# Clone mxnet repository. In terminal, run the commands WITHOUT "sudo" git clone https://github.com/dmlc/mxnet.git ~/mxnet --recursive # If building with GPU, add configurations to config.mk file: cd ~/mxnet cp make/config.mk . echo "USE_CUDA=1" >>config.mk echo "USE_CUDA_PATH=/usr/local/cuda" >>config.mk echo "USE_CUDNN=1" >>config.mk # Install MXNet for Python with all required dependencies cd ~/mxnet/setup-utils bash install-mxnet-osx-python.sh
点击 这里 可以查看安装脚本的具体内容。
安装 MXNet 一共分两步:
注意: 可以通过编辑 make/config.mk 来修改编译选项,然后通过 make 命令开始编译。
用下面命令安装依赖库:
# Paste this command in Mac terminal to install Homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # Insert the Homebrew directory at the top of your PATH environment variable export PATH=/usr/local/bin:/usr/local/sbin:$PATH
brew update brew install pkg-config brew install graphviz brew install openblas brew tap homebrew/science brew install opencv # For getting pip brew install python # For visualization of network graphs pip install graphviz # Jupyter notebook pip install jupyter
安装完依赖后,从Git上下载 MXNet 源码,然后编译成库文件名字叫 libmxnet.so。
OS X 上编译 MXNet 的配置文件叫 osx.mk 。首先将 make/osx.mk 拷贝为 config.mk,这样 make 命令可以使用它:
git clone --recursive https://github.com/dmlc/mxnet ~/mxnet cd ~/mxnet cp make/osx.mk ./config.mk echo "USE_BLAS = openblas" >> ./config.mk echo "ADD_CFLAGS += -I/usr/local/opt/openblas/include" >> ./config.mk echo "ADD_LDFLAGS += -L/usr/local/opt/openblas/lib" >> ./config.mk echo "ADD_LDFLAGS += -L/usr/local/lib/graphviz/" >> ./config.mk make -j$(sysctl -n hw.ncpu)
如果我们编译 GPU 版本,需要将下面的配置添加到 config.mk 中,然后再编译:
echo "USE_CUDA = 1" >> ./config.mk echo "USE_CUDA_PATH = /usr/local/cuda" >> ./config.mk echo "USE_CUDNN = 1" >> ./config.mk make
注意: 想修改编译参数,编辑 config.mk.
我们已经安装完了 MXNet 的核心库(core library),接下来我们要选择一种编程语言,安装语言接口包:
有两个选择:
对于 OS X (Mac) 用户, MXNet 提供了编译好的 CPU 版二进制包. 这个包每周更新,你可以在 R 控制台中使用下面的命令来安装这个包:
install.packages("drat", repos="https://cran.rstudio.com") drat:::addRepo("dmlc") install.packages("mxnet")
运行下面命令来安装 MXNet 依赖并且编译 MXNet R 语言包
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-package 是 MXNet 源码的一个目录。
这些命令可以生成一个 tar.gz 格式的 MXNet R 语言包,运行下面命令来安装这个语言包:
R CMD INSTALL mxnet_current_r.tar.gz
MXNet Julia 语言包托管在一个单独的仓库 MXNet.jl,地址是 GitHub。 Julia 需要与已经安装的 libmxnet 绑定。使用下面的命令来配置 MXNET_HOME 环境变量:
export MXNET_HOME=/<path to>/libmxnet
这里的路径(path to)指的是已经安装的 libmxnet 的根目录。也即是说你可以在 $MXNET_HOME/lib 目录下找到 libmxnet.so 文件。举例来讲 libmxnet 的根目录是 ~ 你应该执行如下命令:
export MXNET_HOME=/~/libmxnet
你也许想把这条命令添加到 ~/.bashrc 文件中,如果是的话,你可以在 Julia 控制台中执行如下命令来安装 Julia 语言包。
Pkg.add("MXNet")
MXNet Julia 语言包更详细的安装教程可以参考 MXNet Julia documentation.
在编译 MXNet Scala 语言包前,你必须已经完成了 编译共享库。然后在 MXNet 源码根目录运行下面命令来编译 Scala 语言包:
make scalapkg
这条命令会生成一个 JAR 文件,里面包含了封装(assembly),核心(core)和例子(example)。同时还会在 native/{your-architecture}/target directory 下生成一个本地库,你可以通过它配合 core 使用。
在 MXNet 根目录下运行下面的命令,可以讲 MXNet Scala 语言包安装到你本地的 Maven 仓库
make scalainstall