Installation Guide¶
This page gives instructions of how to build and install the mxnet package from
scratch on various systems. It consists of two steps, first we build the shared
library from the C++ codes (libmxnet.so
for linux/osx and libmxnet.dll
for
windows). Then we install the language, e.g. Python, packages. If the
instructions on this page do not work for you, please feel free to ask questions
at mxnet/issues, or even better to send
pull request if you can fix the problem.
Contents¶
Python Package Installation¶
The python package is located at mxnet/python. It requires
python>=2.7
and numpy
. To install the latter, if pip
is available, then
sudo pip install numpy
otherwise use your package manager, e.g.
sudo apt-get install python-numpy # for debian
sudo yum install python-numpy # for redhat
To have a quick test of the python package, we can train a MLP on the mnist dataset:
python example/image-classification/train_mnist.py
or train a convolution neural network using GPU 0 if we set USE_CUDA=1
during
compiling:
python example/image-classification/train_mnist.py --network lenet --gpus 0
There are several ways to install the package:
Install system-widely, which requires root permission
cd python; sudo python setup.py install
You will however need Python
distutils
module for this to work. It is often part of the core python package or it can be installed using your package manager, e.g. in Debian usesudo apt-get install python-setuptools
Only set the environment variable
PYTHONPATH
to tell python where to find the library. For example, assume we clonedmxnet
on the home directory~
. then we can added the following line in~/.bashrc
It is recommended for developers who may change the codes. The changes will be immediately reflected once you pulled the code and rebuild the project (no need to callsetup
again)export PYTHONPATH=~/mxnet/python
Install only for the current user.
cd python; python setup.py develop --user
Copy the package into the working directory which contains the mxnet application programs. In this approach we don’t need to change the system, and therefore is recommended for distributed training.
Assume we are on the working directory, and
mxnet
is cloned on the home directory~
.cp -r ~/mxnet/python/mxnet . cp ~/mxnet/lib/libmxnet.so mxnet/
R Package Installation¶
For Windows/Mac users, we provide pre-built binary package using CPU. You can install weekly updated package directly in R console:
install.packages("drat", repos="https://cran.rstudio.com")
drat:::addRepo("dmlc")
install.packages("mxnet")
To install the R package. First finish the Build MXNet Library step. Then use the following command to install dependencies and build the package at root folder
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
Now you should have the R package as a tar.gz file and you can install it as a normal package by (the version number might be different)
R CMD INSTALL mxnet_0.5.tar.gz
Note on Library Build:
We isolate the library build with Rcpp end to maximize the portability
- MSVC is needed on windows to build the mxnet library, because of CUDA compatiblity issue of toolchains.
Julia Package Installation¶
The Julia package is hosted in a separate repository MXNet.jl. To use the Julia binding with an existing libmxnet installation, set the following environment variable
export MXNET_HOME=/path/to/libmxnet
The path should be the root directory of libmxnet, in other words, libmxnet.so
should be found at $MXNET_HOME/lib
. You might want to add it to your .bashrc
. Then the Julia package could be installed via
Pkg.add("MXNet")
in a Julia console. For more details, please refer to the full documentation of MXNet.jl.
Scala Package Installation¶
For Linux/Mac users, we provide pre-built binary packages, with GPU or CPU-only supported.
You can use the following dependency in maven, change the artifactId according to your own architecture, e.g., mxnet-full_2.10-osx-x86_64-cpu
for OSX (and cpu-only).
<dependency>
<groupId>ml.dmlc.mxnet</groupId>
<artifactId>mxnet-full_2.10-linux-x86_64-gpu</artifactId>
<version>0.1.1</version>
</dependency>
In case your native environment is slightly different from which the assembly package provides, e.g., you use openblas
instead of atlas
, a more recommended way is to use mxnet-core
and put the compiled Java native library somewhere in your load path.
<dependency>
<groupId>ml.dmlc.mxnet</groupId>
<artifactId>mxnet-core_2.10</artifactId>
<version>0.1.1</version>
</dependency>
To build with your own environment. First finish the Build MXNet Library step. Then run following command from the root directory.
make scalapkg
Now you will find jars for assembly
, core
and example
modules.
Also it produces the native library in native/{your-architecture}/target
, which you can use to cooperate with the core
module.
To install the scala package into your local maven repository, run
make scalainstall
Docker Images¶
Builds of MXNet are available as Docker images: MXNet Docker (CPU) or MXNet Docker (CUDA). These are updated on a weekly basis with the latest builds of MXNet. Examples of running bash in a Docker container are as follows:
sudo docker run -it kaixhin/mxnet
sudo docker run -it --device /dev/nvidiactl --device /dev/nvidia-uvm --device /dev/nvidia0 kaixhin/cuda-mxnet:7.0
For a guide to Docker, see the official docs. For more details on how to use the MXNet Docker images, including requirements for CUDA support, consult the source project.