【微軟工程師教你做】自己組一台深度學習電腦,價錢是 Macbook Pro 三分之一!

Posted on

【為什麼我們選這篇文章】比起花大錢買潮 Mac,這邊有更好的選擇!不到 1000 美元,就可以享受到高規格的電腦系統,甚至可以匯入上百個深度學習模式。你可以自行配置自己想要的器材,量身打造適合自己的規格!另外,這台電腦很容易被升級,從而能保證它的性能可以領先其他筆電好幾年。

本篇文章由 CrowdFlower 的創辦人兼 CEO Lukas Biewald 寫, 大數據文摘 授權轉載。(責任編輯:方綺)

是的,你可以在一個 39 美元的樹莓派板子上運行 TensorFlow,你也可以在用一個裝配了 GPU 的亞馬遜 EC2 的節點上跑 TensorFlow,價格是每小時 1 美元。是的,這些選擇可能比你自己攢一台機器要更現實一點。但是如果你和我是一樣的人,你絕對想自己攢一台奇快無比的深度學習的電腦。

好吧,一千塊錢對於一個 DIY 專案來說是太多了。但是一旦你把機器搞定,你就能構建數百個深度學習的應用啦,從擁有增強大腦的機器人到藝術創作(至少這是我為花這些錢找的理由)。最差的理由也是,這個機器至少能輕鬆打敗那個 2800 美元的 Macbook Pro 筆記本。除了用電多一點,所有的性能都比 Macbook 強。另外這台電腦很容易被升級,從而能保證它的性能可以領先筆記本好幾年。

從上世紀 80 年代後我就再沒攢過電腦。我也相當擔心花好幾百塊,最終搞一堆我自己裝不出來的零件(或是攢出來了,但可能沒法正常工作)。不過我要告訴你,攢機是可以的!另外,整個過程也很好玩。最後你能擁有一台通用的電腦,並能做預測,同時比筆記本快 20 多倍。

下面是購買清單和一些細節建議

  • 主機板

主機板有不同的尺寸規格。因為我不想用多個 GPU,所以最便宜最小的主機板標準尺寸是 mini-ITX,對這個項目是夠用了。我的最低要求是要有一個 PCIe 插槽給 GPU 用,有兩個 DDR4 的記憶體插槽。最後我買的是華碩的 Mini ITX DDR4 LGA 1151 B150I PRO GAMING/WIFI/AURA 主機板,在亞馬遜上賣 125 美元。還附送了一個 WiFi 的天線。這對於在地下室裡用這個電腦是太方便了。

  • 主機殼

主機殼不太重要,也非常便宜。因為 DIY 電腦的主要客戶都是遊戲玩家,所以主機殼的形狀和顏色也是五花八門。主機殼的尺寸應該和主機板配套,所以我的主機殼需要支援 mini-ITX。我買的是 Thermaltake Core V1 Mini ITX Cube 主機殼,在亞馬遜上賣 50 美元。

  • 記憶體

我不敢相信現在記憶體有多便宜。你需要買和主機板配合的 DDR4 型的記憶體(幾乎網上找到的都是這個類型),大家的價格都差不多。我用 129 美元買了兩條 8GB of Corsair Vengeance 記憶體。

這個帶 LED 燈的記憶體條讓我多花了 5 美元,因為亞馬遜的用戶評價上說「對於沒法在主機殼裡裝足夠多 LED 燈的,這個記憶體是最佳選擇。」如果你如我一樣是在地下室裡攢機,也不在乎主機殼裡面的美感,那你肯定會非常難在主機殼裡找到零件。

  • CPU

我看了一下網上的 CPU 評測比較,認為比較慢的 CPU 應該沒什麼問題,因為我沒什麼任務是要高速 CPU 的(除了訓練神經網路,而我會用 GPU 來訓練)。但我也受不了一台電腦,裡面有一個相對其他部件落後三代的 CPU。最後我花了 214 美元買了 Intel I5-6600 CPU。

大部分亞馬遜上能找到的 CPU 都是合適的。我沒花額外的 20 美元去買 I5-6600K。與 I5-6600 型相比,除了能超頻,其他功能都一樣。但通過系統可靠性來換取 10%的速度提升對於我來說是夠瘋狂的。不過我承認,在我開始想著自己攢機後,我有些後悔了。所以誰知道哪?攢機會改變你的生活樣式。可能買一個可超頻的 CPU 會少一些後悔。但另一方面,也許去除掉多餘的選擇能保護你自己,不會自己作死。

  • 硬碟

