blob: 0fecd103113da8987b93d4bdca7b83f6ab5494b2 [file] [log] [blame] [view]
# 在 Windows 上安装 MXNet
Windows 上,你可以下载安装预编译 MXNet 包,或者自己下载,编译,然后安装。
## 编译共享库
你可以使用预编译二进制包或者通过源码自己编译共享库 - ```libmxnet.dll```
### 在 Windows 上安装预编译包
MXNet Windows 提供了一个预编译包。这个包里包含了 MXNet 库,所有的第三方依赖库,一个 Visual Studio C++ 解决方案例子,和一个 Python 安装脚本。安装预编译:
1. MXNet [Releases](https://github.com/dmlc/mxnet/releases) 表里下载最新的预编译包。这有两个版本。一个 GPU 版本(需要 CUDA 和 CUDNN v03),一个非 GPU 版本。请根据你的硬件配置选择合适的版本。哪个版本适应哪种硬件配置,更详细的信息参考 [Requirements for GPU](./setup_zh.md#使用-gpu-的要求)。
2. 将预编译包解压到文件夹中,可以给文件夹取个合适的名字,比如 ```D:\MXNet```
3. 打开文件夹,双击 ```setupenv.cmd``` 进行安装。它会配置好所有 MXNet 需要的所有环境变量。
4. 可以通过里面提供的 Visual Studio C++ 解决方案来测试安装是否成功。
 
这里生成了一个库名字是 ```libmxnet.dll```
### 在 Windows 上编译然后安装
如果要编译并安装 MXNet 你需要下面的依赖,安装依赖:
1. 如果没有安装 [Microsoft Visual Studio 2013](https://www.visualstudio.com/downloads/) ,下载并安装,可以下载免费的社区版。
2. 安装 [Visual C++ Compiler Nov 2013 CTP](https://www.microsoft.com/en-us/download/details.aspx?id=41151)。
3. 备份 ```C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC``` 目录下的所有文件到其他地方。
4. 拷贝 ```C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2013 CTP``` 目录(或者其他你解压zip文件的目录)下的所有文件到 ```C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC``` 目录下,并且覆盖所有文件。
5. 下载并安装 [OpenCV](http://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.0.0/opencv-3.0.0.exe/download)。
6. 解压 OpenCV 包。
7. 配置环境变量 ```OpenCV_DIR``` 指向 ```OpenCV build directory```
8. 如果你没有安装 Intel Math Kernel Library (MKL)。请下载并安装 [OpenBlas](http://sourceforge.net/projects/openblas/files/v0.2.14/)。
9. 配置环境变量 ```OpenBLAS_HOME``` 指向 ```OpenBLAS``` 目录,它包含了 ```include``` ```lib```。通常你可以在 ```C:\Program files (x86)\OpenBLAS\``` 下找到这个目录。
10. 下载并安装 [CuDNN](https://developer.nvidia.com/cudnn)。你需要注册 NVIDIA community 用户才能拿到下载链接。
安装完所有的以来后,编译 MXNet 源码:
1. 从 [GitHub](https://github.com/dmlc/mxnet) 上下载源码。
2. 用 [CMake](https://cmake.org/) 在 ```./build``` 下生成一个 Visual Studio 解决方案。
3. 用 Visual Studio 打开解决方案 ```.sln```,并且编译。
这些命令会在 ```./build/Release/``` 或者 ```./build/Debug``` 目录下生成一个库名字叫 ```mxnet.dll```
 
接下来,安装 ```graphviz``` 库,通过它,我们可以用可视化网络图( visualizing network graphs)来构建 MXNet。我还将安装 [Jupyter Notebook](http://jupyter.readthedocs.io/) 用来运行 MXNet 教程和例子。
- 在 [Graphviz 下载页](http://www.graphviz.org/Download_windows.php) 下载 MSI 安装包,然后安装。
**注意** 确保 graphviz 的执行路径在 ```PATH``` 环境变量中。参考 [这里获取更详细的信息](http://stackoverflow.com/questions/35064304/runtimeerror-make-sure-the-graphviz-executables-are-on-your-systems-path-aft)
- 通过 [Anaconda for Python 2.7](https://www.continuum.io/downloads) 安装 ```Jupyter```
**注意** 不要安装 Anaconda for Python 3.5 。 MXNet 在 Python 3.5 上有一部分兼容性问题。
 
我们已经安装完了 MXNet 的核心库(core library),接下来我们要选择一种编程语言,安装语言接口包:
- [Python](#安装-python-版-mxnet)
- [R](#安装-r-版-mxnet)
- [Julia](#安装-julia-版-mxnet)
- [Scala](#安装-scala-版-mxnet)
## 安装 Python 版 MXNet
1. 在 [这里](https://www.python.org/downloads/release/python-2712/) 找到可用的 Windows 安装包,安装 ```Python``` 。
2. 在 [这里](http://scipy.org/install.html) 找到可用的 Windows 安装包,安装 ```Numpy``` 。
3. 接下来,我们为 MXNet 安装 Python 接口。你可以在 [MXNet on GitHub](https://github.com/dmlc/mxnet/tree/master/python/mxnet) 找到 Python 接口包。
```bash
# Assuming you are in root mxnet source code folder
cd python
sudo python setup.py install
```
完成!我们已经安装好了 MXNet 的 Python 接口。运行下面的命令来检车安装是否成功。
```bash
# 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.]]
```
我们实际上是用 MXNet 做了一个小的张量(tensor)计算!到这里你已经在电脑上完全配置好了 MXNet。
## 安装 R 版 MXNet
R 版 MXNet 同时支持 CPU 和 GPU.
### 安装使用 CPU 的 MXNet
从下面的两个选项里选择一个,来安装仅使用 CPU 的 MXNet
* 使用预编译二进制包
* 使用源码编译
#### 使用预编译二进制包
对于 Windows 用户,提供了一个 CPU 版本的 MXNet 包。这个包每周更新,你可以在 R 控制台里 直接输入下面的命令来安装:
```r
install.packages("drat", repos="https://cran.rstudio.com")
drat:::addRepo("dmlc")
install.packages("mxnet")
```
#### 使用源码编译
运行下面的命令来安装,编译 MXNet R 语言包的依赖:
BRun the following commands to install the MXNet dependencies and build the MXNet R package.
```r
Rscript -e "install.packages('devtools', repo = 'https://cran.rstudio.com')"
```
```bash
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 语言包,运行下面命令来安装这个语言包:
```bash
R CMD INSTALL mxnet_current_r.tar.gz
```
### 安装使用 GPU 的 MXNet
安装使用 GPU 的 MXNet 你需要如下步骤:
* Microsoft Visual Studio 2013
* NVidia CUDA 工具包
* MXNet 包
* CuDNN (提供一个深度神经网络库)
安装依赖和 R 版本 MXNet:
1. 如果没有安装 [Microsoft Visual Studio 2013](https://www.visualstudio.com/downloads/) ,下载并安装,可以下载免费的社区版。
2. 安装 [CUDA 工具包](https://developer.nvidia.com/cuda-toolkit)。CUDA 工具包依赖 Visual Studio。检查你的 GPU 和 CUDA 工具包的兼容性。更详细的安装信息参考 [CUDA Installation Guide](http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/)。
3. 以 zip 格式从 [MXNet Github 仓库](https://github.com/dmlc/mxnet/) 下载 MXNet 包,解压,你将要编辑 ```"/mxnet/R-package"``` 目录。
4. 从 [Releases](https://github.com/dmlc/mxnet/releases) 表中下载最新的 GPU-enabled MXNet 包,解压并导航到 ```/nocudnn``` 文件夹。
**注意:** 你将会拷贝这些额外的文件到 MXNet 的 R-package文件夹中。目前我们只在两个目录下工作 ```R-package/``` 和 ```nocudnn/```。
5. 下载并安装 [CuDNN](https://developer.nvidia.com/cudnn)。你需要注册 NVIDIA community 用户才能拿到下载链接。解压这个 ```.zip``` 文件,你会发现这些文件夹: ```/bin```, ```/include```, 和 ```/lib```。复制这些文件夹到 ```nocudnn/3rdparty/cudnn/```,替换原有文件。你也可以解压这个 ```.zip``` 文件到 ```nocudnn/``` 目录中。
6. 创建文件夹 ```R-package/inst/libs/x64```,MXNet只支持64位操作系统,因此需要 x64 文件夹。
7. 拷贝下面的共享库(.dll 文件)到 ```R-package/inst/libs/x64``` 目录中:
* nocudnn/lib/libmxnet.dll.
* ```nocudnn/3rdparty/``` 的四个子目录下的所有 *.dll 文件。cudnn 和 openblas .dll 在 ```/bin``` 目录下。
在 ```R-package/inst/libs/x64``` 目录下,现在应该有11个 .dll 文件。
8. 拷贝 ```nocudnn/include/``` 目录到 ```R-package/inst/``` 中。现在应该有一个文件夹叫 ```R-package/inst/include/```,它有三个子目录。
9. 确认 R 已经添加到你的 ```PATH``` 环境变量中。在命令提示符窗口运行```where R``` 命令,可以返回具体位置。
10. 运行 ```R CMD INSTALL --no-multiarch R-package```。
**注意:** 为了最大化可移植性,MXNet 库是使用 Rcpp 编译的。Windows 电脑需要 [MSVC](https://en.wikipedia.org/wiki/Visual_C%2B%2B) (Microsoft Visual C++) 来处理 CUDA 工具链的兼容性。
## 安装 Julia 版 MXNet
## (此方法是适用于 Linux 和 OS X 的,原来的英文文档可能存在错误,我只是翻译在这里,并不保证可以运行,如果谁更新了方法,可以联系我修改中文翻译hebeilijianzhang@163.com)
MXNet Julia 语言包托管在一个单独的仓库 ```MXNet.jl```。地址是 [GitHub](https://github.com/dmlc/MXNet.jl)。Julia需要与已经安装的 libmxnet 绑定。使用下面的命令来配置 ```MXNET_HOME``` 环境变量:
```bash
export MXNET_HOME=/<path to>/libmxnet
```
这里的路径(path to)指的是已经安装的 libmxnet 的根目录。也即是说你可以在 ```$MXNET_HOME/lib``` 目录下找到 ```libmxnet.so``` 文件。举例来讲 libmxnet 的根目录是 ```~``` 你应该执行如下命令:
```bash
export MXNET_HOME=/~/libmxnet
```
你也许想把这条命令添加到 ```~/.bashrc``` 文件中,如果是的话,你可以在 Julia 控制台中执行如下命令来安装 Julia 语言包。
```julia
Pkg.add("MXNet")
```
MXNet Julia 语言包更详细的安装教程可以参考 [MXNet Julia documentation](http://dmlc.ml/MXNet.jl/latest/user-guide/install/).
## 安装 Scala 版 MXNet
## (此方法是适用于 Linux 和 OS X 的,原来的英文文档可能存在错误,我只是翻译在这里,并不保证可以运行,如果谁更新了方法,可以联系我修改中文翻译hebeilijianzhang@163.com)
有两种方式安装 MXNet Scala 语言包:
* 使用预编译的二进制包
* 通过源码编译
### 使用预编译的二进制包
对于 Linux 和 OS X (Mac) 用户,MXNet 提供了编译好的二进制包,同时支持 CPU 和 GPU。可以通过 ```Maven``` 来下载使用这个包,根据你的需求修改下面 Maven 依赖里的 ```artifactId``` :
```HTML
<dependency>
<groupId>ml.dmlc.mxnet</groupId>
<artifactId>mxnet-full_<system architecture></artifactId>
<version>0.1.1</version>
</dependency>
```
比如,下载 Linux 上64位 CPU-only 版本:
```HTML
<dependency>
<groupId>ml.dmlc.mxnet</groupId>
<artifactId>mxnet-full_2.10-linux-x86_64-cpu</artifactId>
<version>0.1.1</version>
</dependency>
```
如果你的本地环境和集成包的有微小区别,比如,你使用了 openblas 包而不是 atlas 包,你最好使用 mxnet-core 包并且将编译好的本地Java库放到你的加载目录中去:
```HTML
<dependency>
<groupId>ml.dmlc.mxnet</groupId>
<artifactId>mxnet-core_2.10</artifactId>
<version>0.1.1</version>
</dependency>
```
### 通过源码编译
在编译 MXNet Scala 语言包前,你必须已经完成了 [编译共享库](#编译共享库)。然后在 MXNet 源码根目录运行下面命令来编译 Scala 语言包:
```bash
make scalapkg
```
这条命令会生成一个JAR文件,里面包含了封装(assembly),核心(core)和例子(example)。同时还会在 ```native/{your-architecture}/target directory``` 下生成一个本地库,你可以通过它配合 core 使用。
在 MXNet 根目录下运行下面的命令,可以讲 MXNet Scala 语言包安装到你本地的 Maven 仓库
```bash
make scalainstall
```
# 下一步
* [教程](http://mxnet.io/tutorials/index.html)
* [如何使用](http://mxnet.io/how_to/index.html)
* [架构设计](http://mxnet.io/architecture/index.html)