Apache MXNet - MXNet安裝



要開始使用 MXNet,首先需要在計算機上安裝它。Apache MXNet 幾乎適用於所有平臺,包括 Windows、Mac 和 Linux。

Linux作業系統

我們可以透過以下方式在 Linux 作業系統上安裝 MXNet:

圖形處理單元 (GPU)

這裡,我們將使用 Pip、Docker 和原始碼三種方法來安裝使用 GPU 進行處理的 MXNet:

使用 Pip 方法

您可以使用以下命令在您的 Linux 系統上安裝 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。讓我們看看下面使用 Docker 和 GPU 安裝 MXNet 的步驟:

步驟 1 - 首先,按照位於 https://dockerdocs.tw/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)

這裡,我們將使用 Pip、Docker 和原始碼三種方法來安裝使用 CPU 進行處理的 MXNet:

使用 Pip 方法

您可以使用以下命令在您的 Linux 系統上安裝 MXNet:

pip install mxnet

Apache MXNet 還提供啟用了 MKL-DNN 的 pip 包,在英特爾硬體上執行時速度更快。

pip install mxnet-mkl

使用 Docker

您可以在 DockerHub 上找到帶有 MXNet 的 Docker 映象,網址為 https://hub.docker.com/u/mxnet。讓我們看看下面使用 Docker 和 CPU 安裝 MXNet 的步驟:

步驟 1 - 首先,按照位於 https://dockerdocs.tw/engine/install/ubuntu/ 的 Docker 安裝說明,我們需要在我們的機器上安裝 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)

如果您計劃在帶有 GPU 的 MacOS 上構建 MXNet,則沒有可用的 Pip 和 Docker 方法。在這種情況下,唯一的方法是從原始碼構建。

從原始碼編譯

要從原始碼構建帶有 GPU 的 MXNet 共享庫,首先需要設定 CUDA 和 cuDNN 的環境。您需要按照位於 https://docs.nvidia.com 的 **NVIDIA CUDA 安裝指南** 和位於 https://docs.nvidia.com/deeplearning 的 **cuDNN 安裝指南** 進行操作(適用於 macOS)。

請注意,2019 年 CUDA 停止支援 macOS。事實上,未來的 CUDA 版本也可能不支援 macOS。

設定好 CUDA 和 cuDNN 的環境後,請按照以下步驟從原始碼在 OS X (Mac) 上安裝 MXNet:

步驟 1 - 由於我們需要 OS X 上的一些依賴項,首先,我們需要安裝必要的軟體包。

xcode-select –-install #Install OS X Developer Tools

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

brew install cmake ninja ccache opencv # Install dependencies

我們也可以在沒有 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)

這裡,我們將使用 Pip、Docker 和原始碼三種方法來安裝使用 CPU 進行處理的 MXNet:

使用 Pip 方法

您可以使用以下命令在您的 Linux 系統上安裝 MXNet:

pip install mxnet

使用 Docker

您可以在 DockerHub 上找到帶有 MXNet 的 Docker 映象,網址為 https://hub.docker.com/u/mxnet。讓我們看看下面使用 Docker 和 CPU 安裝 MXNet 的步驟:

步驟 1 - 首先,按照位於 https://dockerdocs.tw/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 #Install OS X Developer Tools
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" #Install Homebrew
brew install cmake ninja ccache opencv # Install dependencies

我們也可以在沒有 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 - 接下來,下載並安裝 intel 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 Installer 以修改單個元件。

在 Visual Studio Installer 應用程式中,根據需要更新。之後,查詢並選中VC++ 2017 version 15.4 v14.11 toolset,然後單擊修改

現在,使用以下命令將 Microsoft VS2017 的版本更改為 v14.11:

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

接下來,您需要下載並安裝https://cmake.org/download/ 上提供的CMake。建議使用https://cmake.org/download/ 上提供的CMake v3.12.2,因為它已透過 MXNet 測試。

現在,下載並執行https://sourceforge.net/projects/opencvlibrary/ 上提供的OpenCV 包,這將解壓縮多個檔案。您可以選擇是否將它們放在另一個目錄中。這裡,我們將使用路徑C:\utils(mkdir C:\utils)作為我們的預設路徑。

接下來,我們需要設定環境變數 OpenCV_DIR 以指向我們剛剛解壓縮的 OpenCV 構建目錄。為此,請開啟命令提示符並鍵入set OpenCV_DIR=C:\utils\opencv\build

