用不到1000美元攢一臺深度學習用的超快的電腦:繼續深度學習和便宜硬體的探奇!

OReillyData發表於2017-02-13

編者注:想了解與此主題相關的更多內容,請檢視即將在2017年3月13-16日在聖荷西舉行的Strata+Hadoop世界大會上的深度學習主題日程

是的,你可以在一個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美元!

顯示卡/GPU

選哪款顯示卡是最重要也是最難的問題。對於幾乎所有的機器學習應用,你都需要一個英偉達的顯示卡,因為只有英偉達有最重要的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始終執行在低溫狀態,且系統超級安靜。

概覽

Component 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的。

640?wx_fmt=jpeg

圖1 放在桌子上的半成品電腦,只連線了最少的部件來測試

640?wx_fmt=jpeg

圖2 裝上超大散熱器後的電腦,看起來很恐怖

640?wx_fmt=jpeg

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

啟動電腦

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

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

安裝CUDAOpenCVTensorFlow

為了能用你的超酷的深度學習機器,你需要先安裝CUDA和CudNN。最新的CUDA版本是8.0,CudNN是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顯示卡在為兩個機器人拍攝的視訊做實時的物體識別。他宣稱他的這塊顯示卡可以同時處理四路視訊輸入而不會記憶體溢位。

搞點藝術創作

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

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

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

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

640?wx_fmt=jpeg

圖4 我的鄰居Chris Van Dyke和Shruti Gandhi站在我的車庫裡,照片被我的Deep Dream程式給塗鴉了一把

640?wx_fmt=jpeg

圖5 我朋友Barney Pell和他的國際象棋生日蛋糕

640?wx_fmt=jpeg

圖6 這是我執行Deep Dream程式的機器自己的圖片。看起來像是滿屏都是狗(可能是因為訓練這個模型的ImageNet資料裡面都是狗的圖片。ImageNet資料集裡面包括了120多種不同的狗)

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

總結

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

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

640?wx_fmt=jpeg

Lukas Biewald

Lukas Biewald是CrowdFlower的創始人兼CEO。CrowdFlower始於2009年,是一個資料增強的平臺,可以幫助企業獲得隨需的人力來收集、產生訓練資料,以及參與人-機器學習迴圈的工作。 在從史丹佛大學拿到數學學士和電腦科學碩士學位後,Lukas領導了雅虎日本的搜尋相關團隊。隨後他去了Powerset,作為一個資深資料科學家進行工作。2008年Powerset被微軟收購。Lukas還被《公司》雜誌評選為30位30歲以下的著名人士。 Lukas還是一位專家級的圍棋選手。

640?wx_fmt=png


相關文章