Installing MXNet in Windows¶
On Windows, you can download and install the prebuilt MXNet package, or download, build, and install MXNet yourself.
Install MXNet for Python¶
- Install
Python
using windows installer available here. - Install
Numpy
using windows installer available here. - Next, we install Python package interface for MXNet. You can find the Python interface package for MXNet on GitHub.
# Assuming you are in root mxnet source code folder
cd python
sudo python setup.py install
Done! We have installed MXNet with Python interface. Run below commands to verify our installation is successful.
# Open Python terminal
python
# You should be able to import mxnet library without any issues.
>>> import mxnet as mx;
>>> a = mx.nd.ones((2, 3));
>>> print ((a*2).asnumpy());
[[ 2. 2. 2.]
[ 2. 2. 2.]]
We actually did a small tensor computation using MXNet! You are all set with MXNet on your Windows machine.
Install MXNet Package for R¶
MXNet for R is available for both CPUs and GPUs.
Installing MXNet on a Computer with a CPU Processor¶
To install MXNet on a computer with a CPU processor, choose from two options:
- Use the prebuilt binary package
- Build the library from source code
Installing MXNet with the Prebuilt Binary Package(CPU)¶
For Windows users, MXNet provides prebuilt binary packages. You can install the package directly in the R console.
For CPU-only package:
cran <- getOption("repos")
cran["dmlc"] <- "https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/R/CRAN/"
options(repos = cran)
install.packages("mxnet")
Building MXNet from Source Code(CPU)¶
- Clone the MXNet github repo.
git clone --recursive https://github.com/apache/incubator-mxnet
The --recursive
is to clone all the submodules used by MXNet. You will be editing the "/mxnet/R-package"
folder.
- Download prebuilt GPU-enabled MXNet libraries for Windows from Windows release. You will need
mxnet_x64_vc14_cpu.7z
andprebuildbase_win10_x64_vc14.7z
where X stands for your CUDA toolkit version - Create a folder called
R-package/inst/libs/x64
. MXNet supports only 64-bit operating systems, so you need the x64 folder. - Copy the following shared libraries (.dll files) into the
R-package/inst/libs/x64
folder:
libgcc_s_seh-1.dll
libgfortran-3.dll
libmxnet.dll
libmxnet.lib
libopenblas.dll
libquadmath-0.dll
mxnet.dll
unzip.exe
unzip32.dll
vcomp140.dll
wget.exe
These dlls can be found in prebuildbase_win10_x64_vc14/3rdparty
, mxnet_x64_vc14_cpu/build
, mxnet_x64_vc14_cpu/lib
.
- Copy the header files from
dmlc
,mxnet
,mxshadow
andnnvm
from mxnet_x64_vc14_cpu/include and mxnet_x64_vc14_cpu/nvnm/include into./R-package/inst/include
. It should look like:
./R-package/inst
└── include
├── dmlc
├── mxnet
├── mshadow
└── nnvm
- Make sure that R executable is added to your
PATH
in the environment variables. Running thewhere R
command at the command prompt should return the location. - Also make sure that Rtools is installed and the executable is added to your
PATH
in the environment variables. - Temporary patch - im2rec currently results in crashes during the build. Remove the im2rec.h and im2rec.cc files in R-package/src/ from cloned repository and comment out the two im2rec lines in R-package/src/mxnet.cc as shown below.
#include "./kvstore.h"
#include "./export.h"
//#include "./im2rec.h"
......
......
DataIterCreateFunction::InitRcppModule();
KVStore::InitRcppModule();
Exporter::InitRcppModule();
// IM2REC::InitRcppModule();
}
- Now open the Windows CMD with admin rights and change the directory to the
mxnet
folder(cloned repository). Then use the following commands to build R package:
echo import(Rcpp) > R-package\NAMESPACE
echo import(methods) >> R-package\NAMESPACE
Rscript -e "install.packages('devtools', repos = 'https://cloud.r-project.org')"
cd R-package
Rscript -e "library(devtools); library(methods); options(repos=c(CRAN='https://cloud.r-project.org')); install_deps(dependencies = TRUE)"
cd ..
R CMD INSTALL --no-multiarch R-package
Rscript -e "require(mxnet); mxnet:::mxnet.export('R-package')"
rm R-package/NAMESPACE
Rscript -e "require(devtools); install_version('roxygen2', version = '5.0.1', repos = 'https://cloud.r-project.org/', quiet = TRUE)"
Rscript -e "require(roxygen2); roxygen2::roxygenise('R-package')"
R CMD INSTALL --build --no-multiarch R-package
Installing MXNet on a Computer with a GPU Processor¶
To install MXNet on a computer with a GPU processor, choose from two options:
- Use the prebuilt binary package
- Build the library from source code
However, a few dependencies remain for both options. You will need the following:
- Install Nvidia-drivers if not installed. Latest driver based on your system configuration is recommended.
- Install Microsoft Visual Studio (VS2015 or VS2017 is required by CUDA)
- Install NVidia CUDA Toolkit(cu92 is recommended though we support cu80, cu90, cu91 and cu92)
- Download and install CuDNN (to provide a Deep Neural Network library). Latest version recommended.
Note: A pre-requisite to above softwares is Nvidia-drivers which we assume is installed.
Installing MXNet with the Prebuilt Binary Package(GPU)¶
For Windows users, MXNet provides prebuilt binary packages. You can install the package directly in the R console after you have the above software installed.
For GPU package:
cran <- getOption("repos")
cran["dmlc"] <- "https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/R/CRAN/GPU/cu92"
options(repos = cran)
install.packages("mxnet")
Change cu92 to cu80, cu90 or cu91 based on your CUDA toolkit version. Currently, MXNet supports these versions of CUDA.
Building MXNet from Source Code(GPU)¶
After you have installed above software, continue with the following steps to build MXNet-R:
- Clone the MXNet github repo.
git clone --recursive https://github.com/apache/incubator-mxnet
The --recursive
is to clone all the submodules used by MXNet. You will be editing the "/mxnet/R-package"
folder.
- Download prebuilt GPU-enabled MXNet libraries for Windows from https://github.com/yajiedesign/mxnet/releases. You will need
mxnet_x64_vc14_gpu_cuX.7z
andprebuildbase_win10_x64_vc14.7z
where X stands for your CUDA toolkit version - Create a folder called
R-package/inst/libs/x64
. MXNet supports only 64-bit operating systems, so you need the x64 folder. - Copy the following shared libraries (.dll files) into the
R-package/inst/libs/x64
folder:
libgcc_s_seh-1.dll
libgfortran-3.dll
libmxnet.dll
libmxnet.lib
libopenblas.dll
libquadmath-0.dll
mxnet.dll
unzip.exe
unzip32.dll
vcomp140.dll
wget.exe
These dlls can be found in prebuildbase_win10_x64_vc14/3rdparty
, mxnet_x64_vc14_gpu_cuX/build
, mxnet_x64_vc14_gpu_cuX/lib
.
- Copy the header files from
dmlc
,mxnet
,mxshadow
andnnvm
from mxnet_x64_vc14_gpuX/include and mxnet_x64_vc14_gpuX/nvnm/include into./R-package/inst/include
. It should look like:
./R-package/inst
└── include
├── dmlc
├── mxnet
├── mshadow
└── nnvm
- Make sure that R executable is added to your
PATH
in the environment variables. Running thewhere R
command at the command prompt should return the location. - Also make sure that Rtools is installed and the executable is added to your
PATH
in the environment variables. - Temporary patch - im2rec currently results in crashes during the build. Remove the im2rec.h and im2rec.cc files in R-package/src/ from cloned repository and comment out the two im2rec lines in R-package/src/mxnet.cc as shown below.
#include "./kvstore.h"
#include "./export.h"
//#include "./im2rec.h"
......
......
DataIterCreateFunction::InitRcppModule();
KVStore::InitRcppModule();
Exporter::InitRcppModule();
// IM2REC::InitRcppModule();
}
- Now open the Windows CMD with admin rights and change the directory to the
mxnet
folder(cloned repository). Then use the following commands to build R package:
echo import(Rcpp) > R-package\NAMESPACE
echo import(methods) >> R-package\NAMESPACE
Rscript -e "install.packages('devtools', repos = 'https://cloud.r-project.org')"
cd R-package
Rscript -e "library(devtools); library(methods); options(repos=c(CRAN='https://cloud.r-project.org')); install_deps(dependencies = TRUE)"
cd ..
R CMD INSTALL --no-multiarch R-package
Rscript -e "require(mxnet); mxnet:::mxnet.export('R-package')"
rm R-package/NAMESPACE
Rscript -e "require(devtools); install_version('roxygen2', version = '5.0.1', repos = 'https://cloud.r-project.org/', quiet = TRUE)"
Rscript -e "require(roxygen2); roxygen2::roxygenise('R-package')"
R CMD INSTALL --build --no-multiarch R-package
Note: To maximize its portability, the MXNet library is built with the Rcpp end. Computers running Windows need MSVC (Microsoft Visual C++) to handle CUDA toolchain compatibilities.
Install the MXNet Package for Julia¶
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.
Installing the MXNet Package for Scala¶
Scala-MXNet is not yet available for Windows.