916
技術社區[雲棲]
用不到1000美元攢一台深度學習用的超快的電腦:繼續深度學習和便宜硬件的探奇!
是的,你可以在一個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的。
圖1 放在桌子上的半成品電腦,隻連接了最少的部件來測試
圖2 裝上超大散熱器後的電腦,看起來很恐怖
圖3 從上麵看下去,硬盤已經裝進去了
啟動電腦
安裝最新版本的Ubuntu會讓你的生活變得容易得多,因為新版本支持幾乎所有的深度學習的軟件。你可以把一個鏡像存到一個USB盤裏,然後按照它的簡單的一步一步指導來安裝。在上世紀90年代,我需要和各種驅動程序去鬥爭來安裝Linux桌麵,不過現在的安裝過程已經變得超級容易。
新的Ubuntu操作係統也非常的棒。我現在經常使用我自己組裝的這台電腦。擁有大內存、相對快速的CPU和輕量級的操作係統,它是我家裏最快的計算機。
安裝CUDA、OpenCV
和TensorFlow
為了能用你的超酷的深度學習機器,你需要先安裝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。
接著按照穀歌的教程把你的朋友的臉插進去。使用這個新的機器,新的圖片隻用幾分鍾就出來了,而不是好幾小時。修改出來的圖片是很好玩的。
圖4 我的鄰居Chris Van Dyke和Shruti Gandhi站在我的車庫裏,照片被我的Deep Dream程序給塗鴉了一把
圖5 我朋友Barney Pell和他的國際象棋生日蛋糕
圖6 這是我運行Deep Dream程序的機器自己的圖片。看起來像是滿屏都是狗(可能是因為訓練這個模型的ImageNet數據裏麵都是狗的圖片。ImageNet數據集裏麵包括了120多種不同的狗)
如果你想搞更瘋狂的事,這裏是基於Deep Dream由TensorFlow實現的Neural Style。出來的效果更神奇,你可以在這個腦洞大開的博文裏看到部分的成果。
原文發布時間為:2017-02-15
本文來自雲棲社區合作夥伴“大數據文摘”,了解相關信息可以關注“BigDataDigest”微信公眾號
最後更新:2017-05-24 18:02:15