我也無法相信現在硬碟有多便宜了。用 50 美元我買了一個 1TB SATA 硬碟。固態硬碟會更快,但貴很多。而且深度學習的程式一般都不會是高 I/O 依賴的,因為一般程式都是拉取一批資料進記憶體,然後算很久。如果你有很多的檔案傳輸任務,或是僅僅是想確保比你朋友的 Macbook 跑應用快很多,那我會買一個固態硬碟,比如這個三星的 850 EVO 250GB 2.5-Inch SATA III Internal SSD,250G 的要 98 美元。

這些硬碟讓我意識到,蘋果是多麼會宰人。為了 Macbook Pro 有 250G 的額外硬碟容量,你要花 200 美元!

  • 顯示卡

選哪款顯卡是最重要也是最難的問題。對於幾乎所有的機器學習應用,你都需要一個英偉達的顯卡,因為只有英偉達有最重要的 CUDA 框架和 CuDNN 庫,所有的機器學習框架(包括 TensorFlow)都依賴它們。

作為一個非 GPU 專家,我發現與之相關的名詞術語是夠讓人糊塗的。但下面是非常基本的選購指標。

可能對深度學習最重要的指標就是顯卡的顯存大小。如果 TensorFlow 不能把模型和當前批次的訓練資料存進 GPU 的顯存,它就會失敗並轉向使用 CPU,從而讓 GPU 變成廢物。

另外一個重要的考慮就是顯卡的架構。英偉達最新依次推出的架構叫“Kepler”,“Maxwell”和“Pascal”。這些架構的主要區別就是速度。例如根據這個基準評測,Pascal Titan X 的速度是 Maxwell Titan X 的兩倍。

機器學習的大部分論文都是用的 TITAN X 顯卡。性能不錯,不過夠貴,都要 1000 美元以上,哪怕是舊一點的版本。大部分搞機器學習且沒多少預算的人都用的英偉達的 GTX 900 系列(Maxwell)或是 GTX 1000 系列(Pascal)。

想找出一塊顯卡的架構,你可以看看英偉達的那個極其讓人混淆的命名系統:9XX 卡使用的是 Maxwell 架構,而 10XX 是用的 Pascal 架構。但一個有更高的主頻和更大的顯存 980 可能還是比一個 1060 要快。

你可能必須對不同架構的英偉達 GPU 有所瞭解。但最重要的是,無論是 9XX 還是 10XX 顯卡,都會比你的筆記本快一個數量級。不要被這些選項搞暈了,如果你還沒有用過 GPU,用它會比你現有的系統要快很多。

我買的是 GeForce GTX 1060 顯卡,3GB 顯存,花了 195 美元。用它比我的 Macbook 要快近 20 倍。但對有些應用,它還是偶爾會出現顯存記憶體不足的情況。所以我也許應該多花 60 美元來買一個 GeForce GTX 1060 6GB 顯存版。

  • 電源

我花了 85 美元買了一個 650W 的電源。我的經驗是,電器如果電源出了問題是非常頭疼也很難修的,所以不值得為此省錢。另一方面,我的系統的峰值負載從來沒有超過 250 瓦。

  • 散熱器

我還記得我工作的第一家創業公司是把伺服器放到壁櫥裡面的。即使隔著壁櫥的門,風扇的雜訊還是出奇的大。這樣的日子似乎是早已過去了。不過 650 瓦的電源讓你的機器耗能是筆記本的 10 倍,而能量總是要找到一個出口的地方。可能不是必須的,但是我還是用 35 美元買了一個超級的散熱器——Master Hyper 212 EVO。這讓 CPU 始終運行在低溫狀態,且系統超級安靜。

以下是價錢概覽(單位都為美元):

omponent Price
Graphics Card $195
Hard Drive $50
CPU $214
Case $50
Power Supply $85
Heat Sink $35
RAM $129
Motherboard $125
Total $883

要最後能用,你還需要有顯示器、滑鼠和鍵盤。這些東西一般容易搞到(我的地下室裡到處都是)。合計價格是 883 美元,因此想花 1000 美元的話,還能再升級一些東西。

裝機

