Suit up! 自己動手建置AI環境

Wylie _ SUN
Taiwan AI Academy
Published in
13 min readMar 3, 2020

『Setup ANACONDA & TensorFlowGPU & remote work on windows』

近期人工智慧的蓬勃發展,讓越來越多大眾使用者也都陸續加入AI的學習行列,除了使用網路上提供的免費雲端空間,還有租用的AI環境。我們要如何在自己的windows系統上動手架設呢?從頭建置一台擁有AI環境的主機需要多少花費呢?就讓這篇文章帶著你一步一步探討吧!

AI Platform

相信大家在還沒購買硬體設備之前,首先當然是考慮線上學習平台及資源。而通常使用線上平台的人,多半是目前沒有足夠的硬體設備、不曉得如何組一台深度學習用的主機、不知道怎麼建置環境、剛入門學習先使用暫時的免費資源等等…

Google ColaboratoryKaggleAmazon Web Services

以上來自不同平台的AI雲端運算平台,相信是不少人剛接觸人工智慧或是線上AI課程時都會使用到平台。( 我也曾在其中一個平台消費過不少 😆)擁有線上平台當然相對簡單方便,價格或許也不算太高(?),對於剛入門學習,也會很推薦使用線上的免費平台!

AWS 及 Google Colab GPU定價

Hardware

當你入門或使用線上平台一陣子後,開始會想要設計一些Side Project,或是更高的硬體需求,這時候你可能會考慮要不要花錢租用。但事實上,自己動手購買及建置不會花太多錢及時間。

市面上販售的入門深度學習機

