Apache MXNet - 安装 MXNet


要开始使用 MXNet,我们需要做的第一件事就是在我们的计算机上安装它。 Apache MXNet 几乎可以在所有可用平台上运行,包括 Windows、Mac 和 Linux。

Linux 操作系统

我们可以通过以下方式在 Linux 操作系统上安装 MXNet −

图形处理单元 (GPU)

在这里,当我们使用 GPU 进行处理时,我们将使用各种方法,即 Pip、Docker 和 Source 来安装 MXNet −

通过使用 Pip 方法

您可以使用以下命令在您的 Linus 操作系统上安装 MXNet −

pip install mxnet

Apache MXNet 还提供 MKL pip 包,在英特尔硬件上运行时速度更快。例如,此处的 mxnet-cu101mkl 表示 −

  • 该软件包使用 CUDA/cuDNN 构建

  • 该软件包启用了 MKL-DNN

  • CUDA 版本为 10.1

对于其他选项,您还可以参考 https://pypi.org/project/mxnet/

通过使用 Docker

您可以在 DockerHub 上找到带有 MXNet 的 docker 镜像,网址为 https://hub.docker.com/u/mxnet 让我们查看以下步骤,使用带 GPU 的 Docker 安装 MXNet −

步骤 1− 首先,按照 https://docs.docker.com/engine/install/ubuntu/ 提供的 docker 安装说明进行操作。我们需要在我们的机器上安装 Docker。

步骤 2− 为了能够从 docker 容器中使用 GPU,接下来我们需要安装 nvidia-docker-plugin。您可以按照 https://github.com/NVIDIA/nvidia-docker/wiki 中提供的安装说明进行操作。

步骤 3− 通过使用以下命令,您可以拉取 MXNet docker 镜像 −

$ sudo docker pull mxnet/python:gpu

现在,为了查看 mxnet/python docker 镜像拉取是否成功,我们可以列出 docker 镜像,如下所示 −

$ sudo docker images

为了使用 MXNet 实现最快的推理速度,建议使用带有 Intel MKL-DNN 的最新 MXNet。检查以下命令 −

$ sudo docker pull mxnet/python:1.3.0_cpu_mkl
$ sudo docker images

从源代码

要使用 GPU 从源代码构建 MXNet 共享库,首先我们需要设置 CUDA 和 cuDNN 的环境,如下所示−

  • 下载并安装 CUDA 工具包,这里建议使用 CUDA 9.2。

  • 接下来下载 cuDNN 7.1.4。

  • 现在我们需要解压文件。还需要切换到 cuDNN 根目录。还要将标头和库移动到本地 CUDA 工具包文件夹,如下所示 −

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

设置 CUDA 和 cuDNN 的环境后,请按照以下步骤从源代码构建 MXNet 共享库 −

步骤 1− 首先,我们需要安装必备软件包。Ubuntu 16.04 或更高版本需要这些依赖项。

sudo apt-get update
sudo apt-get install -y build-essential git ninja-build ccache libopenblas-dev
libopencv-dev cmake

步骤 2− 在此步骤中,我们将下载 MXNet 源代码并进行配置。首先让我们使用以下命令克隆存储库−

git clone –recursive https://github.com/apache/incubator-mxnet.git mxnet
cd mxnet
cp config/linux_gpu.cmake #for build with CUDA

步骤 3− 通过使用以下命令,您可以构建 MXNet 核心共享库−

rm -rf build
mkdir -p build && cd build
cmake -GNinja ..
cmake --build .

上述步骤中有两个重点−

如果要构建 Debug 版本,请指定如下−

cmake -DCMAKE_BUILD_TYPE=Debug -GNinja ..

要设置并行编译作业的数量,请指定如下−

cmake --build . --parallel N

成功构建 MXNet 核心共享库后,在 MXNet 项目根目录 中的 build 文件夹中,您将找到安装语言绑定(可选)所需的 libmxnet.so

中央处理单元 (CPU)

在这里,当我们使用 CPU 进行处理时,我们将使用各种方法,即 Pip、Docker 和 Source 来安装 MXNet −

通过使用 Pip 方法