所有包裹都到齊後我是相當的興奮,然後我發現裝機是容易,但靠不住。花了我大概一個小時,按照每個部件的說明書就把電腦組裝起來了。最後卻點不亮。我不得不更換了主機板,相當沮喪但還 OK。

第二次組裝時,我把所有的部件放在一個紙箱子上連接起來,先確定是不是都能正常工作。

基本上,如果你把每個東西都能插入到看起來能恰當地匹配的地方,就應該是 OK 的。

圖 1 放在桌子上的半成品電腦,只連接了最少的部件來測試
圖 2 裝上超大散熱器後的電腦,看起來很恐怖

 

圖 3 從上面看下去,硬碟已經裝進去了

啟動電腦

安裝最新版本的 Ubuntu 會讓你的生活變得容易得多,因為新版本支持幾乎所有的深度學習的軟體。你可以把一個鏡像存到一個 USB 盤裡,然後按照它的簡單的一步一步指導來安裝。在上世紀 90 年代,我需要和各種驅動程式去鬥爭來安裝 Linux 桌面,不過現在的安裝過程已經變得超級容易。

新的 Ubuntu 作業系統也非常的棒。我現在經常使用我自己組裝的這台電腦。擁有大記憶體、相對快速的 CPU 和羽量級的作業系統,它是我家裡最快的電腦。

安裝 CUDA、OpenCV 和 TensorFlow

為了能用你的超酷的深度學習機器, 你需要先安裝 CUDA CudNN。最新的 CUDA版本是 8.0CudNN 5.1 從抽象的角度看,CUDA 是一個 API 和編譯器,能讓其他的程式為通用應用使用 GPU。而 CudNN 則是一個庫,主要設計來讓神經網路在 GPU 上跑的更快。你需要從英偉達的官網 NVIDIA website 上下載這兩個軟體。

OpenCV 是一個開源的庫,很多應用使用它來做影像處理。現在最新的版本 3.1 和最新的 CUDA 版本不相容。你可以通過設置 CUDA_GENERATION 標誌成 Kepler、Maxwell 或是 Pascal(取決於你買的 GPU 型號)來讓他們相容。下面是下載 OpenCV 和安裝設置它的命令序列:

git clone https://github.com/opencv/opencv.git \

&& cd opencv \

&& mkdir build \

&& cd build \

&& cmake .. \

&& make -j3 \

&& make install

最後,安裝 TensorFlow 變成了這些天裡最簡單的工作。只要按照這個網站上的說明操作就行了。

想看看 GPU 的支持是不是成功,你可以運行這個 TensorFlow 的測試程式,或是執行下面的命令:

python -m tensorflow.models.image.mnist.convolutional

這應該能開始運行一個模型而沒有報錯。

有趣的部分來了!

現在你已經花了近 1000 美元和無數的時間來裝機和裝軟體,是時候回收你的投資啦!GPU 讓程式運行的非常快,所有你需要一些能利用這個速度的應用。幸運的是有很多有趣的事情可以幹。

即時識別附近的物品

裝一個便宜的 USB 攝像頭或是帶有攝像頭的樹莓派板子在你家外面。你就能用我在之前的 100 美元的 TensorFlow 機器人裡所介紹的 RPi 攝像頭模組來很容易地製作一個樹莓派派視頻流應用。

YOLO

YOLO 包能完成拍攝同時的即時物體識別。用 Macbook 的話,我發現物體識別需要 3 到 4 秒。但用 GPU 的話,我能得到一個即時的結果,而且準確率是非常高。

按這個 YOLO_tensorflow 項目的介紹,可以很容易地使用 YOLO 模組運行在 TensorFlow 上。也可以安裝“Darknet”,這是一個不同的深度學習框架。YOLO 最初就是設計來用於它的。

git clone https://github.com/pjreddie/darknet

cd darknet

make

Darknet 安裝完後,你可以用下面的命令來讓它處理圖像:

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