對於時間及環境建置苦手的人,當然可以考慮直接購買市面上的套裝機,畢竟還附有專人能夠詢問。但對有興趣自己動手花時間的人來說,能省下不少經費,更能夠配上一台更好或是一樣的硬體設備(時間就是金錢啊 🌟

原價屋(2020/1月價格)

在硬體選配上,GPU佔了很大的價格空間以及重要性,下面是2019年GPU用於深度學習上的性能及對應價格之CP值比對,另外會建議選配硬體時,RAM至少要達16GB以上,避免造成OOM(out of memory)的狀況產生。

Deep Learning environment

簡短介紹了上述雲端平台及硬體設備,接著就到我們的重頭戲了。

有好多好多套件在這裡

以下我是利用我的筆電做示範:
系統:Windows8.1 (64位元)
顯示卡:NVIDIA GeForce GTX 950M

看來是時候該換筆電囉 இдஇ

顯卡驅動

首先在開始前,需要先確定自己的顯卡是否有支援CUDA

CUDA GPUS - 太好了950M沒有排的很下面呢 (´;ω;`)

接著就是要幫你的顯示卡安裝驅動程式,在你下載的過程中,建議遇到存放路徑的時候,都選用預設會比較好,以免未來有問題上網搜尋時,還得去重新尋找路徑位置。

NVIDIA官網
建議預設path不要更改,後面一路下一步到底便省略
安裝完畢重新啟動即可

ANACONDA

Anaconda是一個免費開源的的Python及R語言的發行版本,致力於簡化軟體包管理及部署,也是我們今天需要用到的建置環境的軟體。(也有人認為Anaconda容量太肥大、太佔空間,你也能夠僅安裝Python進行環境建置,但還是會鼓勵創建虛擬環境,避免未來環境裝壞導致刪不乾淨的狀況)

ANACONDA官網 - 這裡選擇Python3.7 (爾後需要2.7能在從軟體內載)
安裝過程

在安裝過程中,一樣建議path不要去更改,然後在Advanced Options的部分將Add Anaconda to my PATH environment variable勾選後,便會主動將Anaconda加進環境變數。

安裝完成後將其開啟
可以多新增一個虛擬環境,或是直接用他建好的(base)虛擬環境
虛擬環境方便的點是,建置錯誤或是版本灌錯,可以心無旁鶩的刪除它!

開啟Jupyter Notebook

Jupyter Notebook(前身是IPython Notebook)是一個基於Web的交互式計算環境,用於創建Jupyter Notebook文檔。可以視它為一個還蠻好用的Python 整合開發環境。
而JupyterLab是Jupyter項目的下一代用戶界面。它在一個靈活且強大的用戶界面中提供了經典的Jupyter Notebook(筆記本、終端、文本編輯器、文件瀏覽器、豐富輸出等)所有熟悉的構建模塊。

可以直接點擊JupyterLab會同時開啟Jupyter Notebook的port(預設應為8888)

接著我們進到我們的JupyterLab (預設通常是tree介面,但我個人prefer下一個介面)
個人會比較推薦這個介面(lab),爾後在開啟terminal以及找查檔案比較方便

也可以從Terminal中開啟Jupyter notebook (能夠指定開啟的路徑)

選擇你的虛擬環境旁的play button中的Open Terminal,進到你要開啟的路徑位置輸入jupyter notebook
接著我們建立一個iPython檔試試看
接著輸入pwd並執行cell(用法跟各線上雲端平台亦同),顯示檔案路徑,接著輸入看看程式碼起手式。

以上如果皆順利,代表成功建立好Anaconda的Python3的環境!恭喜🙌🙌

TensorFlow GPU

接著到我們的TensorFlow GPU,畢竟我們都買了顯示卡,
不用GPU訓練也太浪費了吧!!

首先先看一下你要安裝的Tensorflow版本對應的cuDNN及CUDA版本
我們以Tensorflow-2.0.0為例,我們要載7.4的cuDNN及10.0的CUDA

Tensorflow對應版本

NVIDIA官網去下載CUDA Toolkit (預設是載10.2,我們要載10.0)

NVIDIA - CUDA
從Legacy Releases找到我們要的版本
選好我們的電腦配備後,就可以開始Download我們的CUDA了!
一樣在安裝過程如果遇到安裝位置選取,都建議不要換路徑儲存。
接著我們到環境變數確定一下有沒有正確填入CUDA_PATH,接著在Terminal上輸入nvcc -V 確認完成

接下來就是要下載cuDNN了!
cuDNN多一個步驟是,需要註冊成為NVIDIA DEVELOPER會員才能下載🤷‍♂️

NVIDIA DEVELOPER
接著找到你的系統版本,以及要下載的cuDNN版本
下載完成的壓縮檔,應該會有這些內容

接著將壓縮檔內的資料覆蓋到:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0

將壓縮檔解壓到這裡哦!(若有重複擋名覆蓋即可)

在環境變數的Path中新增兩行cuDNN的路徑:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp

接著到環境變數Path的地方點擊編輯,將cuDNN的路徑新增進去

上述環境設置完成後,就可以安裝Tensorflow-GPU囉!
從Open Terminal中輸入:conda install tensorflow-gpu==2.0

從Terminal新增tensorflow-gpu
也可以從JupyerLab中的Terminal中輸入
接著可以run run看簡單的程式

C:\Program Files\NVIDIA Corporation\NVSMI 輸入 .\nvidia-smi.exe
如果有使用到Memory,基本上就是有用到GPU了

nvidia-smi

或是直接在Cell中輸入:
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
最直接的感受應該還是訓練時速度的差異!!

如果有出現GPU,基本上也有抓到哦!

以上你的深度學習機以及深度學習環境建置就大功告成囉!

BONUS - Remote Jupyter notebooks

在我協助建置無數好友及教授環境的過程中,最常被問到的就是,建置完成之後,我要怎麼架設讓我的筆電也能夠遠端連線呢?

首先,Jupyter notebook 設定檔的部分 -
先在cmd (Terminal)上輸入jupyter notebook — generate-config
來生成一個config檔,待會要進行編輯的動作
輸入完成之後到C:/Users(使用者)/user(你的使用者名稱)/.jupyter 資料夾下
會看到生成的檔案。

生成的jupyter notebook config檔案

接著因為要提供給外網連線,建議都要生成一組密碼。
這邊我們利用from notebook.auth import passwd 來生成密碼,
passwd()後,會要你輸入要設定的密碼,及再次輸入驗證後,
及會產生那組密碼的sha1字串,將其整個複製下來,稍後會用到!

生成sha1密碼 (如果不設密碼可以略過這個步驟)

接著打開我們剛剛生成的 -
jupyter_notebook_config檔(用記事本或是任何文字編輯器開啟即可)
在裡面找到c.NotebookApp.password,
並將其內容改成 = u’sha1:xxxxxx(你剛剛複製的那串sha1密碼’)

設定jupyter notebook密碼
完成後再次登入就會要求輸入密碼了

另外config檔內還有很多設定能夠修改,例如起始路徑、白名單和黑名單等
有興趣的你們,可以參考檔案內的註解喔!

修改起始路徑 (之後就不用到指定路徑開啟了)

接著在連網的部分
首先通常都會先問一下有沒有固定iP (通常社區網路都會是浮動iP)。
請先容許我簡單介紹ngrok服務,它是一個可以將家裡的內部網路,通道外部網路與外界溝通的一個服務。因此能夠從外部的網路連線到你的本地端,
ngrok在一個帳號對一台主機的前提下是免費的,若要更多則可付費購買。

ngrok
ngrok安裝介面

在安裝介面的部分,它的步驟還蠻詳細簡單的,
第一區塊:下載對應的系統
第二區塊:下載完畢後,解壓到你要存放的位置
第三區塊:解壓完畢後,開啟cmd(命令提示字元(Terminal))到ngrok壓縮出來的位置複製貼上第三區塊的指令並執行。
第四區塊:先開啟你的Jupyter Notebook,並且確定開啟的port號
接著在ngrok.exe的位置輸入ngrok http 8888 (Jupyter notebook port號預設通常是8888,在jupyter_notebook_config檔中也能修改port號),來開啟。

第四區塊輸入完畢後

第四區塊輸入完成後,出現上述https://的網址後,表示轉址成功,接著就立刻開新的分頁,或是其他網路的電子設備輸入轉址後的網址來試試看吧!

紀錄一下成功的畫面🙌

Afterword

感謝你的閱讀,如果在建置環境上有任何問題Google不到,或是上述的步驟有哪個地方卡住,都歡迎留言告訴我哦,也鼓勵各方好友對文章有任何建議,只要有看到都會用飛快的速度給你回覆喔!#Deep Learning #AIA # AI Platform #Anaconda #CuDNN #CUDA 

--

--