您可以使用以下命令在您的 Linus OS 上安装 MXNet−

pip install mxnet

Apache MXNet 还提供支持 MKL-DNN 的 pip 包,在英特尔硬件上运行时速度更快。

pip install mxnet-mkl

使用 Docker

您可以在 DockerHub 上找到带有 MXNet 的 docker 镜像,可在 https://hub.docker.com/u/mxnet 上找到。让我们查看以下步骤,使用带 CPU 的 Docker 安装 MXNet −

步骤 1− 首先,按照 docker 安装说明操作,可在 https://docs.docker.com/engine/install/ubuntu/ 上找到。我们需要在我们的机器上安装 Docker。

步骤 2−通过使用以下命令,您可以拉取 MXNet docker 镜像:

$ sudo docker pull mxnet/python

现在,为了查看 mxnet/python docker 镜像拉取是否成功,我们可以按如下方式列出 docker 镜像 −

$ sudo docker images

为了使用 MXNet 实现最快的推理速度,建议使用带有 Intel MKL-DNN 的最新 MXNet。

检查以下命令 −

$ sudo docker pull mxnet/python:1.3.0_cpu_mkl
$ sudo docker images

从源代码

要使用 CPU 从源代码构建 MXNet 共享库,请按照以下步骤操作−

步骤 1− 首先,我们需要安装必备软件包。Ubuntu 16.04 或更高版本需要这些依赖项。

sudo apt-get update

sudo apt-get install -y build-essential git ninja-build ccache libopenblas-dev libopencv-dev cmake

步骤 2− 在此步骤中,我们将下载 MXNet 源代码并进行配置。首先,让我们使用以下命令克隆存储库:

git clone –recursive https://github.com/apache/incubator-mxnet.git mxnet

cd mxnet
cp config/linux.cmake config.cmake

步骤 3−通过使用以下命令,您可以构建MXNet核心共享库:

rm -rf build
mkdir -p build && cd build
cmake -GNinja ..
cmake --build .

上述步骤有两个要点如下−

如果要构建Debug版本,请指定如下:

cmake -DCMAKE_BUILD_TYPE=Debug -GNinja ..

要设置并行编译作业的数量,请指定以下内容 −

cmake --build . --parallel N

成功构建 MXNet 核心共享库后,在 MXNet 项目根目录中的 build 文件夹中,您将找到 libmxnet.so,这是安装语言绑定(可选)所必需的。

MacOS

我们可以通过以下方式在 MacOS 上安装 MXNet−

图形处理单元 (GPU)

如果您计划在 MacOS 上使用 GPU 构建 MXNet,则没有可用的 Pip 和 Docker 方法。在这种情况下,唯一的方法是从源代码构建它。

从源代码

