- Apache MXNet 教程
- Apache MXNet - 首頁
- Apache MXNet - 簡介
- Apache MXNet - MXNet安裝
- Apache MXNet - 工具包和生態系統
- Apache MXNet - 系統架構
- Apache MXNet - 系統元件
- Apache MXNet - 統一運算元API
- Apache MXNet - 分散式訓練
- Apache MXNet - Python 包
- Apache MXNet - NDArray
- Apache MXNet - Gluon
- Apache MXNet - KVStore 和視覺化
- Apache MXNet - Python API ndarray
- Apache MXNet - Python API gluon
- Apache MXNet - Python API autograd 和初始化器
- Apache MXNet - Python API Symbol
- Apache MXNet - Python API Module
- Apache MXNet 有用資源
- Apache MXNet - 快速指南
- Apache MXNet - 有用資源
- Apache MXNet - 討論
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 以指向包含include 和lib 目錄的 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_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 的 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、lib 和bin 目錄的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裝置(例如TX2或Nano)上執行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.4.0(適用於Python 3)可在https://dockerdocs.tw 獲取
MXNet 1.4.0(適用於Python 2)可在https://dockerdocs.tw 獲取
原生構建(從原始碼)
要從原始碼安裝 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__
如果一切正常,它將返回版本號。