跳到主要內容
  • MXNet/Dev

    • 更新於11 天前

    MXNet
    深度學習
    20 0 0

“cu10.0-dnn7.6-gpu-mx-19.09” 代表此環境為 2019 年 9 月(19.09) 建置的 GPU 運算開發容器。此環境內含使用 NVIDIA CUDA 10.0 (cu10.0)和 NVIDIA cuDNN 7.6(dnn7.6)的 MXNet(mx) 開發框架。

適用對象

AI學習者,開發者

使用限制

本環境除包含CUDA runtime外,亦有CUDA development files。因此,本環境亦可以用來編譯/開發CUDA程式。

本環境除了單機/單伺服器使用以外,亦可透過Horovod + OpenMPI實現叢集伺服器跨節點運算。

使用方法

使用範例 1:於背景啟動 Jupyterlab 服務

本服務將於本機監聽 port 9999,並將當前目錄 ($PWD) 掛載至容器內部的 /workspace 資料夾:

# 啟動容器並取得容器 ID
container_id=$(nvidia-docker run --rm -d -p 9999:8888 -v $PWD:/workspace moeidb/aigo:cu10.0-dnn7.6-gpu-mx-19.09) 

# 休息一會,靜待容器服務啟動
sleep 1.5

# 擷取容器的 Jupyter notebook token
notebook_token=$(docker logs ${container_id} 2>&1 | grep -nP "(LabApp.*token=).*" | cut -d"=" -f 2)

# 顯示 Jupyter notebook 服務的 token
echo token=${notebook_token}

輸入以上指令於終端機後,應該會顯示出類似於以下的訊息:

token=42cb5b3055ff5616e3dfecd805ee5b3815f69792f5834271

代表我們已經正常啟動 Jupyterlab 服務,並且取得了用於連線至該服務的 token (token 為隨機產生,故你所擷取出來的 token 和本文中的 token 不會相同)。接下來請就開啟瀏覽器,並連線至:http://[your_ip]:9999/?token=[your_token] 即可使用 Jupyterlab 服務。 其中,[your_ip] 是您啟動容器的機器 IP 位址,[your_token] 是你剛剛從容器擷取出來的 token。

使用範例 2:利用容器環境執行一個 Python 程式
# 首先我們建立一個 python script,它做的事情是匯入 MXNet 套件並且印出 MXNet 的版本。
printf "import mxnet \
\nprint('MXNet version=', mxnet.__version__)" \
> check_mx_version.py

# 接著我們試著跑一個容器來執行該範例程式。
nvidia-docker run -it --rm -v ${PWD}:/workspace moeidb/aigo:cu10.0-dnn7.6-gpu-mx-19.09 python3 check_mx_version.py

輸入以上指令於終端機後,應會顯示出 Docker 容器內部的 MXNet 版本,訊息如下:

MXNet version= 1.6.0

表示程式已正常利用我們所維護的 Docker 容器運行。

套件 說明 版本
Apache MXNet 是一個主要由Amazon開發者所維護的AI模型開發框架。 1.16.0-dev
OpenCV (Intel-MKL-acclerated) 用於影像處理,以及建立影像相關的機器學習模型。 4.1.0
Python 我們環境採用Python 3.7,它於字串處理和檔案搜索方面較Python3.6快很多。 3.7.3
Horovod 使用Uber Horovod可簡易的將AI訓練利用多GPU做加速。 0.18.1
OpenMPI OpenMPI為Uber Horovod所需,可支持跨卡/跨伺服器節點的溝通。 4.0.0
NVIDIA CUDA runtime libraries CUDA為NVIDIA為其GPU所提供的開發框架。所有AI開發框架皆會呼叫其所提供的API。 10.0.130
NVIDIA cuDNN runtime libraries cuDNN是NVIDIA專門為深度神經網路開發所提供的函示庫。 7.6.0.64-1+cuda10
NVIDIA TensorRT runtime libraries 於模型部署階段,可利用NVIDIA TensorRT將模型優化,或將單精度模型以合適的方式轉換成半精度模型,使模型推理能夠以高速運行。 5.0.2-6+cuda10.0
NVIDIA Collectives Communication Library (NCCL) Runtime 使用多GPU訓練時,AI框架可利用NVIDIA NCCL做多GPU加速。 2.4.2-1+cuda10.0
Intel Math Kernel Library (Intel MKL) 針對Intel CPU做快速的數值運算。 2019.3-062
NumPy (Intel-MKL-acclerated) 常用的數值運算套件 (利用Intel MKL加速)。 1.16.2
SciPy (Intel-MKL-acclerated) 常用的科研套件,提供一些基礎算法,統計方法 (利用Intel MKL加速)。 1.2.2
Scikit-learn (Intel-MKL-acclerated) 常用的機器學習套件,提供一些基礎算法,統計方法 (利用Intel MKL加速)。 0.20.3
Numba Python程式碼經JIT編譯器編譯後,可加速百倍至千倍。 0.44.1
Numexpr 數學表達式經過計算優化後,可提升最高至4倍速。 2.6.9
pyodbc 連結資料庫使用。 4.0.26
Jupyterlab 程式碼運行,紀錄,筆記撰寫,皆可存放並整理至筆記本。 1.0.1
pandas 建立並整理資料表,並且提供簡易的方式將資料表視覺化。 0.24.2
Matplotlib 資料視覺化套件,可繪製長條圖,直方統計圖,散點圖等。 3.1.1
Seaborn 基於Matplotlib的高階繪圖API; 可接收資料表,自動做分群後繪圖。 0.9.0
Bokeh 可嵌入至網頁,實現互動式的數據呈現。 1.2.0