重要的一點是,如果您沒有安裝 Intel MKL(數學核心庫),則可以安裝它。

您可以使用的另一個開源包是OpenBLAS。在接下來的說明中,我們假設您正在使用OpenBLAS

因此,下載https://sourceforge.net 上提供的OpenBlas 包並解壓縮檔案,將其重新命名為OpenBLAS 並將其放在C:\utils 下。

接下來,我們需要設定環境變數OpenBLAS_HOME 以指向包含includelib 目錄的 OpenBLAS 目錄。為此,請開啟命令提示符並鍵入set OpenBLAS_HOME=C:\utils\OpenBLAS

現在,下載並安裝https://developer.nvidia.com 上提供的 CUDA。請注意,如果您已經安裝了 CUDA,然後安裝了 Microsoft VS2017,則現在需要重新安裝 CUDA,以便您可以獲得用於 Microsoft VS2017 整合的 CUDA 工具包元件。

接下來,您需要下載並安裝 cuDNN。

接下來,您還需要下載並安裝https://gitforwindows.org/ 上的 git。

安裝所有必需的依賴項後,請按照以下步驟構建 MXNet 原始碼:

步驟 1− 在 Windows 中開啟命令提示符。

步驟 2− 現在,使用以下命令從 GitHub 下載 MXNet 原始碼:

cd C:\

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

步驟 3− 接下來,驗證以下內容:

DCUDNN_INCLUDEDCUDNN_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 的 Update 3。您可以使用工具 -> 擴充套件和更新... | 產品更新選單進行升級。

接下來,您需要下載並安裝https://cmake.org/download/ 上提供的CMake。建議使用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

重要的一點是,如果您沒有安裝 Intel 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\nvcc.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 和原始碼三種方法來安裝使用 CPU 進行處理的 MXNet:

使用 Pip 方法

如果您計劃在 Windows 上使用 CPU 構建 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

您可以在https://hub.docker.com/u/mxnet 上提供的DockerHub 上找到帶有 MXNet 的 Docker 映象。讓我們檢視以下步驟,以使用 Docker 和 CPU 安裝 MXNet:

步驟 1− 首先,按照https://dockerdocs.tw/docker-for-mac/install 中提供的 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

在雲端和裝置上安裝 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。

Amazon Web Services

它還提供 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 還提供https://console.cloud.google.com 上提供的NVIDIA GPU 雲映象,用於與 Apache MXNet 配合使用。

Microsoft Azure

Microsoft Azure Marketplace 還提供https://azuremarketplace.microsoft.com 上提供的NVIDIA GPU 雲映象,用於與 Apache MXNet 配合使用。

Oracle Cloud

Oracle 還提供https://docs.cloud.oracle.com 上提供的NVIDIA GPU 雲映象,用於與 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。

樹莓派

您還可以在樹莓派 3B 裝置上執行 Apache MXNet,因為 MXNet 也支援基於 Respbian ARM 的作業系統。為了在樹莓派 3 上流暢執行 MXNet,建議使用記憶體超過 1 GB 且 SD 卡至少有 4 GB 可用空間的裝置。

以下是您可以用來為樹莓派構建 MXNet 並安裝庫的 Python 繫結的方法:

快速安裝

預構建的 Python wheel 可用於在具有 Stretch 的樹莓派 3B 上進行快速安裝。此方法的一個重要問題是,我們需要安裝多個依賴項才能使 Apache MXNet 正常工作。

Docker 安裝

您可以按照https://dockerdocs.tw/engine/install/ubuntu/ 上提供的 Docker 安裝說明在您的機器上安裝 Docker。為此,我們也可以安裝和使用社群版 (CE)。

原生構建(從原始碼)

要從原始碼安裝 MXNet,我們需要執行以下兩個步驟:

步驟 1

從 Apache MXNet C++ 原始碼構建共享庫

要在樹莓派 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)

執行上述命令後,將開始構建過程,此過程可能需要幾個小時才能完成。您將在build目錄中獲得一個名為libmxnet.so的檔案。

步驟2

安裝Apache MXNet支援的特定語言包

在此步驟中,我們將安裝MXNet Python繫結。為此,我們需要在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的作業系統。為了使MXNet在NVIDIA Jetson裝置上平穩執行,您的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__

如果一切正常,它將返回版本號。

廣告
© . All rights reserved.