要从源代码构建带有 GPU 的 MXNet 共享库,首先我们需要为 CUDA 和 cuDNN 设置环境。您需要遵循 NVIDIA CUDA 安装指南(可从 https://docs.nvidia.com 获取)和 cuDNN 安装指南(可从 https://docs.nvidia.com/deeplearning 获取,适用于 mac OS)。

请注意,CUDA 于 2019 年停止支持 macOS。事实上,未来版本的 CUDA 也可能不支持 macOS。

设置 CUDA 和 cuDNN 的环境后,请按照下面给出的步骤在 OS X (Mac) 上从源代码安装 MXNet−

步骤 1− 由于我们需要在 OS x 上安装一些依赖项,因此首先,我们需要安装先决条件包。

xcode-select –-install #安装 OS X 开发人员工具

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" #安装 Homebrew

brew install cmake ninja ccache opencv #安装依赖项

我们也可以不使用 OpenCV 来构建 MXNet,因为 opencv 是一个可选依赖项。

步骤 2−在此步骤中,我们将下载 MXNet 源代码并进行配置。首先,让我们使用以下命令克隆存储库−

git clone –-recursive https://github.com/apache/incubator-mxnet.git mxnet

cd mxnet
cp config/linux.cmake config.cmake

对于启用 GPU 的版本,必须首先安装 CUDA 依赖项,因为当尝试在没有 GPU 的机器上构建启用 GPU 的版本时,MXNet 构建无法自动检测您的 GPU 架构。在这种情况下,MXNet 将针对所有可用的 GPU 架构。

步骤 3−通过使用以下命令,您可以构建MXNet核心共享库−

rm -rf build
mkdir -p build && cd build
cmake -GNinja ..
cmake --build .

上述步骤的两个要点如下−

如果要构建Debug版本,请指定如下−

cmake -DCMAKE_BUILD_TYPE=Debug -GNinja ..

要设置并行编译作业的数量,请指定以下内容:

cmake --build . --parallel N

成功构建 MXNet 核心共享库后,在 MXNet 项目根目录 中的 build 文件夹中,您将找到 libmxnet.dylib,它是安装语言绑定(可选)所必需的。

中央处理单元 (CPU)

在这里,当我们使用 CPU 进行处理时,我们将使用各种方法,即 Pip、Docker 和 Source 来安装 MXNet−

通过使用 Pip 方法

您可以使用以下命令在您的 Linus OS 上安装 MXNet

pip install mxnet

通过使用 Docker

您可以在 DockerHub 上找到带有 MXNet 的 docker 镜像,可在 https://hub.docker.com/u/mxnet。让我们查看以下步骤,使用带 CPU 的 Docker 安装 MXNet−

步骤 1− 首先,按照 https://docs.docker.com/docker-for-mac 提供的 docker 安装说明,我们需要在我们的机器上安装 Docker。

步骤 2−通过使用以下命令,您可以拉取 MXNet docker 镜像−

$ docker pull mxnet/python

现在,为了查看 mxnet/python docker 镜像拉取是否成功,我们可以按如下方式列出 docker 镜像−

$ docker images

为了使用 MXNet 实现最快的推理速度,建议使用带有 Intel MKL-DNN 的最新 MXNet。检查以下命令−

$ docker pull mxnet/python:1.3.0_cpu_mkl
$ docker images

从源代码

按照下面给出的步骤在 OS X (Mac) 上从源代码安装 MXNet−

步骤 1−由于我们需要一些 OS x 依赖项,因此首先,我们需要安装必备软件包。

xcode-select –-install #安装 OS X 开发人员工具
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" #安装 Homebrew
brew install cmake ninja ccache opencv #安装依赖项

我们也可以在不使用 OpenCV 的情况下构建 MXNet,因为 opencv 是一个可选依赖项。

第 2 步− 在此步骤中,我们将下载 MXNet 源代码并进行配置。首先,让我们使用以下命令克隆存储库−

git clone –-recursive https://github.com/apache/incubator-mxnet.git mxnet

cd mxnet

cp config/linux.cmake config.cmake

步骤 3− 通过使用以下命令,您可以构建 MXNet 核心共享库:

rm -rf build
mkdir -p build && cd build
cmake -GNinja ..
cmake --build .

上述步骤中有两个要点如下−

如果要构建 Debug 版本,请指定如下−

cmake -DCMAKE_BUILD_TYPE=Debug -GNinja ..

要设置并行编译作业的数量,请指定以下内容−

cmake --build . --parallel N

成功构建 MXNet 核心共享库后,在 MXNet 项目根目录 中的 build 文件夹中,您将找到 libmxnet.dylib,这是安装语言绑定(可选)所必需的。

Windows 操作系统

要在 Windows 上安装 MXNet,以下是先决条件−

最低系统要求

  • Windows 7、10、Server 2012 R2 或 Server 2016

  • Visual Studio 2015 或 2017(任何类型)

  • Python 2.7 或 3.6

  • pip

推荐的系统要求

  • Windows 10、Server 2012 R2 或 Server 2016

  • Visual Studio 2017

  • 至少一个支持 NVIDIA CUDA 的 GPU

  • 支持 MKL 的 CPU:Intel® Xeon® 处理器、Intel® Core™ 处理器系列、Intel Atom® 处理器或 Intel® Xeon Phi™ 处理器

  • Python 2.7 或 3.6

  • pip

图形处理单元 (GPU)

使用 Pip 方法−

如果您计划使用 NVIDIA GPU 在 Windows 上构建 MXNet,则有两种使用 Python 包安装支持 CUDA 的 MXNet−

使用CUDA 支持

下面是使用 CUDA 设置 MXNet 的步骤。

步骤 1− 首先安装 Microsoft Visual Studio 2017 或 Microsoft Visual Studio 2015。

步骤 2− 接下来,下载并安装 NVIDIA CUDA。建议使用 CUDA 版本 9.2 或 9.0,因为过去已发现 CUDA 9.1 存在一些问题。

步骤 3− 现在,下载并安装 NVIDIA_CUDA_DNN。

步骤 4−最后,使用以下 pip 命令,安装带有 CUDA 的 MXNet−

pip install mxnet-cu92

安装带有 CUDA 和 MKL 支持的产品

下面是安装带有 CUDA 和 MKL 的 MXNet 的步骤。

步骤 1− 首先安装 Microsoft Visual Studio 2017 或 Microsoft Visual Studio 2015。

步骤 2− 接下来,下载并安装英特尔 MKL

步骤 3− 现在,下载并安装 NVIDIA CUDA。

步骤 4− 现在,下载并安装 NVIDIA_CUDA_DNN。

步骤 5−最后,使用以下 pip 命令,使用 MKL 安装 MXNet。

pip install mxnet-cu92mkl

从源代码

要使用 GPU 从源代码构建 MXNet 核心库,我们有以下两个选项−

选项 1− 使用 Microsoft Visual Studio 2017 构建

为了使用 Microsoft Visual Studio 2017 自行构建和安装 MXNet,您需要以下依赖项。

安装/更新 Microsoft Visual Studio。

  • 如果您的计算机上尚未安装 Microsoft Visual Studio,请先下载并安装它。

  • 它将提示您安装 Git。也安装它。

  • 如果您的机器上已经安装了 Microsoft Visual Studio,但您想要更新它,请继续下一步以修改您的安装。在这里,您还将有机会更新 Microsoft Visual Studio。

按照 https://docs.microsoft.com/en-us 上提供的打开 Visual Studio 安装程序的说明来修改各个组件。

在 Visual Studio 安装程序应用程序中,根据需要进行更新。之后查找并检查 VC++ 2017 版本 15.4 v14.11 工具集,然后单击 修改

现在使用以下命令将 Microsoft VS2017 的版本更改为 v14.11−

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" -vcvars_ver=14.11

接下来,您需要下载并安装 CMake,可在 https://cmake.org/download/ 下载。建议使用 CMake v3.12.2,可在 https://cmake.org/download/,因为它已使用 MXNet 进行了测试。

现在,下载并运行 https://sourceforge.net/projects/opencvlibrary/ 提供的 OpenCV 包,它将解压缩几个文件。是否要将它们放在另一个目录中取决于您。在这里,我们将使用路径 C:\utils(mkdir C:\utils) 作为默认路径。

接下来,我们需要设置环境变量 OpenCV_DIR 以指向我们刚刚解压缩的 OpenCV 构建目录。为此,请打开命令提示符并输入set OpenCV_DIR=C:\utils\opencv\build

重要的一点是,如果您没有安装英特尔 MKL(数学核心库),您可以安装它。

您可以使用的另一个开源软件包是OpenBLAS。此处进一步说明,我们假设您使用的是 OpenBLAS

因此,下载 OpenBlas 包,该包可在 https://sourceforge.net 上找到,然后解压文件,将其重命名为 OpenBLAS 并将其放在 C:\utils 下。

接下来,我们需要设置环境变量 OpenBLAS_HOME 以指向包含 includelib 目录的 OpenBLAS 目录。为此,请打开命令提示符并输入set OpenBLAS_HOME=C:\utils\OpenBLAS

现在,下载并安装 CUDA,网址为https://developer.nvidia.com。请注意,如果您已经拥有 CUDA,然后安装了 Microsoft VS2017,则需要立即重新安装 CUDA,以便获取用于 Microsoft VS2017 集成的 CUDA 工具包组件。

接下来,您需要下载并安装 cuDNN。

接下来,您还需要下载并安装 git,它位于 https://gitforwindows.org/

安装所有必需的依赖项后,请按照以下步骤构建 MXNet 源代码−

步骤 1− 在 Windows 中打开命令提示符。

步骤 2− 现在,使用以下命令从 GitHub 下载 MXNet 源代码:

cd C:\

git clone https://github.com/apache/incubator-mxnet.git --recursive

步骤 3− 接下来,验证以下内容−

DCUDNN_INCLUDE 和 DCUDNN_LIBRARY 环境变量指向 CUDA 安装位置的 include 文件夹和 cudnn.lib 文件

C:\incubator-mxnet 是您在上一步中刚刚克隆的源代码的位置。

步骤 4− 接下来,使用以下命令创建一个构建目录并转到该目录,例如−

mkdir C:\incubator-mxnet\build
cd C:\incubator-mxnet\build

步骤 5−现在,使用 cmake 编译 MXNet 源代码,如下所示−

cmake -G "Visual Studio 15 2017 Win64" -T cuda=9.2,host=x64 -DUSE_CUDA=1 -DUSE_CUDNN=1 -DUSE_NVRTC=1 -DUSE_OPENCV=1 -DUSE_OPENMP=1 -DUSE_BLAS=open -DUSE_LAPACK=1 -DUSE_DIST_KVSTORE=0 -DCUDA_ARCH_LIST=Common -DCUDA_TOOLSET=9.2 -DCUDNN_INCLUDE=C:\cuda\include -DCUDNN_LIBRARY=C:\cuda\lib\x64\cudnn.lib "C:\incubator-mxnet"

步骤 6− CMake 成功完成后,使用以下命令编译 MXNet 源代码−

msbuild mxnet.sln /p:Configuration=Release;Platform=x64 /maxcpucount

选项 2:使用 Microsoft Visual Studio 2015 构建

为了使用 Microsoft Visual Studio 2015 自行构建和安装 MXNet,您需要以下依赖项。

安装/更新 Microsoft Visual Studio 2015。从源代码构建 MXnet 的最低要求是 Microsoft Visual Studio 2015 的更新 3。您可以使用工具 -> 扩展和更新... | 产品更新菜单来升级它。

接下来,您需要下载并安装 CMake,可在 https://cmake.org/download/ 下载。建议使用 https://cmake.org/download/ 上的 CMake v3.12.2,因为它已使用 MXNet 进行测试。

现在,下载并运行 https://excellmedia.dl.sourceforge.net 上的 OpenCV 包,它将解压多个文件。是否将它们放在其他目录中取决于您。

接下来,我们需要设置环境变量 OpenCV_DIR 以指向我们刚刚解压的 OpenCV 构建目录。为此,打开命令提示符并输入 set OpenCV_DIR=C:\opencv\build\x64\vc14\bin

重要的一点是,如果您没有安装英特尔 MKL(数学内核库),您可以安装它。

您可以使用的另一个开源软件包是 OpenBLAS。此处进一步说明,我们假设您使用的是 OpenBLAS

因此,请从 https://excellmedia.dl.sourceforge.net 下载 OpenBLAS 包并解压文件,将其重命名为 OpenBLAS 并将其放在 C:\utils 下。

接下来,我们需要设置环境变量 OpenBLAS_HOME 以指向包含 include 和 lib 目录的 OpenBLAS 目录。您可以在 C:\Program files (x86)\OpenBLAS\

中找到该目录

请注意,如果您已经拥有 CUDA,然后安装了 Microsoft VS2015,则需要立即重新安装 CUDA,以便获取用于 Microsoft VS2017 集成的 CUDA 工具包组件。

接下来,您需要下载并安装 cuDNN。

现在,我们需要设置环境变量 CUDACXX 以指向 CUDA 编译器(例如 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin vcc.exe)。

同样,我们还需要设置环境变量 CUDNN_ROOT 以指向包含 include、libbin 目录的 cuDNN 目录(例如 C:\Downloads\cudnn-9.1-windows7-x64-v7\cuda)。

安装完所有必需的依赖项后,请按照以下步骤构建 MXNet 源代码 −

步骤 1− 首先,从 GitHub 下载 MXNet 源代码 −

cd C:\
git clone https://github.com/apache/incubator-mxnet.git --recursive

步骤 2− 接下来,使用 CMake 在 ./build 中创建 Visual Studio。

步骤 3− 现在,在 Visual Studio 中,我们需要打开解决方案文件 .sln 并对其进行编译。这些命令将在 ./build/Release/ 或 ./build/Debug 文件夹中生成一个名为 mxnet.dll 的库

步骤 4− CMake 成功完成后,使用以下命令编译 MXNet 源代码

msbuild mxnet.sln /p:Configuration=Release;Platform=x64 /maxcpucount

中央处理器 (CPU)

在这里,我们将使用各种方法,即 Pip、Docker 和 Source 来安装使用 CPU 进行处理的 MXNet−

使用 Pip 方法

如果您计划在具有 CPU 的 Windows 上构建 MXNet,则有两种使用 Python 包安装 MXNet 的选项−

使用 CPU 安装

使用以下命令使用 Python 安装具有 CPU 的 MXNet−

pip install mxnet

使用 Intel CPU 安装

如上所述,MXNet 对 Intel MKL 以及 MKL-DNN 进行了实验性支持。使用以下命令使用 Python 安装带有 Intel CPU 的 MXNet−

pip install mxnet-mkl

通过使用 Docker

您可以在 DockerHub 找到带有 MXNet 的 docker 镜像,网址为 https://hub.docker.com/u/mxnet 让我们查看以下步骤,使用带有 CPU 的 Docker 安装 MXNet−

步骤 1−首先,按照 Docker 安装说明进行操作,该说明可在 https://docs.docker.com/docker-for-mac/install 中阅读。我们需要在我们的机器上安装 Docker。

步骤 2−通过使用以下命令,您可以拉取 MXNet docker 镜像−

$ docker pull mxnet/python

现在,为了查看 mxnet/python docker 镜像拉取是否成功,我们可以列出以下 docker 镜像−

$ docker images

为了使用 MXNet 实现最快的推理速度,建议使用带有 Intel MKL-DNN 的最新 MXNet。

检查以下命令−

$ docker pull mxnet/python:1.3.0_cpu_mkl
$ docker images

在云和设备上安装 MXNet

本节重点介绍如何在云和设备上安装 Apache MXNet。让我们首先了解如何在云上安装 MXNet。

在云上安装 MXNet

您还可以在多个支持图形处理单元 (GPU)的云提供商上获取 Apache MXNet。您可以找到以下两种其他支持−

  • GPU/CPU 混合支持可扩展推理等用例。
  • 使用 AWS Elastic Inference 的阶乘 GPU 支持。

以下是使用不同的虚拟机为 Apache MXNet 提供 GPU 支持的云提供商−

阿里巴巴控制台

您可以使用阿里巴巴控制台在 https://docs.nvidia.com/ngc 上创建 NVIDIA GPU 云虚拟机 (VM),并使用 Apache MXNet。

亚马逊网络服务

它还提供 GPU 支持并为 Apache 提供以下服务MXNet−

Amazon SageMaker

它管理 Apache MXNet 模型的训练和部署。

AWS Deep Learning AMI

它为 Python 2 和 Python 3 提供预安装的 Conda 环境,其中包含 Apache MXNet、CUDA、cuDNN、MKL-DNN 和 AWS Elastic Inference。

AWS 上的动态训练

它为实验性手动 EC2 设置以及半自动化 CloudFormation 设置提供培训。

您可以将 https://aws.amazon.com 上提供的 NVIDIA VM 与 Amazon Web Services 结合使用。

Google Cloud Platform

Google 还提供 NVIDIA GPU 云映像,可在 https://console.cloud.google.com 上获取,以与 Apache 配合使用MXNet。

Microsoft Azure

Microsoft Azure Marketplace 还提供 NVIDIA GPU 云映像,可在 https://azuremarketplace.microsoft.com 上获取,以与 Apache MXNet 配合使用。

Oracle Cloud

Oracle 还提供 NVIDIA GPU 云映像,可在 https://docs.cloud.oracle.com 上获取,以与 Apache MXNet 配合使用。

中央处理单元(CPU)

Apache MXNet 适用于每个云提供商的仅 CPU 实例。有多种安装方法,例如−

  • Python pip 安装说明。

  • Docker 说明。

  • 预装选项,如 Amazon Web Services,提供 AWS Deep Learning AMI(已预装了 Python 2 和 Python 3 的 Conda 环境,其中包含 MXNet 和 MKL-DNN)。

在设备上安装 MXNet

让我们学习如何在设备上安装 MXNet。

Raspberry Pi

您还可以在 Raspberry Pi 3B 设备上运行 Apache MXNet,因为 MXNet 还支持基于 Respbian ARM 的操作系统。为了在 Raspberry Pi3 上顺利运行 MXNet,建议使用具有 1 GB 以上 RAM 的设备以及至少有 4GB 可用空间的 SD 卡。

以下是您可以为 Raspberry Pi 构建 MXNet 并为库安装 Python 绑定的方法−

快速安装

预构建的 Python 轮子可用于带有 Stretch 的 Raspberry Pi 3B 上,以便快速安装。此方法的一个重要问题是,我们需要安装几个依赖项才能使 Apache MXNet 正常工作。

Docker 安装

您可以按照 docker 安装说明(位于 https://docs.docker.com/engine/install/ubuntu/)在您的机器上安装 Docker。为此,我们也可以安装和使用社区版 (CE)。

本机构建(从源代码)

为了从源代码安装 MXNet,我们需要遵循以下两个步骤−

步骤 1

从 Apache MXNet C++ 源代码构建共享库

要在 Raspberry 版本 Wheezy 及更高版本上构建共享库,我们需要以下依赖项:

  • Git− 需要从 GitHub 提取代码。

  • Libblas− 线性代数运算需要它。

  • Libopencv− 计算机视觉相关操作需要它。但是,如果您想节省 RAM 和磁盘空间,它是可选的。

  • C++ 编译器− 它是编译和构建 MXNet 源代码所必需的。以下是支持 C++ 11 的编译器−

    • G++ (4.8 或更高版本)

    • Clang(3.9-6)

使用以下命令安装上述依赖项−

sudo apt-get update
sudo apt-get -y install git cmake ninja-build build-essential g++-4.9 c++-4.9 liblapack*
libblas* libopencv*
libopenblas* python3-dev python-dev virtualenv

接下来,我们需要克隆 MXNet 源代码存储库。为此,请在您的主目录中使用以下 git 命令−

git clone https://github.com/apache/incubator-mxnet.git --recursive

cd incubator-mxnet

现在,借助以下命令,构建共享库:

mkdir -p build && cd build
cmake \
-DUSE_SSE=OFF \
-DUSE_CUDA=OFF \
-DUSE_OPENCV=ON \
-DUSE_OPENMP=ON \
-DUSE_MKL_IF_AVAILABLE=OFF \
-DUSE_SIGNAL_HANDLER=ON \

-DCMAKE_BUILD_TYPE=Release \
-GNinja ..
ninja -j$(nproc)

执行上述命令后,它将启动构建过程,该过程需要几个小时才能完成。您将在构建目录中获得一个名为 libmxnet.so 的文件。

步骤 2

安装 Apache MXNet 支持的语言特定包

在此步骤中,我们将安装 MXNet Pythin 绑定。为此,我们需要在 MXNet 目录中运行以下命令−

cd python
pip install --upgrade pip
pip install -e .

或者,使用以下命令,您还可以创建一个可使用 pip

安装的 whl 包
ci/docker/runtime_functions.sh build_wheel python/ $(realpath build)

NVIDIA Jetson 设备

您还可以在 NVIDIA Jetson 设备(例如 TX2Nano)上运行 Apache MXNet,因为 MXNet 也支持基于 Ubuntu Arch64 的操作系统。为了在 NVIDIA Jetson 设备上顺利运行 MXNet,必须在 Jetson 设备上安装 CUDA。

以下是您可以为 NVIDIA Jetson 设备构建 MXNet 的方法:

  • 通过使用 Jetson MXNet pip wheel 进行 Python 开发

  • 从源代码

但是,在使用上述任何一种方式构建 MXNet 之前,您需要在 Jetson 设备上安装以下依赖项−

Python 依赖项

为了使用 Python API,我们需要以下依赖项 −

sudo apt update
sudo apt -y install \
   build-essential \
   git \
   graphviz \
   libatlas-base-dev \
   libopencv-dev \
   python-pip
sudo pip install --upgrade \
   pip \
   setuptools
sudo pip install \
   graphviz==0.8.4 \
   jupyter \
   numpy==1.15.2

克隆 MXNet 源代码存储库

通过在主目录中使用以下 git 命令,克隆 MXNet 源代码存储库−

git clone --recursive https://github.com/apache/incubator-mxnet.git mxnet

设置环境变量

在主目录中的 .profile 文件中添加以下内容−

export PATH=/usr/local/cuda/bin:$PATH
export MXNET_HOME=$HOME/mxnet/
export PYTHONPATH=$MXNET_HOME/python:$PYTHONPATH

现在,使用以下命令立即应用更改−

source .profile

配置 CUDA

在使用 nvcc 配置 CUDA 之前,您需要检查正在运行的 CUDA 版本−

nvcc --version

假设您的设备上安装了多个 CUDA 版本或计算机并且想要切换 CUDA 版本,请使用以下命令并将符号链接替换为所需版本−

sudo rm /usr/local/cuda
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda

上述命令将切换到 CUDA 10.0,该版本预装在 NVIDIA Jetson 设备 Nano 上。

完成上述先决条件后,您现在可以在 NVIDIA Jetson 设备上安装 MXNet。因此,让我们了解您可以借助哪些方式安装 MXNet−

通过使用 Jetson MXNet pip wheel 进行 Python 开发−如果您想使用准备好的 Python wheel,请将以下内容下载到您的 Jetson 并运行它−

本机构建(来自源代码)

为了从源代码安装 MXNet,我们需要遵循以下两个步骤步骤−

步骤 1

从 Apache MXNet C++ 源代码构建共享库

要从 Apache MXNet C++ 源代码构建共享库,您可以使用 Docker 方法或手动执行−

Docker 方法

在此方法中,您首先需要安装 Docker 并能够在没有 sudo 的情况下运行它(这在前面的步骤中也有解释)。完成后,运行以下命令通过 Docker 执行交叉编译−

$MXNET_HOME/ci/build.py -p jetson

手动

在此方法中,您需要编辑 Makefile(使用以下命令)以安装带有 CUDA 绑定的 MXNet,以利用 NVIDIA Jetson 设备上的图形处理单元 (GPU):

cp $MXNET_HOME/make/crosscompile.jetson.mk config.mk

编辑 Makefile 后,您需要编辑 config.mk 文件以对 NVIDIA Jetson 设备进行一些其他更改。

为此,请更新以下设置−

  • 更新 CUDA 路径:USE_CUDA_PATH = /usr/local/cuda

  • 将 -gencode arch=compute-63, code=sm_62 添加到 CUDA_ARCH 设置。

  • 更新 NVCC 设置:NVCCFLAGS := -m64

  • 打开 OpenCV:USE_OPENCV = 1

现在为了确保 MXNet 使用 Pascal 的硬件级低精度加速构建,我们需要按如下方式编辑 Mshadow Makefile−

MSHADOW_CFLAGS += -DMSHADOW_USE_PASCAL=1

最后,借助以下命令,您可以构建完整的 Apache MXNet 库−

cd $MXNET_HOME
make -j $(nproc)

执行上述命令后,将启动构建过程,需要几个小时才能完成。您将在 mxnet/lib 目录 中获得一个名为 libmxnet.so 的文件。

步骤 2

安装 Apache MXNet Python 绑定

在此步骤中,我们将安装 MXNet Python 绑定。为此,我们需要在 MXNet 目录中运行以下命令−

cd $MXNET_HOME/python
sudo pip install -e .

完成上述步骤后,您现在可以在 NVIDIA Jetson 设备 TX2 或 Nano 上运行 MXNet 了。可以使用以下命令进行验证−

import mxnet
mxnet.__version__

如果一切正常,它将返回版本号。