The following installation instructions are for installing MXNet on computers running Ubuntu 16.04. Support for later versions of Ubuntu is not yet available.
If you plan to build with GPU, you need to set up the environment for CUDA and cuDNN.
First, download and install CUDA toolkit. CUDA 9.2 is recommended.
Then download cuDNN 7.1.4.
Unzip the file and change to the cuDNN root directory. Move the header and libraries to your local CUDA Toolkit folder:
tar xvzf cudnn-9.2-linux-x64-v7.1
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
sudo ldconfig
The following scripts will install Ubuntu 16.04 dependencies for MXNet Python development.
wget https://raw.githubusercontent.com/apache/incubator-mxnet/master/ci/docker/install/ubuntu_core.sh
wget https://raw.githubusercontent.com/apache/incubator-mxnet/master/ci/docker/install/ubuntu_python.sh
sudo ./ubuntu_core.sh
sudo ./ubuntu_python.sh
Using the latest MXNet with CUDA 9.2 package is recommended for the fastest training speeds with MXNet.
Recommended for training:
pip install mxnet-cu92
Recommended for inference:
pip install mxnet-cu92mkl
Alternatively, you can use the table below to select the package that suits your purpose.
MXNet Version | Basic | CUDA | MKL-DNN | CUDA/MKL-DNN |
---|---|---|---|---|
Latest | mxnet | mxnet-cu92 | mxnet-mkl | mxnet-cu92mkl |
The following table presents the pip packages that are recommended for each version of MXNet.
To install an older version of MXNet with one of the packages in the previous table add ==
with the version you require. For example for version 1.1.0 of MXNet with CUDA 8, you would use pip install mxnet-cu80==1.1.0
.
You can build MXNet from source, and then you have the option of installing language-specific bindings, such as Scala, Julia, R or Perl. This is a two-step process:
- Build the shared library from the MXNet C++ source code.
- (optional) Install the supported language-specific packages for MXNet. Be sure to check that section first, as some scripts may be available to handle all of the dependencies, MXNet build, and language bindings for you. Here they are again for quick access:
Note: To change the compilation options for your build, edit the make/config.mk
file prior to building MXNet. More information on this is mentioned in the different language package instructions.
You can quickly build MXNet from source with the following script found in the /docs/install
folder:
cd docs/install
./install_mxnet_ubuntu_python.sh
Or you can go through a manual process described next.
It is recommended that you review the general build from source instructions before continuing.
On Ubuntu versions 16.04 or later, you need the following dependencies:
Step 1: Install build tools and git.
sudo apt-get update
sudo apt-get install -y build-essential git
Step 2: Install a Math Library.
Details on the different math libraries are found in the build from source guide's Math Library Selection section.
For OpenBLAS use:
sudo apt-get install -y libopenblas-dev
For other libraries, visit the Math Library Selection section.
Step 3: Install OpenCV.
MXNet uses OpenCV for efficient image loading and augmentation operations.
sudo apt-get install -y libopencv-dev
Step 4: Download MXNet sources and build MXNet core shared library.
If building on CPU and using OpenBLAS:
git clone --recursive https://github.com/apache/incubator-mxnet.git
cd mxnet
make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas
If building on CPU and using MKL and MKL-DNN (make sure MKL is installed according to Math Library Selection and MKL-DNN README):
git clone --recursive https://github.com/apache/incubator-mxnet.git
cd mxnet
make -j $(nproc) USE_OPENCV=1 USE_BLAS=mkl USE_MKLDNN=1
If building on GPU and you want OpenCV and OpenBLAS (make sure you have installed the CUDA dependencies first):
git clone --recursive https://github.com/apache/incubator-mxnet.git
cd mxnet
make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1
Note - USE_OPENCV and USE_BLAS are make file flags to set compilation options to use OpenCV and BLAS library. You can explore and use more compilation options in make/config.mk
and also review common usage examples.
Building from source creates a library called libmxnet.so
in the lib
folder in your MXNet project root.
You may also want to add the MXNet shared library to your LD_LIBRARY_PATH
:
export LD_LIBRARY_PATH=~/incubator-mxnet/lib
After building the MXNet library, you may install language bindings.
After you have installed the MXNet core library. You may install MXNet interface packages for the programming language of your choice:
To install the MXNet Python binding navigate to the root of the MXNet folder then run the following:
$ cd python
$ pip install -e .
Note that the -e
flag is optional. It is equivalent to --editable
and means that if you edit the source files, these changes will be reflected in the package installed.
You may optionally install graphviz
library that is used for visualizing network graphs you build on MXNet. You may also install Jupyter Notebook which is used for running MXNet tutorials and examples.
sudo pip install graphviz
sudo pip install jupyter
Refer to the C++ Package setup guide.
Refer to the Clojure setup guide.
The MXNet package for Julia is hosted in a separate repository, MXNet.jl, which is available on GitHub. To use Julia binding it with an existing libmxnet installation, set the MXNET_HOME
environment variable by running the following command:
export MXNET_HOME=/<path to>/libmxnet
The path to the existing libmxnet installation should be the root directory of libmxnet. In other words, you should be able to find the libmxnet.so
file at $MXNET_HOME/lib
. For example, if the root directory of libmxnet is ~
, you would run the following command:
export MXNET_HOME=/~/libmxnet
You might want to add this command to your ~/.bashrc
file. If you do, you can install the Julia package in the Julia console using the following command:
Pkg.add("MXNet")
For more details about installing and using MXNet with Julia, see the MXNet Julia documentation.
Before you build MXNet for Perl from source code, you must complete building the shared library. After you build the shared library, run the following command from the MXNet source root directory to build the MXNet Perl package:
sudo apt-get install libmouse-perl pdl cpanminus swig libgraphviz-perl
cpanm -q -L "${HOME}/perl5" Function::Parameters Hash::Ordered PDL::CCS
MXNET_HOME=${PWD}
export LD_LIBRARY_PATH=${MXNET_HOME}/lib
export PERL5LIB=${HOME}/perl5/lib/perl5
cd ${MXNET_HOME}/perl-package/AI-MXNetCAPI/
perl Makefile.PL INSTALL_BASE=${HOME}/perl5
make install
cd ${MXNET_HOME}/perl-package/AI-NNVMCAPI/
perl Makefile.PL INSTALL_BASE=${HOME}/perl5
make install
cd ${MXNET_HOME}/perl-package/AI-MXNet/
perl Makefile.PL INSTALL_BASE=${HOME}/perl5
make install
Building MXNet from source is a 2 step process.
- Build the MXNet core shared library,
libmxnet.so
, from source. - Build the R bindings.
You can quickly build MXNet-R with the following two scripts found in the /docs/install
folder:
git clone --recursive https://github.com/apache/incubator-mxnet.git mxnet
cd mxnet/docs/install
./install_mxnet_ubuntu_python.sh
./install_mxnet_ubuntu_r.sh
Or you can go through a manual process described next.
Minimum Requirements
Build the MXNet core shared library
Step 1 Install build tools and git.
$ sudo apt-get update
$ sudo apt-get install -y build-essential git
Step 2 Install OpenBLAS.
MXNet uses BLAS and LAPACK libraries for accelerated numerical computations on CPU machine. There are several flavors of BLAS/LAPACK libraries - OpenBLAS, ATLAS and MKL. In this step we install OpenBLAS. You can choose to install ATLAS or MKL.
$ sudo apt-get install -y libopenblas-dev liblapack-dev
Step 3 Install OpenCV.
MXNet uses OpenCV for efficient image loading and augmentation operations.
$ sudo apt-get install -y libopencv-dev
Step 4 Download MXNet sources and build MXNet core shared library. You can clone the repository as described in the following code block, or you may try the download links for your desired MXNet version.
$ git clone --recursive https://github.com/apache/incubator-mxnet
$ cd incubator-mxnet
$ make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas
Note - USE_OPENCV and USE_BLAS are make file flags to set compilation options to use OpenCV and BLAS library. You can explore and use more compilation options in make/config.mk
.
Step 5 Make and install the MXNet-R bindings.
$ make rpkg
You can verify your MXNet-R installation as follows:
sudo -i R
At the R prompt enter the following:
library(mxnet)
a <- mx.nd.ones(c(2,3), ctx = mx.cpu())
b <- a * 2 + 1
b
You should see the following output:
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 3 3
> quit()
To use the MXNet-Scala package, you can acquire the Maven package as a dependency.
Further information is in the MXNet-Scala Setup Instructions.
If you use IntelliJ or a similar IDE, you may want to follow the MXNet-Scala on IntelliJ tutorial instead.
You are more than welcome to contribute easy installation scripts for other operating systems and programming languages. See the community contributions page for further information.