AI 加速器自學組裝指南(一)──基本架構

作者 | 發布日期 2017 年 11 月 02 日 15:09 | 分類 AI 人工智慧 , 伺服器 , 電腦 line share follow us in feedly line share
AI 加速器自學組裝指南(一)──基本架構


隨著人工智慧議題越來越熱門,越來越多人開始投入 Python 或 R 語言的學習,且透過各種強大的開源套件如 Tensorflow、Keras 、Caffe、Torch、Scikit-learn,大幅降低了我們進入機器學習及深度學習的門檻。不少初心者想問,該使用怎樣的硬體環境才能加速訓練資料的時間?如果你或你的公司打算建構一個 AI 運行環境,本文或許能帶給大家一點幫助,少走點冤枉路;也歡迎有經驗的你,在文章下面留言給予大家更多建議。

筆者公司開展了幾個 AI 專案,有幸從頭到尾參與了 AI server 的選擇、設定、測試、執行,從用 i5 CPU 優化、1050、1080Ti 到 NVIDIA 最頂規的 P100,當中問了一些強者也爬了不少文,這篇文章試圖收斂下當初挑選的守則,當做小小的回報。AI 世界軟硬體神人太多,期望拋磚引玉激起更多討論,也歡迎強人不吝指教。

當跑深度學習(DL)、機器學習(ML)實驗,模型太大、層數或神經元過多, 一般電腦可能需要花半天、數天甚至以週為單位才能完成,或者發現錯誤。對公司而言,效率不彰絕對不是件好事;對初學者而言,trial and error 來來回回的時間過長,其實很容易感到挫折,如果能加速實驗進程,快速得到回饋並修正,對於這領域的學習與研究也會有較快的進展。

如何為自己的模型加速?

如果你是個初踏入 ML、DL 的初心者,學會 Python/R 不久,想試著建構模型,微軟設置了 Azure  Machine Learning Studio 這個平台,使用介面相當直覺,也可以直接套用微軟本身提供的演算法模組修改參數就好,可以輕鬆將模型建置起來。而亞馬遜、Google 也提供類似的服務。

如果你的模型並非圖像辨識相關,有沒有顯卡加速對你而言其實關係不大。加以,若你使用的語言是 Python 及英特爾的 CPU,英特爾推出加速庫「Intel Distribution for Python」,其實就能得到不錯的提升。前英特爾高級工程師 James Reinders 先前還出來背書,使用四核心 i5 的 iMAC,透過加速庫效能提升了 20 倍

但如果你跑的是 CNN 、RNN、 Reinforcement Learning 等 neural network 模型,苦於模型運算龐大,或想參加 Kaggle、WebVision 一類競賽(很可惜今年 ImageNet 是最後一屆),這篇文章或對你有所幫助。

如果是要自己組來玩玩,讓你的實驗模型跑得動、可以參加競賽,價格差不多在台幣 5~10 萬元之間可以搞定,這個價格不是絕對,現有設備規格、預算、模型大小……都是變動因素,甚至你不需要重新組台電腦,只需要加張顯卡就已夠用。

GPU 加速該怎麼挑?

目前在跑 CNN 使用 GPU 加速一般多直接選擇 NVIDIA 顯卡,倒非 AMD 效能較差,而是 NVIDIA 的 CUDA 在軟硬、CPU / GPU 整合上做了不少努力,CPU / GPU 原始碼的轉換用 C 或 C++ 就可以上手,較不需要複雜的轉換和修改,對許多新手玩家而言,入門門檻較 AMD 採 Open CL 低一點。

在預算有限的情況下,買一張 20 萬的 P100 來跑你的模型,未必是唯一的選擇,到底如何挑選一張最符合效益的顯卡?

先講 RAM,基本上 3GB RAM 絕對不夠,如果參加一些 Kaggle 等常規競賽,6GB RAM 其實就已足夠。但 GPU 最重要的還是看其記憶體頻寬(Memory Bandwidth)與 GFLOPs。

記憶體頻寬決定了 GPU 輸出效率,記憶體頻寬為時脈與介面頻寬的乘積。簡單來說,時脈就像水流速度,介面頻寬是水管的寬窄,而在一定時間內水管通過的水流量就是記憶體頻寬,如果記憶體頻寬不夠,即便記憶體容量(水桶)再大,也是徒然。對平行運算而言,記憶體頻寬尤其重要,而這點,GPU 比 CPU 優秀得多,也是為什麼平行運算多拿 GPU 加速的原因。

除了直接看時脈、介面頻寬來檢視記憶體頻寬,維基其實查得到 NVIDIA 與 AMD 所有 GPU 的公版設定與測試數值,透過這兩張表檢視顯卡的參數,其實一目了然。

GFLOPs 代表顯卡的運算速度,從部落客 Guanghan Ning’s 整理的列表,可看出以 Giga 為單位,NVIDIA 系列顯卡,每秒最高可進行的浮點運算次數性價比,基本上,1080 或 1070 系列 C/P 值其實相當不錯。

(Source: Guanghan Ning

對 GPU 的挑選守則曾在 Kaggle 取得名次的 Tim Dettmers,撰寫了一篇文章《Which GPU(s) to Get for Deep Learning》(中譯版本)寫了他試過 NIVDIA 甚至英特爾 Xeon Phi 為加速器的經驗,以及 NIVDIA 各產品線 GPU 的詳細比較,或許會給你更多靈感。

軟硬整合才是大關鍵

顯卡的選擇除了單看硬體規格,更重要的還要看你選擇的平台,是否與顯卡最適配,無論你先決定顯卡還是平台,絕對都要考慮到適配問題。香港浸會大學副教授褚曉文為首的團隊,對於 TensorFlow、Caffe、Torch、CNTK 等深度學習框架做了性能測試報告,可看出在 i7、E5、GTX 980/1080、Tesla K80 等硬體環境下,不同 batch size、不同模型的加速狀況,如果你是跑圖像 model,可參考 alexnt 的測試結果,文字 model lstm 則是一個不錯的參考依據。除了平台、和硬體的適配,顯卡跟主機板 PCIe 合不合也需注意。

(Source:香港浸會大學

文末會附上我們成功架設的軟硬體規格供參考,一起在 AI 路上精進,在這場科技盛會插上一腳,並期望有朝一日,看見它開花、結果。


附錄:AI 使用的 DIY PC 配備表

平價版(使用 NVIDIA 1080 Ti 加速)

頂規版(使用 NVIDIA Tesla P100加速)