摘要:受到其他同行在上討論更好經(jīng)驗(yàn)的激勵(lì),我決定買一個(gè)專用的深度學(xué)習(xí)盒子放在家里。下面是我的選擇從選擇配件到基準(zhǔn)測(cè)試。即便是深度學(xué)習(xí)的較佳選擇,同樣也很重要。安裝大多數(shù)深度學(xué)習(xí)框架是首先基于系統(tǒng)開發(fā),然后逐漸擴(kuò)展到支持其他操作系統(tǒng)。
在用了十年的 MacBook Airs 和云服務(wù)以后,我現(xiàn)在要搭建一個(gè)(筆記本)桌面了
幾年時(shí)間里我都在用越來越薄的 MacBooks 來搭載一個(gè)瘦客戶端(thin client),并已經(jīng)覺得習(xí)以為常了。所以當(dāng)我涉入深度學(xué)習(xí)(DL)領(lǐng)域后,我毫不猶豫的選擇了當(dāng)時(shí)的 Amazon P2 云服務(wù)。該云服務(wù)不需要預(yù)付成本,能同時(shí)訓(xùn)練很多個(gè)模型,并且還能讓一個(gè)機(jī)器學(xué)習(xí)模型慢慢地訓(xùn)練自己。
但隨著時(shí)間推移,AWS(亞馬遜云服務(wù))的賬單逐漸越堆越高,即便我換成了便宜十倍的 Spot instances 也沒用。而且我也沒有同時(shí)訓(xùn)練過多個(gè)模型。在模型訓(xùn)練的時(shí)候,我會(huì)去吃午飯,鍛煉等等,然后帶著一個(gè)更清晰的頭腦回來查看它。
但最終我模型的復(fù)雜度增加了,訓(xùn)練時(shí)間也變得更長(zhǎng)。對(duì)一個(gè)剛完成兩天訓(xùn)練的模型,我經(jīng)常會(huì)忘記之前對(duì)它進(jìn)行了哪些不同的操作。受到其他同行在 Fast.AI Forum 上討論更好經(jīng)驗(yàn)的激勵(lì),我決定買一個(gè)專用的深度學(xué)習(xí)盒子(DL box)放在家里。
最重要的原因就是能在進(jìn)行模型的原型設(shè)計(jì)時(shí)節(jié)省時(shí)間,如果我們能訓(xùn)練地更快,反饋時(shí)間也會(huì)更短。這能讓我們更容易的在頭腦中建立起模型假設(shè)和結(jié)果之間的聯(lián)系。
而且我也想省錢,我之前用的是亞馬遜網(wǎng)絡(luò)服務(wù)(AWS),它通過 Nvidia K80 的 GPU 來提供 P2 instances。最近 AWS 的費(fèi)用達(dá)到了每月 60 到 70 美元,還有增長(zhǎng)的趨勢(shì)。并且要儲(chǔ)存大型數(shù)據(jù)集也很貴,比如 ImageNet 這樣的。
最后一點(diǎn),我已經(jīng)有 10 年沒有一個(gè)(筆記本的)桌面了,想看看現(xiàn)在有什么變化(這里劇透一下:基本上沒變化)。
下面是我的選擇:從選擇配件到基準(zhǔn)測(cè)試。
目錄
1. 選擇配件
2. 把它們組裝在一起
3. 軟件設(shè)置
4. 基準(zhǔn)測(cè)試
選擇配件
對(duì)我來說合理的預(yù)算是兩年云計(jì)算服務(wù)的成本。以我目前的情況來看,即 AWS 每月 70 美元的使用費(fèi),那么總預(yù)算應(yīng)該在 1700 美元左右。
PC Part Picker 這個(gè)網(wǎng)站非常有幫助,可以幫你發(fā)現(xiàn)是否某些配件放在一起并不好用。
你可以在這里查看所有使用過的配件:https://pcpartpicker.com/list/T6wHjc
GPU
GPU 是整個(gè)機(jī)箱里最關(guān)鍵的部件了。它訓(xùn)練深度網(wǎng)絡(luò)的速度更快,從而縮短反饋循環(huán)(的周期)。
GPU 很重要是因?yàn)椋篴) 深度學(xué)習(xí)中絕大部分計(jì)算都是矩陣運(yùn)算,比如矩陣乘法之類。而用 CPU 進(jìn)行這類運(yùn)算就會(huì)很慢。b)當(dāng)我們?cè)谝粋€(gè)典型的神經(jīng)網(wǎng)絡(luò)中進(jìn)行成千上萬個(gè)矩陣運(yùn)算時(shí),這種延遲就會(huì)累加(我們也會(huì)在后面的基準(zhǔn)訓(xùn)練部分看到這一點(diǎn))。而另一方面,GPU 就更方便了,因?yàn)槟懿⑿械倪\(yùn)行所有這些運(yùn)算。他們有很多個(gè)內(nèi)核,能運(yùn)行的線程數(shù)量則更多。GPU 還有更高的存儲(chǔ)帶寬,這能讓它們同時(shí)在一群數(shù)據(jù)上進(jìn)行這些并行計(jì)算。
我在幾個(gè) Nvidia 的芯片之間選擇:GTX 1070 (360 美元), GTX 1080 (500 美元), GTX 1080 Ti (700 美元),以及 Titan X(1320 美元)。
在性能方面,GTX 1080 Ti 和 Titan X 較接近,粗略來看 GTX 1080 大約比 GTX 1070 快了 25%,而 GTX 1080 Ti 則比 GTX 1080 快樂 30% 左右。
Tim Dettmers 有一篇更好的關(guān)于選擇深度學(xué)習(xí) GPU 的文章,而且他還經(jīng)常會(huì)在新的芯片上市后更新博文:http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/
下面是選購(gòu) GPU 時(shí)需要考慮的事情:
品牌:這里沒什么可說的,選 Nvidia 就對(duì)了。它們已經(jīng)專注于機(jī)器學(xué)習(xí)很多年了,并且取得了成果。他們的統(tǒng)一計(jì)算設(shè)備架構(gòu)(CUDA)工具包在這個(gè)領(lǐng)域里有著不可撼動(dòng)的地位,所以它真的是深度學(xué)習(xí)從業(yè)者的選擇。
預(yù)算:Titan X 在這方面真的沒有任何優(yōu)勢(shì),因?yàn)樗韧瑯有阅艿?1080 Ti 貴了 500 多美元。
一個(gè)還是多個(gè):我考慮過用一堆 1070s 去替代(單個(gè))1080 或 1080 Ti。這能讓我在兩個(gè)芯片上訓(xùn)練一個(gè)模型,或同時(shí)訓(xùn)練兩個(gè)模型。目前在多個(gè)芯片上訓(xùn)練一個(gè)模型還有點(diǎn)麻煩,不過現(xiàn)在有所轉(zhuǎn)機(jī),因?yàn)?PyTorch 和 Caffe 2 提供了隨著 GPU 數(shù)量幾乎成線性提升的訓(xùn)練規(guī)模。另一個(gè)選擇—同時(shí)訓(xùn)練兩個(gè)模型似乎更有價(jià)值,但我決定現(xiàn)在先用一個(gè)強(qiáng)大的核心,以后再添加另一個(gè)。
內(nèi)存:內(nèi)存越大當(dāng)然就越好了。更多的存儲(chǔ)空間能讓我們部署更大的模型,并且在訓(xùn)練時(shí)使用足夠大的批量大?。ㄟ@會(huì)對(duì)梯度流很有幫助)。
存儲(chǔ)帶寬:這能讓 GPU 在更大的內(nèi)存上運(yùn)行。Tim Dettmers 指出這對(duì)于一個(gè) GPU 來說是最重要的指標(biāo)。
考慮到所有這些,我選擇了 GTX 1080 Ti,主要是考慮到訓(xùn)練速度的激增。我計(jì)劃很快再增加一個(gè) 1080 Ti。
CPU
即便 GPU 是深度學(xué)習(xí)的較佳選擇,CPU 同樣也很重要。比如說數(shù)據(jù)預(yù)處理通常都是在 CPU 上進(jìn)行的。如果我們想把所有的數(shù)據(jù)提前并行,核的數(shù)量和每個(gè)核的線程數(shù)就非常重要了。
為了不偏離預(yù)算,我選擇了一個(gè)中等程度的 CPU,Intel i5 7500,價(jià)格大概在 190 美元。相對(duì)來說挺便宜,但也足夠保證不拖慢速度。
內(nèi)存(RAM)
如果我們要在一個(gè)較大數(shù)據(jù)集上工作,當(dāng)然錢多好辦事,內(nèi)存總是多多益善的。我買了兩根 16 GB 的內(nèi)存條,也就是以 230 美元的價(jià)格買下了總共 32 GB 的 RAM,而且打算以后再買 32 GB 的。
硬盤
遵循了 Jeremy Howard 的建議,我買了一個(gè)固態(tài)硬盤(SSD)搭載我的操作系統(tǒng)和現(xiàn)有的數(shù)據(jù),還有一個(gè)慢轉(zhuǎn)硬盤驅(qū)動(dòng)器(HDD)來存儲(chǔ)那些大型數(shù)據(jù)集(比如 ImageNet)。
SSD:我記得多年前買到第一部 Macbook Air 時(shí),是如何驚嘆于它的固態(tài)硬盤速度的。讓我高興的事,與此同時(shí),叫做 NVMe 的新一代固態(tài)硬盤上市了。230 美元買到一個(gè) 480 GB 的 MyDigitalSSDNVMe 驅(qū)動(dòng)真的很值。這個(gè)寶貝能以每秒千兆字節(jié)的速度拷貝數(shù)據(jù)。
HDD: 66 美元 2 TB。在 SSD 越來越快的同時(shí),HDD 變得更便宜了。對(duì)一個(gè)用了 7 年 128 GB 的 Macbook 的人來說,有如此大容量的硬盤簡(jiǎn)直是太棒了。
主板
有一件我一直很關(guān)心的事,就是挑選一塊能支持兩塊 GTX 1080 Ti 的主板,兩個(gè)都在串行總線(PCI Express Lanes)的數(shù)量上(最小的是 2x8),并且有能放下兩個(gè)芯片的物理空間。還要確保它跟選好的 CPU 兼容。最后一個(gè) 130 美元的 Asus TUF Z270 主板幫我做到了這一點(diǎn)。
電源
經(jīng)驗(yàn)法則:它應(yīng)該能為 CPU 和 GPU 提供足夠的能量,再加上外的 100 瓦。
Intel i5 7500 處理器的能耗是 65W,每個(gè) GPU (1080 Ti) 需要 250W,所以我用 75 美元買了一個(gè) Deepcool 750W Gold 電源供應(yīng)單元(PSU)。這里的「Gold」指的是電源效率(power efficiency),即它以熱量的形式損耗了多大的功率。
機(jī)箱
機(jī)箱應(yīng)該跟母板有相同的形狀系數(shù)。如果也能有足夠的 LED 來防止過熱就更好了。
一個(gè)朋友推薦了 Thermaltake N23 機(jī)箱,價(jià)格 50 美元,我馬上就買了下來??上]有 LED。
組裝派對(duì)就要開始了
組裝
如果你沒有太多的硬件經(jīng)驗(yàn),并害怕弄壞某些部件,較好是找專業(yè)人士來組裝。然而,這可是我無法錯(cuò)過的學(xué)習(xí)機(jī)會(huì)啊(即時(shí)我已經(jīng)分享過此前操作硬件的悲慘經(jīng)歷了)。
第一步也是很重要的一步就是 閱讀說明手冊(cè),每個(gè)配件都會(huì)有一個(gè)手冊(cè)。這對(duì)我尤其重要,因?yàn)槲乙呀?jīng)做過一兩次組裝了,正好處于那種經(jīng)驗(yàn)不足容易搞砸事情的階段。
主板上的示意圖
在主板上安裝 CPU
CPU 放在了它的卡槽里,但杠桿拉不下去。
這一步要在把母板放入機(jī)箱之前完成。處理器旁邊有一個(gè)杠桿,需要提起來。這時(shí)候處理器就放在了底座上(這里要檢查兩次朝向是否正確)。最終杠桿會(huì)放下把 CPU 固定住。
我在安裝 CPU 時(shí)獲得了幫助
但我進(jìn)行這一步的時(shí)候很困難,一旦 CPU 放在了位置上,杠桿卻無法下降。我其實(shí)是讓一個(gè)更懂硬件的朋友通過視頻通話指導(dǎo)我完成的。結(jié)果發(fā)現(xiàn)把杠桿拉下去需要的力量超過了我預(yù)期的程度。
安裝好的風(fēng)扇
下一步就要把風(fēng)扇固定在 CPU 的頂部:風(fēng)扇的腳柱必須用螺絲旋緊到母板上。還要在安裝前考慮到把風(fēng)扇的電線放在哪里。我買的處理器帶有熱熔膠。如果你的沒有,要確保在 CPU 和冷卻單元之間加一些膠。如果你把風(fēng)扇拿下來了,也要把膠更換掉。
在機(jī)箱里安裝電源
穿過背面固定電源線
我把電源供應(yīng)單元(PSU)放在了主板的前方,讓電源線緊密的貼在機(jī)箱背側(cè)。
在機(jī)箱里安裝主板
這一步非常簡(jiǎn)單直接,小心地放進(jìn)去然后擰緊。一個(gè)磁性的螺絲刀是非常有幫助的。
然后連接電源線和機(jī)箱按鍵以及 LED。
安裝 NVMe 盤
把他放到 M2 槽里再擰緊就好了。小菜一碟。
安裝 RAM
在我費(fèi)力的把 RAM 裝到基底上時(shí),GTX 1080 Ti 靜靜的躺在那里等著輪到它。
結(jié)果我發(fā)現(xiàn)內(nèi)存條非常難裝,需要花很多功夫把它正確的固定住。有幾次我差點(diǎn)就放棄了,想著我肯定做的不對(duì)。最終有一個(gè)齒對(duì)上了,其他齒很快也跟著進(jìn)去了。
這時(shí)候我打開了電腦,以確保它能工作。讓我興奮的是,它正常啟動(dòng)了!
安裝 GPU
GTX 1080 Ti 放入主板
終于,GPU 毫不費(fèi)力的就滑了進(jìn)去。14 個(gè)引腳提供的電能讓它運(yùn)行了起來。
注意:不要立刻就把你的顯示器插入多余的卡槽。絕大部分情況下它需要驅(qū)動(dòng)來運(yùn)行(詳見下面的部分)。
終于,它完成了!
軟件設(shè)置
現(xiàn)在硬件設(shè)備已經(jīng)就緒,我們不再需要螺絲刀,而是鍵盤來設(shè)置相應(yīng)的軟件環(huán)境。
雙系統(tǒng)注意事項(xiàng):如果你打算安裝 Windows 操作系統(tǒng)(出于基準(zhǔn)測(cè)試的考慮,完全不是為了打游戲),那么請(qǐng)先安裝 Windows 再安裝 Linux。如果先裝的 Linux,那么不但用不上雙系統(tǒng),還得重裝 Ubuntu,因?yàn)?Windows 把啟動(dòng)分區(qū)弄亂了。
安裝 Ubuntu
大多數(shù)深度學(xué)習(xí)框架是首先基于 Linux 系統(tǒng)開發(fā),然后逐漸擴(kuò)展到支持其他操作系統(tǒng)。所以我選擇了 Ubuntu,默認(rèn)的 Linux 系統(tǒng)發(fā)行版。一個(gè)老掉牙的 2G 的 USB 驅(qū)動(dòng)盤對(duì)于系統(tǒng)安裝來說也還挺好使的。UNetbootin (OSX) 或者 Rufus (Windows)都可用于制作 Linux 的閃盤驅(qū)動(dòng)。在 Ubuntu 的安裝過程中,一路默認(rèn)選項(xiàng)到底都工作正常,沒出什么問題。
寫這篇文章的時(shí)候 Ubuntu 17.04 剛剛發(fā)行,我仍然使用的是上一個(gè)版本(16.04),而且網(wǎng)上也可以找到該版本很全面的快速入門手冊(cè)。
Ubuntu 服務(wù)器或者桌面版本:Ubuntu 服務(wù)器版本和桌面版本幾乎完全相同,只是服務(wù)器版本未安裝可視化界面(簡(jiǎn)稱 X)。我安裝了桌面版本并禁用了自啟動(dòng) X, 以便計(jì)算機(jī)可以在終端啟動(dòng) X。如有需要,還可以稍后通過鍵入 startx 來啟動(dòng)可視化桌面。
更新
現(xiàn)在讓我們把系統(tǒng)更新到版本。這里用的是 Jeremy Howard 寫的一個(gè)超級(jí)棒的 install-gpu 指令:
sudo apt-get update
sudo apt-get --assume-yes upgrade
sudo apt-get --assume-yes install tmux build-essential gcc g++ make binutils
sudo apt-get --assume-yes install software-properties-common
sudo apt-get --assume-yes install git
深度學(xué)習(xí)利器
為了使我們的計(jì)算機(jī)得到較大限度的深度學(xué)習(xí)使用,我們需要一系列技術(shù)來開發(fā)利用我們的 GPU:
GPU 驅(qū)動(dòng)程序—操作系統(tǒng)與顯卡的交互手段
CUDA—允許我們?cè)?GPU 上運(yùn)行通用代碼
CuDNN—在 CUDA 之上提供常規(guī)的深度神經(jīng)網(wǎng)絡(luò)程序
深度學(xué)習(xí)框架—Tensorflow、PyTorch、 Theano 等等。有了這些學(xué)習(xí)框架,深度神經(jīng)網(wǎng)絡(luò)就像搭積木一樣,簡(jiǎn)直簡(jiǎn)單太多了。
安裝 CUDA?
從 Nvidia 下載 CUDA, 或者直接運(yùn)行如下指令:
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
安裝完畢之后,運(yùn)行如下指令為 CUDA 添加到路徑變量:
cat >> ~/.tmp << "EOF"
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
EOF
source ~/.bashrc
運(yùn)行如下指令測(cè)試 CUDA 是否安裝成功:
nvcc --version # Checks CUDA version
nvidia-smi # Info about the detected GPUs
顯卡驅(qū)動(dòng)程序的安裝指令如下。對(duì)于我的機(jī)器來說,nvidia-smi 用 ERR 作為設(shè)備名稱,所以我安裝了版本的 Nvidia 驅(qū)動(dòng)(本文寫作之時(shí)剛解決這個(gè)問題):
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/378.13/NVIDIA-Linux-x86_64-378.13.run
sudo sh NVIDIA-Linux-x86_64-375.39.run
sudo reboot
移除 CUDA/Nvidia 驅(qū)動(dòng)
如果出于某種原因或者 CUDA 看起來壞掉了(我碰到過很多次這樣的情況),那我們可以運(yùn)行如下指令進(jìn)行重裝:
sudo apt-get remove --purge nvidia*
sudo apt-get autoremove
sudo reboot
CuDNN
由于目前的 Tensorflow 版本尚不支持 CuDNN 6, 所以我安裝的是 CuDNN 5.1 版本。要下載 CuDNN,首先需要注冊(cè)一個(gè)免費(fèi)的開發(fā)者賬戶。下載完畢后,安裝操作如下:
tar -xzf cudnn-8.0-linux-x64-v5.1.tgz
cd cuda
sudo cp lib64/* /usr/local/cuda/lib64/
sudo cp include/* /usr/local/cuda/include/
Anaconda
Anaconda 是一個(gè)非常強(qiáng)大的 Python 包與環(huán)境管理工具。我的 Python 版本已經(jīng)是 3.6,所以使用了 Anaconda 3 版本。其安裝指令如下:
wget https://repo.continuum.io/archive/Anaconda3-4.3.1-Linux-x86_64.sh -O「anaconda-install.sh」
bash anaconda-install.sh -b
cat >> ~/.bashrc << "EOF"
export PATH=$HOME/anaconda3/bin:${PATH}
EOF
source .bashrc
conda upgrade -y --all
source activate root
TensoFlow
Tensorflow 是 Google 開源的一款非常流行的深度學(xué)習(xí)框架,安裝方法如下:
sudo apt install python3-pip
pip install tensorflow-gpu
驗(yàn)證 Tensorflow 的安裝:為保證我們的一系列工具能夠順暢地運(yùn)行,我運(yùn)行 Tensorflow 的 MNIST 數(shù)據(jù)做測(cè)試:
git clone https://github.com/tensorflow/tensorflow.git
python tensorflow/tensorflow/examples/tutorials/mnist/fully_connected_feed.py
我們可以看到,在訓(xùn)練過程中損失也是在下降的:
Step 0: loss = 2.32 (0.139 sec)
Step 100: loss = 2.19 (0.001 sec)
Step 200: loss = 1.87 (0.001 sec)
Keras
Keras 是一款高級(jí)的神經(jīng)網(wǎng)絡(luò)框架,非常友好的工作利器。它的安裝也是再簡(jiǎn)單不過了:
pip install keras
PyTorch
PyTorch 是深度學(xué)習(xí)框架領(lǐng)域的后來者,但它的 API 是基于非常成熟的 Torch。PyTorch 雖然仍然處在需要繼續(xù)試用的階段,但總的來說它給人全新的感受,非常出色。安裝指令如下:
conda install pytorch torchvision cuda80 -c soumith
Jupyter 筆記本
Jupyter 是一個(gè)基于網(wǎng)頁的 IDE,適用于 Python。它是一款理想的數(shù)據(jù)科學(xué)任務(wù)處理工具,可以通過 Anaconda 安裝,所以我們只需簡(jiǎn)單地配置并測(cè)試:
# Create a ~/.jupyter/jupyter_notebook_config.py with settings
jupyter notebook --generate-config
jupyter notebook --port=8888 --NotebookApp.token="" # Start it
現(xiàn)在我們只需在瀏覽器鍵入 http://localhost:8888,就可以見到 Jupyter 界面。
啟動(dòng)時(shí)運(yùn)行 Jupyter
與其在電腦每次重啟時(shí)多帶帶運(yùn)行 Jupyter,我們可以將其設(shè)置成啟動(dòng)時(shí)自動(dòng)運(yùn)行。使用 crontab -e 命令來完成這項(xiàng)操作,然后在 crontab 文件的最后一行添加指令如下:
# Replace "path-to-jupyter" with the actual path to the jupyter
# installation (run "which jupyter" if you don"t know it). Also
# "path-to-dir" should be the dir where your deep learning notebooks?
# would reside (I use ~/DL/).
@reboot (http://twitter.com/reboot) path-to-jupyter ipython notebook --no-browser --port=8888 --NotebookApp.token="" --notebook-dir path-to-dir &
外部訪問
我用的是一臺(tái)雖然舊但是完全可靠的 MacBook Air 來做開發(fā),我希望能在家登錄到這個(gè)深度學(xué)習(xí)網(wǎng)絡(luò)。
使用 SSH 比簡(jiǎn)單地使用密碼更為安全。關(guān)于如何設(shè)置可以參考 Digital Ocean 提供的指南:https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2
SSH 通道:如果你希望在另外一臺(tái)電腦上使用你的 Jupyter 筆記本,推薦使用 SSH 通道(以取代用密碼來打開筆記本)。讓我們來看看具體該怎么做:
首先我們需要一個(gè) SSH 服務(wù)器。我們只需在深度學(xué)習(xí)盒子(服務(wù)器)上運(yùn)行如下指令即可安裝 SSH:
sudo apt-get install openssh-server
sudo service ssh status
然后在客戶端運(yùn)行以下腳本來連接 SSH 通道:
# Replace user@host with your server user and ip.
ssh -N -f -L localhost:8888:localhost:8888 user@host
在遠(yuǎn)程機(jī)器上打開瀏覽器,鍵入 http://localhost:8888 進(jìn)行測(cè)試,這時(shí)候屏幕上應(yīng)該可以出現(xiàn)你的 Jupyter 筆記本了。
設(shè)置網(wǎng)絡(luò)外訪問:最后,需要從外部訪問深度學(xué)習(xí)網(wǎng)絡(luò),我們需要三個(gè)步驟:
你的家庭網(wǎng)絡(luò)的靜態(tài) IP (或者一個(gè)可用于模擬的服務(wù)器)—以便我們可以知道將要聯(lián)通的地址。
一個(gè)手動(dòng) IP 或者 DHCP 保留設(shè)置,這樣可以將深度學(xué)習(xí)所在的服務(wù)器地址設(shè)置為你家庭網(wǎng)絡(luò)的永久地址。
從路由器到深度學(xué)習(xí)盒子的端口轉(zhuǎn)發(fā)。
外部網(wǎng)絡(luò)的訪問權(quán)限取決于路由器以及網(wǎng)絡(luò)的設(shè)置,所以我在此不做贅述。
基準(zhǔn)測(cè)試
現(xiàn)在一切都運(yùn)行順暢,我們可以用這個(gè)新盒子來做些測(cè)試了。我會(huì)把這套新組裝成的系統(tǒng)與 AWS P2 來做比較,AWS P2 是我之前使用的深度學(xué)習(xí)系統(tǒng)。由于我們的測(cè)試都跟計(jì)算機(jī)視覺有關(guān),這意味著得使用卷積網(wǎng)絡(luò)和一個(gè)全連接模型。我們分別用 AWS P2 GPU(K80) 、AWS P2 CPU、GTX1080 Ti 以及 Intel I5 來訓(xùn)練模型,并比較其各自的運(yùn)行時(shí)間。
MNIST 多層感知機(jī)
計(jì)算機(jī)視覺領(lǐng)域的"hello world"—MNIST 數(shù)據(jù)庫,收集了 70,000 個(gè)手寫的數(shù)字。我們運(yùn)行 Keras 中的多層感知機(jī) (MLP) 來處理 MNIST 數(shù)據(jù)庫。多次感知機(jī)只需全連接層而不用卷積。該模型將數(shù)據(jù)訓(xùn)練了 20 個(gè) epoch 之后,準(zhǔn)確率達(dá)到了 98%。
訓(xùn)練該模型時(shí),GTX 1080 Ti 比 AWS P2 的 K80 要快 2.4 倍。這是讓人感到驚訝的結(jié)果,因?yàn)橥ǔUf來這二者的表現(xiàn)應(yīng)該差不多。我認(rèn)為原因可能出在 AWS K80 的虛擬化或者降頻問題上。
CPU 運(yùn)行起來比 GPU 慢 9 倍之多。所有實(shí)驗(yàn)結(jié)束后我們可知,這其實(shí)對(duì)處理器來說已經(jīng)是一個(gè)很好的結(jié)果了。因?yàn)榇祟惡?jiǎn)單模型還不能充分發(fā)揮出 GPU 并行運(yùn)算的能力。
有意思的是,臺(tái)式機(jī) Intel i5-7500 在 Amazon 的虛擬 CPU 上實(shí)現(xiàn)了 2.3 倍的加速。
VGG(Visual Geometry Group)調(diào)參
VGG 網(wǎng)絡(luò)將被用于 Kaggle 舉辦的貓狗辨識(shí)比賽。這個(gè)比賽旨在辨識(shí)出給定圖片是貓還是狗。在 GPU 上運(yùn)行相同批次(batches)數(shù)量的模型不太可行。所以我們?cè)?GPU 上運(yùn)行 390 批次(1 epoch),在 CPU 上運(yùn)行 10 個(gè)批次。代碼可以在 GitHub 上找到:https://github.com/slavivanov/cats_dogs_kaggle
1080 Ti 比 AWS GPU(K80) 快了 5.5 倍。這應(yīng)該與上一個(gè)實(shí)驗(yàn)結(jié)果(i5 快 2.6 倍)有類似的原因。然而 CPU 對(duì)于該任務(wù)來說根本不適用,因?yàn)橄噍^于 GPU, 運(yùn)行這種包括了 16 層卷積層和一對(duì) semi-wide(4098)全連接層的大型模型,CPU 得花 200 多倍的時(shí)間。
Wasserstein GAN
GAN(生成對(duì)抗網(wǎng)絡(luò))是一種訓(xùn)練模型使其生成圖片的方法。其原理是將兩種網(wǎng)絡(luò)結(jié)構(gòu)放在一起相互對(duì)抗:其生成器將學(xué)習(xí)生成越來越高質(zhì)量的圖片,而辨別器則會(huì)嘗試辨別出哪些圖片是真實(shí)的哪些是由生成其「?jìng)卧臁钩鰜淼摹?/p>
Wasserstein GAN 是經(jīng)典生成對(duì)抗網(wǎng)絡(luò)的升級(jí)。我們用 PyTorch 來實(shí)現(xiàn)這一模型,該實(shí)現(xiàn)和 WGAN 作者所完成的很像。模型訓(xùn)練了 50 步,幾乎每一步都有損失,這是 GAN 網(wǎng)絡(luò)模型的普遍情況。通常并不考慮使用 CPU 來完成。
GTX 1080Ti 比 AWS P2 K80 快了 5.5 倍,這樣的結(jié)果與之前的實(shí)驗(yàn)結(jié)果是一致的。
風(fēng)格遷移
最后一個(gè)基準(zhǔn)測(cè)試是源自一篇關(guān)于圖片風(fēng)格轉(zhuǎn)換器的論文(Gateys et al.),使用的是 Tensorflow。風(fēng)格轉(zhuǎn)換是一種圖片處理技術(shù),它能將某一張圖片(比如一幅畫)的風(fēng)格與另一張圖片的內(nèi)容相結(jié)合,從而生成新的圖片。它分離和重組任意圖像的內(nèi)容和樣式,為藝術(shù)圖像的創(chuàng)建提供了一種新算法。
GTX 1080Ti 比 AWS P2 K80 快了 4.3 倍。這次 CPU 比 GPU 慢了 30-50 倍,已經(jīng)比在 VGG 任務(wù)中的表現(xiàn)好多了,但仍然比 MNIST 多層感知機(jī)實(shí)驗(yàn)結(jié)果慢。該模型主要使用 VGG 網(wǎng)絡(luò)中的較初級(jí)的層級(jí),我懷疑這樣淺層的網(wǎng)絡(luò)無法充分利用 GPU。
以上就是這一次搭建的深度學(xué)習(xí)盒子的基準(zhǔn)測(cè)試,我不知道從 AWS 轉(zhuǎn)入到自建服務(wù)器到底是好還是壞,但時(shí)間會(huì)告訴我們一切!
原文地址:https://blog.slavv.com/the-1700-great-deep-learning-box-assembly-setup-and-benchmarks-148c5ebe6415
歡迎加入本站公開興趣群商業(yè)智能與數(shù)據(jù)分析群
興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價(jià)值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報(bào)表系統(tǒng)等全方位知識(shí)
QQ群:81035754
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/4547.html
摘要:在低端領(lǐng)域,在上訓(xùn)練模型的價(jià)格比便宜兩倍。硬件定價(jià)價(jià)格變化頻繁,但目前提供的實(shí)例起價(jià)為美元小時(shí),以秒為增量計(jì)費(fèi),而更強(qiáng)大且性能更高的實(shí)例起價(jià)為美元小時(shí)。 隨著越來越多的現(xiàn)代機(jī)器學(xué)習(xí)任務(wù)都需要使用GPU,了解不同GPU供應(yīng)商的成本和性能trade-off變得至關(guān)重要。初創(chuàng)公司Rare Technologies最近發(fā)布了一個(gè)超大規(guī)模機(jī)器學(xué)習(xí)基準(zhǔn),聚焦GPU,比較了幾家受歡迎的硬件提供商,在機(jī)器學(xué)...
摘要:很明顯這臺(tái)機(jī)器受到了英偉達(dá)的部分啟發(fā)至少機(jī)箱是這樣,但價(jià)格差不多只有的一半。這篇個(gè)文章將幫助你安裝英偉達(dá)驅(qū)動(dòng),以及我青睞的一些深度學(xué)習(xí)工具與庫。 本文作者 Roelof Pieters 是瑞典皇家理工學(xué)院 Institute of Technology & Consultant for Graph-Technologies 研究深度學(xué)習(xí)的一位在讀博士,他同時(shí)也運(yùn)營(yíng)著自己的面向客戶的深度學(xué)習(xí)產(chǎn)...
摘要:本文作者詳細(xì)描述了自己組裝深度學(xué)習(xí)服務(wù)器的過程,從主板電源機(jī)箱等的選取到部件的安裝,再到服務(wù)器的設(shè)置,可謂面面俱到。注本文旨在討論服務(wù)器設(shè)置及多用戶協(xié)作,部件組裝和軟件安裝過程是關(guān)于創(chuàng)建自己的的文章的簡(jiǎn)化版本。本文作者詳細(xì)描述了自己組裝深度學(xué)習(xí)服務(wù)器的過程,從 CPU、GPU、主板、電源、機(jī)箱等的選取到部件的安裝,再到服務(wù)器的設(shè)置,可謂面面俱到。作者指出,組裝者首先要弄清自己的需求,然后根據(jù)...
摘要:深度學(xué)習(xí)是一個(gè)對(duì)算力要求很高的領(lǐng)域。這一早期優(yōu)勢(shì)與英偉達(dá)強(qiáng)大的社區(qū)支持相結(jié)合,迅速增加了社區(qū)的規(guī)模。對(duì)他們的深度學(xué)習(xí)軟件投入很少,因此不能指望英偉達(dá)和之間的軟件差距將在未來縮小。 深度學(xué)習(xí)是一個(gè)對(duì)算力要求很高的領(lǐng)域。GPU的選擇將從根本上決定你的深度學(xué)習(xí)體驗(yàn)。一個(gè)好的GPU可以讓你快速獲得實(shí)踐經(jīng)驗(yàn),而這些經(jīng)驗(yàn)是正是建立專業(yè)知識(shí)的關(guān)鍵。如果沒有這種快速的反饋,你會(huì)花費(fèi)過多時(shí)間,從錯(cuò)誤中吸取教訓(xùn)...
摘要:但是如果你和我是一樣的人,你想自己攢一臺(tái)奇快無比的深度學(xué)習(xí)的電腦??赡軐?duì)深度學(xué)習(xí)最重要的指標(biāo)就是顯卡的顯存大小。性能不錯(cuò),不過夠貴,都要美元以上,哪怕是舊一點(diǎn)的版本。電源我花了美元買了一個(gè)的電源。也可以安裝,這是一個(gè)不同的深度學(xué)習(xí)框架。 是的,你可以在一個(gè)39美元的樹莓派板子上運(yùn)行TensorFlow,你也可以在用一個(gè)裝配了GPU的亞馬遜EC2的節(jié)點(diǎn)上跑TensorFlow,價(jià)格是每小時(shí)1美...
閱讀 1756·2021-11-24 09:39
閱讀 1686·2021-11-22 15:22
閱讀 1002·2021-09-27 13:36
閱讀 3229·2021-09-24 10:34
閱讀 3328·2021-07-26 23:38
閱讀 2632·2019-08-29 16:44
閱讀 973·2019-08-29 16:39
閱讀 1103·2019-08-29 16:20