因為樹莓派攝像頭僅僅只是把檔放到一個 Web 伺服器上,你可以直接讓 Darknet 去連接那個檔來做即時流裡的物體識別。下面的影片是我在車庫裡對外面發生的堵車進行的物體識別:(影片請點

給你的樹莓派機器人 一個增強的大腦

我之前寫的這個《只要 100 美元的 TensorFlow 機器人》裡,我發現可以在只值 30 美元的硬體上運行和應用深度學習。不幸的是,最讓我失望的事情是機器人要花好幾秒才能完成物體識別,因此讓機器人做即時的決策就不行了。現在如果機器人用這個新的 GPU 機器,就不僅僅能做即時物體識別,還能每秒處理大概 12-20 幀的圖像。

如果你依據我在 GitHub 上的這個說明,你就能攢一個機器人出來,讓它從攝影鏡頭裡獲取容易處理的影片流。

我的朋友 Shawn Lewis 教會了我這篇文章裡所需的大部分技能,所以我把我的兩個樹莓派機器人拿到了他的辦公室。他和其他很多機器人專家有一個夢想,就是讓機器人能給他們拿啤酒。下面是這些機器人為地上的啤酒戰鬥的影片。(影片請點

如果你仔細看影片開始部分裡的電腦顯示器畫面,就會發現 Shawn 的這個電腦實際上是用它的 GeForce 980 顯卡在為兩個機器人拍攝的視頻做即時的物體識別。他宣稱他的這塊顯卡可以同時處理四路視頻輸入而不會記憶體溢出。

搞點藝術創作

你可以用神經網絡做的好玩的事情之一就是複製 Google 的 Deep Dream 做的事情。儘管你可以不用 GPU 也能完成,但會花很長的時間。本質上講,這個事就是修改輸入的圖片來找到神經元裡得到最大反饋的圖片,因此這個任務有非常大的計算量。有很多種方式來完成修改,結果一般都非常的詭異和酷。

一個直接能用的很好的教程就是谷歌公開的這個 Deep Dream 代碼。

你需要安裝 Jupyter notebook 服務器(你總是需要的!)和 Caffe。

接著按照谷歌的教程把你的朋友的臉插進去。使用這個新的機器,新的圖片只用幾分鐘就出來了,而不是好幾小時。修改出來的圖片是很好玩的。

圖 4 我的鄰居 Chris Van Dyk 和 Shruti Gandhi 站在我的車庫裡,照片被我的 Deep Dream 程序給塗鴉了一把
圖 5 我朋友 Barney Pell 和他的國際象棋生日蛋糕
圖 6 這是我運行 Deep Dream 程序的機器自己的圖片。看起來像是滿屏都是狗(可能是因為訓練這個模型的 ImageNet 數據裡面都是狗的圖片。ImageNet 數據集裡面包括了 120 多種不同的狗)

如果你想搞更瘋狂的事,這裡是基於 Deep Dream 由 TensorFlow 實現的 Neural Style。出來的效果更神奇,你可以在這個腦洞大開的博文裡看到部分的成果。

總結

你不需要花好幾千美元來買一個比筆記本快的深度學習機器。自己攢一台並讓它能運轉正常是很有意思的經歷,而且這個電腦是可升級的。現在我已經把顯卡換成了一個具有相同架構的 Titan X,這樣所有的程式都不用再次編譯。

總體來說,賺了。這個機器和亞馬遜的每小時 1 美元的 P2 實例跑的一樣快。P2 實例用的是 K80 的顯卡,顯存大一點不過是舊的架構。我主要用這個機器做模型訓練,這也是這麼做的主要目的。嗯,這可能成為下一篇博文的題目。

延伸閱讀

天才駭客 Geohot 最新力作:免費開放自動駕駛原始碼,無人車 DIY 不再是夢想
高階 Mac Pro 骨灰罈一台賣 28 萬,有人自己做花了 33 萬!幹嘛要 DIY 哩?
【不期不待不受傷害】蘋果研發新 iMac,我已對庫克失望透了

首圖來源:Wikimedia commons,CC Licensed。

(本文 經原作者 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈 用不到 1000 美元攒一台深度学习用的超快的电脑:继续深度学习和便宜硬件的探奇!〉。)


【TechOrange 徵才:社群編輯、程式設計】

 如果你對數位行銷、Startup 趨勢、產業轉型、程式設計,以及新科技議題有興趣,不怕用與眾不同的面向,去衝撞一般思維,歡迎你加入 TO  >> 詳細職缺訊息  

 意者請提供履歷自傳以及文字作品,寄至 jobs@fusionmedium.com
 來信主旨請註明:【應徵】TechOrange 職缺名稱:您的大名 

點關鍵字看更多相關文章: