跳到主要內容
  • CPU/Statistics

    • 更新於159 天前

    數據分析
    288 0 0

此環境純粹使用 CPU 來做運算,因此,使用者的系統並不需要安裝 GPU。此容器環境安裝了高效能的數值運算函式庫: Intel Math Kernel Library (Intel MKL)。此函式庫的整合,能夠讓本環境所安裝的Scikit-learn (機器學習套件), NumPy/Scipy (數值/科學套件) 有最佳的CPU運算效能。

此容器是專門設計給統計/機器學習的相關開發者使用,因此,它亦包含了以下套件安裝: H2O (機器學習套件), XGBoost(梯度提升樹), LightGBM(梯度提升樹), Statsmodels(包含常見統計模型), PyMC3(貝葉斯統計), Pykalman(卡爾曼濾波), Filterpy(卡爾曼濾波), Bootstrapped(自助抽樣套件)。

適用對象

AI學習者,開發者

使用限制

本環境專門用於統計/機器學習開發。本環境不需要GPU即可啟動。

使用方法

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

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

# 決定Jupyterlab該監聽本機的哪一個port 
host_port=9999

# 啟動容器並取得容器ID
container_id=$(nvidia-docker run --rm -d -p ${host_port}:8888 -v $PWD:/workspace moeidb/aigo:cu10.0-dnn7.6-gpu-pytorch-nlp-19.06) # 休息一會,靜待容器服務啟動

# 等待服務啟動
sleep 2.

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

# 顯示連線至Jupyterlab服務的網址
printf "Open a browser and connect to:\n
        http://[your_ip]:${host_port}/?token=${notebook_token}\n
       "

輸入以上指令於終端機後,應該會顯示一個網址:

Open a browser and connect to:

        http://[your_ip]:9999/?token=87f6f7ad1455b7dde323f8a570897d4bf9dace8659e0e9bd

這代表我們已經在容器內啟動了 Jupyterlab 服務。接著,請開啟瀏覽器,並貼上此網址,即可使用 Jupyterlab 來撰寫 Python 筆記本。

注意事項:

  • 網址當中可見 token=87f6f7ad14...,其中 87f6f7ad14...是亂數產生的一串 token。由於 token 為隨機字串,因此您實際取得的 token 應和本範例不同。
  • 需將 [your_ip] 更改為機器的 IP 位址。 若您於本地端使用,則 [your_ip] 應為 127.0.0.1。
  • 開啟 Jupyterlab 後,會自動進入 /workspace 資料夾。因為建立容器時已將本機當前目錄 ${PWD} 掛載至容器內的 /workspace,所以您應該會在 /workspace 內看到先前存放於本機 ${PWD} 的檔案。
使用範例 2:利用容器環境執行 Python 腳本
# 建立一個測試腳本。此腳本將單純的匯入PyMC3套件,並且印出其當前版本。 
printf "import pymc3 \
        \nprint('PyMC3 version=', pymc3.__version__)" \
        > check_pymc3_version.py


# 我們已建立一個位於${PWD}的Python腳本。接著,我們試跑一個容器來執行它:
nvidia-docker run -it --rm -v ${PWD}:/workspace \
                  moeidb/aigo:cpu-stat-19.06 python3 check_pymc3_version.py

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

PyMC3 version = 3.7

若您能見到此訊息,則表示 Python 腳本已順利執行完畢。

套件 說明 版本
Python 我們環境採用Python 3.7,它於字串處理和檔案搜索方面較Python3.6快很多。 3.7.3
XGBoost 非常流行的梯度樹套件(Distributed Machine Learning Community開發)。 0.9.0
LightGBM 微軟所開發的梯度樹套件。 2.2.3
H2O H2O.ai推出的機器學習算法包。該公司亦提供一些商業化的支持。 3.24.0.5
Statsmodels 涵蓋各種統計工具,例如檢定,時序分析等。 3.7.3
pykalman 實現卡爾曼濾波器。 -
PyMC3 實作貝葉斯統計。 3.7
Filterpy 實現卡爾曼濾波器。作者甚至寫了一本書,並開放給讀者免費下載。 1.4.5
Bootstrapped 實現自助抽樣。 0.1
OpenMPI OpenMPI可支持跨伺服器節點的運算溝通。 4.0.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.0
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