用 Azure 的 GPU VM 開始建立深度學習的開發環境
Microsoft Azure 上在幾個資料中心提供了含有 GPU (NVIDIA 家族) 的虛擬機器,這篇文章主要介紹如何在這類虛擬機器上建立適用常見的深度學習環境。
建立虛擬機器
你可以使用 Microsoft Azure 的入口網站來建立虛擬機器(參考教學文件);或是使用 Azure CLI 來使用下列指令來建立一台 N 系列的虛擬機器(此指令會建立一台 NC6 等級的機器,作業系統採用 Ubuntu Linux 16.04)。
先在你的開發機器上裝 Python 的環境,我個人建議可以裝 Python 3.5.4 的版本。然後使用下面指令安裝 Azure CLI:
$ pip3 install azure-cli
安裝完成後,先使用 az login
然後根據提示來登入 Microsoft Azure 的帳號。
建立虛擬機器前,先建立資源群組,我選擇有 GPU 虛擬機器的「美國中南部」機房, sklearn
可以換成你想要的名稱:
$ az group create -n sklearn -l SouthCentralUS
然後使用下面指令建立虛擬機器:
-g
指定資源群組、-n
指定虛擬機器名稱、— admin-uwername
可以換成你登入機器的使用者名稱、— ssh-key-value
就看是否要用 SSH Key 來做驗證證入
$ az vm create -g sklearn -n sklearnlab --image Canonical:UbuntuServer:16.04-LTS:latest --size Standard_NC6 --storage-sku Standard_LRS --admin-username ericsk --ssh-key-value ~/.ssh/id_rsa.pub
執行完畢後會有建立結果的資訊,你可以透過 publicIpAddress
的資訊來找到目前配發的動態 IP 位址:
這個 IP 是動態配發的,虛擬機器重新開機後會重新取得新 IP,若有需要固定則需要將 IP 位址設成靜態的,或是運用 DNS 名稱來對應。
{
...
"publicIpAddress": "40.74.243.252",
...
}
試著用你的 SSH 連線工具(如:PuTTY)連線看看是否能進入機器操作。
安裝基本的開發工具
連線進入虛擬機器後,首先安裝常用的開發工具:
$ sudo apt update
$ sudo apt install build-essential cmake
再來安裝 Python 的相關套件,這裡我選擇 Python 3 相關:
這一版的 Ubuntu Linux 會安裝 Python 3.5.2 的版本。但如果你要跑 caffe2 就要裝 Python 2.7 的環境。
$ sudo apt install python3-pip python3-tk libboost-python-dev libjasper-dev
安裝幾乎會一直用到的 Python 函式庫(以 Python 3 為例):
$ sudo pip3 install numpy scipy future hypothesis opencv-python easydict pyyaml six dlib Pillow matplotlib
安裝 CUDA / cuDNN 套件
為了能善用 GPU 的能力來加速多個深度學習開發框架,雖然建好的虛擬機器已經裝好 GPU driver,但我們還是要把 CUDA 開發套件與 cuDNN 函式庫裝起來。
安裝 CUDA Toolkit
這個要到 NVIDIA 的網站上下載,這裡示範的是下載透過網路安裝的安裝檔 (*.deb):
目前 TensorFlow 1.3 支援 CUDA 8.0,建議下載這個版本的 CUDA Toolkit。
下載 deb 檔案後,執行下列指令:(在下載網頁就有說明如何安裝 CUDA Toolkit)
$ sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda
順利安裝完成後,就會裝好 CUDA Toolkit 8.0 了。你可以執行 nvidia-smi
來觀看 GPU 的活動。
安裝 cuDNN 函式庫
除了 CUDA Toolkit 之外,基於 CUDA 開發的深度類神經網路的函式庫也是必備的,從 NVIDIA 官網上下載時需要註冊 NVIDIA 開發人員帳號。
TensorFlow 1.3 目前支援 cuDNN 6 的版本。
填寫完一些問答後,選擇對於 CUDA Toolkit 版本的 cuDNN 函式庫,我自己是喜歡下載懶人包(*.deb),你也可以下載 Library 然後自行決定放在哪個路徑下。
下載回來後,就依序安裝 Runtime Library > Developer Library 就完成了。
$ sudo dpkg -i libcudnn6_6.0.21-1+cuda8.0_amd64.deb
$ sudo dpkg -i libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb
以深度學習開發框架為例
使用 Microsoft Cognitive Toolkit (CNTK)
我們建立好的虛擬機器中同時會安裝 Python 2 (2.7) 及 Python 3 (3.5),你可以選擇要在哪個版本下操作 CNTK,如果選擇 Python 3 的話,可以使用下面的指令來安裝 CNTK 的套件(也可參考官方文件說明):
先安裝 OpenMPI:
$ sudo apt-get install openmpi-bin
再裝 GPU 版的 CNTK:
$ sudo pip3 install https://cntk.ai/PythonWheel/GPU-1bit-SGD/cntk-2.2-cp35-cp35m-linux_x86_64.whl
順利安裝完成後可以執行下列指令來測試是否能順利使用 GPU:
$ python3 -c 'from cntk import device;print(device.try_set_default_device(device.gpu(0)))'
True
使用 TensorFlow
因為開的是 GPU 的 VM,而且相關環境都已經安裝好,所以也可以直接安裝 GPU 版的 TensorFlow:
$ sudo pip3 install tensorflow-gpu
也可以使用下列指令來確定是否能讓 TensorFlow 使用 GPU:
$ python3 -c 'import tensorflow as tf;print(tf.device("/gpu:0"))'
<contextlib._GeneratorContextManager object at 0x7f839ff3c3c8>