摘要:很明顯這臺(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)營著自己的面向客戶的深度學(xué)習(xí)產(chǎn)品。對(duì)于寫作這個(gè)系列文章的動(dòng)機(jī),他寫道:「我已經(jīng)習(xí)慣了在云上工作,并且還將繼續(xù)在云上開發(fā)面向產(chǎn)品的系統(tǒng)/算法。但是在更面向研究的任務(wù)上,基于云的系統(tǒng)還存在一些缺陷,因?yàn)樵谘芯繒r(shí)你要做的基本上就是嘗試各種各樣的算法和架構(gòu),并且需要快速改進(jìn)和迭代。為了做到這一點(diǎn),我決定自己使用 GPU 設(shè)計(jì)和打造自己的量身定制的深度學(xué)習(xí)系統(tǒng)。在這一些方面這比我想象的簡單,但另一些方面卻更困難。在接下來的文章中,我會(huì)和你分享我的『冒險(xiǎn)之旅』,不關(guān)你是深度學(xué)習(xí)實(shí)踐的新手還是老手,希望這都對(duì)你有用。」目前該系列文章已經(jīng)更新了兩篇,機(jī)器之心將其統(tǒng)一編譯到了這篇文章中。
第一部分:硬件平臺(tái)搭建
如果你像我一樣,每天(和每夜)都在和實(shí)際的機(jī)器學(xué)習(xí)應(yīng)用打交道,你就知道在完成一項(xiàng)任務(wù)時(shí)如果沒有合適的硬件會(huì)有多么痛苦。不管你是業(yè)界人士還是在學(xué)術(shù)界工作,為了一項(xiàng)實(shí)驗(yàn)或計(jì)算的結(jié)果等待不必要長的時(shí)間總是會(huì)讓人感到煩惱。對(duì)于用于生產(chǎn)的研究和開發(fā),高速硬件是必需的,而 GPU 通常是我們所面臨的主要瓶頸,尤其對(duì)于深度神經(jīng)網(wǎng)絡(luò)(DNN)更是如此。是的,確實(shí)是這樣:亞馬遜這樣的云提供商以低于每小時(shí) 1 美元的價(jià)格出售可以執(zhí)行 GPU 計(jì)算的實(shí)例和可以導(dǎo)出、共享和重復(fù)使用的可以直接進(jìn)行生產(chǎn)的虛擬機(jī)。如果你常常從頭開始安裝庫,你可能知道軟件和硬件庫都可以使用定期更新的安裝腳本或 dockerized 容器輕松地完成安裝。這些都還不錯(cuò)。但是如果一個(gè)應(yīng)用的需求超過了亞馬遜所能提供的 4GB GPU 呢(即使他們的 g2.8xlarge 仍然也只提供同樣的 4GB GPU)?其它云提供商也很少提供更大的 GPU(通常是 6GB),而且似乎都是專門為特定的應(yīng)用(視頻版或生物科學(xué))定制的。
那么如果你有這種需求,你該怎么做呢?很簡單,搭建你自己的 GPU 平臺(tái)!
目錄
了解你的研究
起步:選擇正確的組件
將它們組裝到一起
DIY 或?qū)で髱椭?/p>
選項(xiàng) A:DIY
選項(xiàng) B:外界幫助
了解你的研究
一旦我決定了搭建我自己的 GPU 系統(tǒng)時(shí),我首先想到的是:為什么要這么麻煩自己去搭建一個(gè)呢,英偉達(dá)不是剛發(fā)布了其強(qiáng)大的 DevBox 嗎,而且還可能有其它供應(yīng)商也在為深度學(xué)習(xí)應(yīng)用做同樣的事?
確實(shí)如此,也有一些其它公司在生產(chǎn)面向研究的機(jī)器,但它們都不面向歐洲發(fā)售。英偉達(dá)的 DevBox 也僅在美國出售,而且價(jià)格還高得離譜(大約 9000 美元的硬件組件售價(jià) 1.5 萬美元),而且還要排隊(duì)等待。
所以該怎么辦呢?簡單:搭建你自己的 GPU 平臺(tái)!
起步:選擇正確的組件
瀏覽網(wǎng)絡(luò)時(shí)我發(fā)現(xiàn) Tim Dettmers 的博客(http://timdettmers.com/)很好地講解了如何為深度學(xué)習(xí)應(yīng)用選擇合適的 GPU 和硬件。在這里我不打算將他說過的內(nèi)容再完全重復(fù)一遍。你可以自己去他的博客看!文章和下面的評(píng)論都值得一讀。
簡而言之:
雙精度(比如英偉達(dá)的 Tesla K20/40/80)完全是浪費(fèi)錢,因?yàn)?DNN 不需要這樣的精度;
想想你現(xiàn)在和未來需要多少個(gè) GPU。4 個(gè) GPU 是最多了,因?yàn)樵俣嘁膊荒茉賻硖嘈阅茉鲆媪恕_@主要是因?yàn)檩^好的主板最多只支持最多 40 個(gè)通道(以 16x8x8x8 的配置)。另外,每個(gè) GPU 都會(huì)增加一定的管理工作——你的系統(tǒng)需要決定使用哪個(gè) GPU 來執(zhí)行哪項(xiàng)任務(wù)。
獲取一個(gè)支持 PCIe 3.0 的主板,它還要支持一根線纜上帶有 8pin + 6pin 的 PCIe 電源連接器,這樣你才能添加到 4 個(gè) GPU。主板還應(yīng)該支持你的 GPU 配置,即支持 x8/x8/x8/x8 的 4 GPU 設(shè)置的物理線路;
找一個(gè)能把所有東西都裝進(jìn)去的機(jī)箱。越大的機(jī)箱空氣流動(dòng)就越好。確保有足夠的 PCIe 槽以支持所有 GPU 以及其它你可能需要安裝的 PCIe 卡(比如高速千兆網(wǎng)卡等)。一個(gè) GPU 通常會(huì)占據(jù) 2 個(gè) PCIe 插槽的空間。一個(gè)典型的機(jī)箱需要有 7 個(gè) PCIe 槽,因?yàn)樽詈笠粋€(gè)安裝在底部的 GPU 可以僅使用一個(gè)槽。
CPU 不需要非???,也不需要有很多核。只需要確保 CPU 的核數(shù)至少是你的 GPU 的數(shù)量的兩倍就可以了(再次強(qiáng)調(diào):要考慮未來的使用情況;英特爾的 CPU 通常一個(gè)核有兩個(gè)線程)。還要確保該 CPU 支持 40 個(gè) PCIe 通道,一些新的 Haswell CPU 只支持 32 個(gè);
RAM 大小是你的全部 GPU 內(nèi)存之和的兩倍;
SSD 很不錯(cuò),但除非決定有必要才用——如果你加載的數(shù)據(jù)無法配入到 GPU 內(nèi)存和 RAM 的組合中。如果你確實(shí)要使用一個(gè) SSD,它的容量至少應(yīng)該大于你較大的數(shù)據(jù)集;
至于普通的機(jī)械硬盤,你可能需要大量的磁盤空間來存儲(chǔ)你的數(shù)據(jù)集和其它類型的數(shù)據(jù)。如果你需要至少 3 個(gè)同樣大小的磁盤,RAID5 就很不錯(cuò)。基本上一旦發(fā)生單個(gè)錯(cuò)誤時(shí),你不會(huì)丟失你的數(shù)據(jù)。用于提升性能的 RAID0 等其它 RAID 配置通常沒多大用處:你可用 SSD 提速,而且它已經(jīng)超過了你的 GPU 通過 PCIe 帶寬加載數(shù)據(jù)的速度;
至于供電單元(PSU),只要你負(fù)擔(dān)得起,就盡可能選一個(gè)較高效的,并且要把你所需要的總功率考慮在內(nèi)(要考慮未來的使用):鈦或鉑金品質(zhì)的 PSU 值得你花錢購買:你能省錢和保護(hù)環(huán)境,因?yàn)槠渌?jié)省的電力開銷用不了多久就能把你的額外購買成本節(jié)省回來。對(duì)于 4 GPU 系統(tǒng),你大概需要 1500 到 1600 W;
冷卻是非常非常重要的,因?yàn)樗鼤?huì)同時(shí)影響到性能和噪音。你需要一直將 GPU 的溫度保持在 80 度(約 26.7 攝氏度)以下。更高的溫度會(huì)拉低該單元的電壓并影響到性能。另外,太高的溫度也對(duì)你的 GPU 有害;這是你需要避免的。冷卻有兩種主要選項(xiàng):風(fēng)冷(風(fēng)扇)和水冷(管道):
風(fēng)冷更便宜、安裝和維護(hù)更簡單、但會(huì)制造大量噪音;
水冷價(jià)格更高、難以正確安裝,但沒有任何噪音,而且對(duì)組件的冷卻效果也好得多。但你總歸需要機(jī)箱風(fēng)扇來冷卻其它組件,所以你總會(huì)聽到一些噪音,但會(huì)比全風(fēng)冷的系統(tǒng)的噪音小。
將它們組裝到一起
根據(jù)我讀到的內(nèi)容、Tim Dettmers 的回復(fù)和英偉達(dá)的 DevBox and Gamer 論壇的建議,我開始將這些組件組裝到一起。很明顯這臺(tái)機(jī)器受到了英偉達(dá) DevBox 的部分啟發(fā)(至少機(jī)箱是這樣),但價(jià)格差不多只有 DevBox 的一半。
機(jī)箱:Carbide Air 540 High Airflow ATX Cube
主板:華碩 X99-E WS 工作站級(jí)主板,帶有 4 路 PCI-E Gen3 x16 支持
RAM:64GB DDR4 Kingston 2133Mhz (8x8GB)
CPU:Intel(Haswell-e) Core i7 5930K (http://ark.intel.com/products/82931/Intel-Core-i7-5930K-Processor-15M-Cache-up-to-3_70-GHz) (6 Core 3.5GHz)
GPU:3 塊 NVIDIA GTX TITAN-X 12GB
HDD:3 塊 RAID5 配置的 3TB WD Red
SSD:2 塊 500GB SSD Samsung EVO 850
PSU: Corsair AX1500i (1500 W) 80 Plus Titanium (94% 的能效)
冷卻:用于 CPU 和 GPU 的自制水冷系統(tǒng)(軟管):在機(jī)箱頂部鉆了一個(gè)注水孔,前面有一個(gè)透明的儲(chǔ)水器(見下圖)
左圖:正在構(gòu)建中的系統(tǒng)。你可以看到用于水冷的塑料管穿過 Carbide Air 540 機(jī)箱上原本就有的孔洞。主板是豎直安裝的。
中圖和右圖:建造好的系統(tǒng)。注意可以從外面看到的儲(chǔ)水器。還可以看到從上至下的紅色塑料管:上連注水口,下接水泵,穿過安裝在 GPU 上的散熱器模塊。還可以看到 CPU 上有一個(gè)類似的結(jié)構(gòu)。
DIY 或?qū)で髱椭?/p>
選項(xiàng) A:DIY
當(dāng)然,如果你有時(shí)間和意愿自己動(dòng)手打造所有的一切,這將成為你完全理解各個(gè)組件的工作方式以及哪些硬件可以很好適配的絕佳方法。另外,你也可能能更好地理解當(dāng)組件出現(xiàn)故障時(shí)應(yīng)該做什么并更輕松地修復(fù)它。
選項(xiàng) B:外界幫助
另一種選擇是尋找專業(yè)的公司預(yù)定零件并讓他們幫助組裝好整個(gè)系統(tǒng)。你要尋找的這類公司應(yīng)該是定制游戲機(jī)電腦的公司,他們常常為游戲玩家打造定制化的系統(tǒng)。他們甚至有水冷系統(tǒng)的經(jīng)驗(yàn),盡管游戲機(jī)電腦通常只需要水冷 CPU,但他們會(huì)有很好用的工具套件。當(dāng)然,為了安裝全水冷系統(tǒng),你需要將 GPU 外殼打開,將芯片暴露出來安裝散熱片,再裝上水管、壓縮機(jī)帽等等各種所需的組件。不過水冷也有麻煩的地方:一旦出現(xiàn)漏水,你的 GPU 和其它組件就會(huì)被毀壞。
因?yàn)槲矣X得我不能將這些東西裝在一起以及正確地安裝水冷氣系統(tǒng),而且我還沒有多少時(shí)間閱讀操作手冊(cè),所以我選擇了第二種方案:找了一個(gè)非常熟練的硬件打造商幫我組裝了我的深度學(xué)習(xí)機(jī)器的第一個(gè)版本。
第二部分:安裝軟件和庫
目錄?
軟件和庫
安裝 CUDA?
測(cè)試 CUDA?
深度學(xué)習(xí)庫
軟件和庫
現(xiàn)在,我們有了一臺(tái)裸機(jī),是時(shí)候安裝軟件了!網(wǎng)上已有有了一些好的博文指導(dǎo)安裝深度學(xué)習(xí)工具和庫。為了簡單化,我臨時(shí)把一些要旨放在一起。這篇個(gè)文章將幫助你安裝英偉達(dá) CUDA 驅(qū)動(dòng),以及我青睞的一些深度學(xué)習(xí)工具與庫。此外,我也假設(shè)你已經(jīng)在電腦上安裝了 Ubuntu 14.04.3 作為操作系統(tǒng)。
1.安裝 CUDA?
讓圖像驅(qū)動(dòng)程序能正常工作是一件很痛苦的事。我當(dāng)時(shí)的問題是 Titan X GPU 只能得到 Nvidia 346 的支持,這些驅(qū)動(dòng)不能在我特定的監(jiān)控器下工作。經(jīng)過一些 xconfig 改裝,我終于讓它能在高于 800×600 的分辨率下工作了,我使用了 Linux X64 (AMD64/EM64T) DISPLAY DRIVER 352.30 版本作為圖像驅(qū)動(dòng)。
設(shè)置演示安裝的是 CUDA 7.0,我選擇安裝的 CUDA 7.5。雖然該版本的確有所改進(jìn),但在一些庫上也難以正常工作。如果你想快速啟動(dòng)并運(yùn)行,可以嘗試 7.0 版本。
!/usr/bin/env bash
# Installation script for Cuda and drivers on Ubuntu 14.04, by Roelof Pieters (@graphific)
# BSD License
if [ "$(whoami)" == "root" ]; then
? echo "running as root, please run as user you want to have stuff installed as"
? exit 1
fi
###################################
# ? Ubuntu 14.04 Install script for:
# - Nvidia graphic drivers for Titan X: 352
# - Cuda 7.0 (7.5 gives "out of memory" issues)
# - CuDNN3
# - Theano (bleeding edge)
# - Torch7
# - ipython notebook (running as service with circus auto(re)boot on port 8888)
# - itorch notebook (running as service with circus auto(re)boot on port 8889)
# - Caffe?
# - OpenCV 3.0 gold release (vs. 2015-06-04)
# - Digits
# - Lasagne
# - Nolearn
# - Keras
###################################
# started with a bare ubuntu 14.04.3 LTS install, with only ubuntu-desktop installed
# script will install the bare minimum, with all "extras" in a seperate venv
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update -y
sudo apt-get install -y git wget linux-image-generic build-essential unzip
# manual driver install with:
# sudo service lightdm stop
# (login on non graphical terminal)
# wget http://uk.download.nvidia.com/XFree86/Linux-x86_64/352.30/NVIDIA-Linux-x86_64-352.30.run
# chmod +x ./NVIDIA-Linux-x86_64-352.30.run
# sudo ./NVIDIA-Linux-x86_64-352.30.run
# Cuda 7.0
# instead we install the nvidia driver 352 from the cuda repo
# which makes it easier than stopping lightdm and installing in terminal
cd /tmp
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb
echo -e " export CUDA_HOME=/usr/local/cuda export CUDA_ROOT=/usr/local/cuda" >> ~/.bashrc
echo -e " export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc
echo "CUDA installation complete: please reboot your machine and continue with script #2"
2. 測(cè)試 CUDA?
完成安裝了?很好,接下來讓我們看一下 CUDA 驅(qū)動(dòng)是否能夠正常工作。直接進(jìn)入 CUDA 樣本目錄,運(yùn)行 ./deviceQuery。你的 GPU 應(yīng)該會(huì)被顯示如下:
#!/usr/bin/env bash
# Test script for checking if Cuda and Drivers correctly installed on Ubuntu 14.04, by Roelof Pieters (@graphific)
# BSD License
if [ "$(whoami)" == "root" ]; then
? echo "running as root, please run as user you want to have stuff installed as"
? exit 1
fi
###################################
# ? Ubuntu 14.04 Install script for:
# - Nvidia graphic drivers for Titan X: 352
# - Cuda 7.0 (7.5 gives "out of memory" issues)
# - CuDNN3
# - Theano (bleeding edge)
# - Torch7
# - ipython notebook (running as service with circus auto(re)boot on port 8888)
# - itorch notebook (running as service with circus auto(re)boot on port 8889)
# - Caffe?
# - OpenCV 3.0 gold release (vs. 2015-06-04)
# - Digits
# - Lasagne
# - Nolearn
# - Keras
###################################
# started with a bare ubuntu 14.04.3 LTS install, with only ubuntu-desktop installed
# script will install the bare minimum, with all "extras" in a seperate venv
export DEBIAN_FRONTEND=noninteractive
# Checking cuda installation
# installing the samples and checking the GPU
cuda-install-samples-7.0.sh ~/
cd NVIDIA\_CUDA-7.0\_Samples/1\_Utilities/deviceQuery ?
make ?
#Samples installed and GPU(s) Found ?
./deviceQuery ?| grep "Result = PASS"
greprc=$?
if [[ $greprc -eq 0 ]] ; then
? ? echo "Cuda Samples installed and GPU found"
? ? echo "you can also check usage and temperature of gpus with nvidia-smi"
else
? ? if [[ $greprc -eq 1 ]] ; then
? ? ? ? echo "Cuda Samples not installed, exiting..."
? ? ? ? exit 1
? ? else
? ? ? ? echo "Some sort of error, exiting..."
? ? ? ? exit 1
? ? fi
fi
echo "now would be time to install cudnn for a speedup"
echo "unfortunately only available by registering on nvidias website:"
echo "https://developer.nvidia.com/cudnn"
echo "deep learning libraries can be installed with final script #3"
3. 深度學(xué)習(xí)庫
好了,來到最后一步,它也是很有趣的一部分:選擇個(gè)人偏好的深度學(xué)習(xí)庫,這也是由所在領(lǐng)域所決定的。
作為研究人員,Theano 能給你較大的自由度,做自己想做的事。你可以自己部署許多事,也因此更能深度理解 DNN 如何工作。但對(duì)想首先嘗試下的初學(xué)者來說可能不合適。
我個(gè)人是 Keras(主要貢獻(xiàn)者:Fran?ois Chollet,已經(jīng)加入了谷歌)和 Lasagne(8 個(gè)人的團(tuán)隊(duì),但主要貢獻(xiàn)者是 Sander Dielemans,近期讀完了博士,如今加入了谷歌 DeepMind)的粉絲。這兩個(gè)庫有很好的抽象水平,也被積極的開發(fā),也提供插入自己模塊或代碼工程的簡單方式。
如果你習(xí)慣 Python,那使用 Torch 會(huì)具有挑戰(zhàn)性,因?yàn)槟阈枰獙W(xué)習(xí) Lua。在使用 Torch 一段時(shí)間之后,我可以說它是一個(gè)很好使用的語言。一個(gè)問題是從其他語言接入到 Lua 很難。對(duì)研究目的,Torch 表現(xiàn)也很好。但對(duì)生產(chǎn)水平管道而言,Torch 難以進(jìn)行測(cè)試,而且看起來完全缺乏任何類型的錯(cuò)誤處理。Torch 積極的一面有:支持 CUDA,有很多可以使用的 程序包。Torch 看起來也是產(chǎn)業(yè)內(nèi)使用最普遍的庫。Facebook(Ronan Collobert & Soumith Chintala)、DeepMind(Koray Kavuk?uo?lu)、Twitter(Clement Farabet)的這些人都是主要貢獻(xiàn)者。
Caffe 是之前占據(jù)主導(dǎo)地位的深度學(xué)習(xí)框架(主要用于 Convnets),如今仍在被普遍使用,也是一個(gè)可以作為開始的很好的框架。訓(xùn)練制度(solver.prototxt)與架構(gòu)(train val.prototxt)文檔之間的分離使得實(shí)驗(yàn)更容易進(jìn)行。我發(fā)現(xiàn) Caffe 也是一個(gè)支持使用電腦外多 GPU 的框架,你可以穿過 GPU 或 GPU id 參數(shù)使用所有可用的 GPU。
Blocks 是最近的一款基于 Python 的框架,很好的分離了自己編寫的模塊與被稱為 Brick 的模塊。特別是其 partner「Fuel」,是一個(gè)處理數(shù)據(jù)的很好方式。Fuel 是一個(gè)對(duì)許多已有的或你自己的數(shù)據(jù)集的 wrapper。它利用「iteration schemes」將數(shù)據(jù)導(dǎo)流到模型中,并可以「transformers」所有類型的數(shù)據(jù)轉(zhuǎn)換和預(yù)處理步驟。
Neon 是 Nervana System 公司基于 Python 的深度學(xué)習(xí)框架,建立在 Nervana 的 GPU Kernel(對(duì)英偉達(dá) CuDNN 的替代)之上。Neon 是運(yùn)行該特殊 Kernel 的框架,的基準(zhǔn)測(cè)試顯示在一些特定任務(wù)上它是最快的。
展示深度學(xué)習(xí)庫(面向 Python)的另一種方式:從更低層次的 DIY 到更高層次的、更功能性的框架。
準(zhǔn)備好了嗎?下面的腳本將安裝 Theano、Torch、Caffe、Digits、Lasange、Keras。我們之前用過 Digits,但它是一個(gè)建立在 Caffe 之上的圖形網(wǎng)頁接口。這相當(dāng)?shù)幕A(chǔ),但如果你剛開始的話,訓(xùn)練一些 ConvNets 以及建立一些圖形分類器會(huì)是很簡單的方法。
#!/usr/bin/env bash
# Installation script for Deep Learning Libraries on Ubuntu 14.04, by Roelof Pieters (@graphific)
# BSD License
orig_executor="$(whoami)"
if [ "$(whoami)" == "root" ]; then
? echo "running as root, please run as user you want to have stuff installed as"
? exit 1
fi
###################################
# ? Ubuntu 14.04 Install script for:
# - Nvidia graphic drivers for Titan X: 352
# - Cuda 7.0 (7.5 gives "out of memory" issues)
# - CuDNN3
# - Theano (bleeding edge)
# - Torch7
# - ipython notebook (running as service with circus auto(re)boot on port 8888)
# - itorch notebook (running as service with circus auto(re)boot on port 8889)
# - Caffe?
# - OpenCV 3.0 gold release (vs. 2015-06-04)
# - Digits
# - Lasagne
# - Nolearn
# - Keras
###################################
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install -y libncurses-dev
# next part copied from (check there for newest version):?
# https://github.com/deeplearningparis/dl-machine/blob/master/scripts/install-deeplearning-libraries.sh
####################################
# Dependencies
####################################
# Build latest stable release of OpenBLAS without OPENMP to make it possible
# to use Python multiprocessing and forks without crash
# The torch install script will install OpenBLAS with OPENMP enabled in
# /opt/OpenBLAS so we need to install the OpenBLAS used by Python in a
# distinct folder.
# Note: the master branch only has the release tags in it
sudo apt-get install -y gfortran
export OPENBLAS_ROOT=/opt/OpenBLAS-no-openmp
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPENBLAS_ROOT/lib
if [ ! -d "OpenBLAS" ]; then
? ? git clone -q --branch=master git://github.com/xianyi/OpenBLAS.git
? ? (cd OpenBLAS
? ? ? && make FC=gfortran USE_OPENMP=0 NO_AFFINITY=1 NUM_THREADS=$(nproc)
? ? ? && sudo make install PREFIX=$OPENBLAS_ROOT)
? ? echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> ~/.bashrc
fi
sudo ldconfig
# Python basics: update pip and setup a virtualenv to avoid mixing packages
# installed from source with system packages
sudo apt-get update -y?
sudo apt-get install -y python-dev python-pip htop
sudo pip install -U pip virtualenv
if [ ! -d "venv" ]; then
? ? virtualenv venv
? ? echo "source ~/venv/bin/activate" >> ~/.bashrc
fi
source venv/bin/activate
pip install -U pip
pip install -U circus circus-web Cython Pillow
# Checkout this project to access installation script and additional resources
if [ ! -d "dl-machine" ]; then
? ? git clone [email protected]:deeplearningparis/dl-machine.git
? ? (cd dl-machine && git remote add http https://github.com/deeplearningparis/dl-machine.git)
else
? ? if ?[ "$1" == "reset" ]; then
? ? ? ? (cd dl-machine && git reset --hard && git checkout master && git pull --rebase $REMOTE master)
? ? fi
fi
# Build numpy from source against OpenBLAS
# You might need to install liblapack-dev package as well
# sudo apt-get install -y liblapack-dev
rm -f ~/.numpy-site.cfg
ln -s dl-machine/numpy-site.cfg ~/.numpy-site.cfg
pip install -U numpy
# Build scipy from source against OpenBLAS
rm -f ~/.scipy-site.cfg
ln -s dl-machine/scipy-site.cfg ~/.scipy-site.cfg
pip install -U scipy
# Install common tools from the scipy stack
sudo apt-get install -y libfreetype6-dev libpng12-dev
pip install -U matplotlib ipython[all] pandas scikit-image
# Scikit-learn (generic machine learning utilities)
pip install -e git+git://github.com/scikit-learn/scikit-learn.git#egg=scikit-learn
####################################
# OPENCV 3
####################################
# from http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-ubuntu-14-04/
# for 2.9 see http://www.samontab.com/web/2014/06/installing-opencv-2-4-9-in-ubuntu-14-04-lts/?
cd ~/
sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev
? ?pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev
? ?libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev
? ?libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
? ?libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev
? ?libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
wget https://github.com/Itseez/opencv/archive/3.0.0.tar.gz -O opencv-3.0.0.tar.gz
tar -zxvf ?opencv-3.0.0.tar.gz
cd opencv-3.0.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
make -j $(nproc)
sudo make install
sudo /bin/bash -c "echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf"
sudo ldconfig
ln -s /usr/lib/python2.7/dist-packages/cv2.so /home/$orig_executor/venv/lib/python2.7/site-packages/cv2.so
echo "opencv 3.0 installed"
####################################
# Theano
####################################
# installing theano
# By default, Theano will detect if it can use cuDNN. If so, it will use it.?
# To get an error if Theano can not use cuDNN, use this Theano flag: optimizer_including=cudnn.
pip install -e git+git://github.com/Theano/Theano.git#egg=Theano
if [ ! -f ".theanorc" ]; then
? ? ln -s ~/dl-machine/theanorc ~/.theanorc
fi
echo "Installed Theano"
# Tutorial files
if [ ! -d "DL4H" ]; then
? ? git clone [email protected]:SnippyHolloW/DL4H.git
? ? (cd DL4H && git remote add http https://github.com/SnippyHolloW/DL4H.git)
else
? ? if ?[ "$1" == "reset" ]; then
? ? ? ? (cd DL4H && git reset --hard && git checkout master && git pull --rebase $REMOTE master)
? ? fi
fi
####################################
# Torch
####################################
if [ ! -d "torch" ]; then
? ? curl -sk https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
? ? git clone https://github.com/torch/distro.git ~/torch --recursive
? ? (cd ~/torch && yes | ./install.sh)
fi
. ~/torch/install/bin/torch-activate
if [ ! -d "iTorch" ]; then
? ? git clone [email protected]:facebook/iTorch.git
? ? (cd iTorch && git remote add http https://github.com/facebook/iTorch.git)
else
? ? if ?[ "$1" == "reset" ]; then
? ? ? ? (cd iTorch && git reset --hard && git checkout master && git pull --rebase $REMOTE master)
? ? fi
fi
(cd iTorch && luarocks make)
cd ~/
git clone https://github.com/torch/demos.git torch-demos
#qt dependency
sudo apt-get install -y qt4-dev-tools libqt4-dev libqt4-core libqt4-gui
#main luarocks libs:
luarocks install image ? ?# an image library for Torch7
luarocks install nnx ? ? ?# lots of extra neural-net modules
luarocks install unup
echo "Installed Torch (demos in $HOME/torch-demos)"
# Register the circus daemon with Upstart
if [ ! -f "/etc/init/circus.conf" ]; then
? ? sudo ln -s $HOME/dl-machine/circus.conf /etc/init/circus.conf
? ? sudo initctl reload-configuration
fi
sudo service circus restart
cd ~/
## Next part ...
####################################
# Caffe
####################################
sudo apt-get install -y libprotobuf-dev libleveldb-dev
? libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
? libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
? libatlas-base-dev libyaml-dev?
??
git clone https://github.com/BVLC/caffe.git
cd caffe
for req in $(cat python/requirements.txt); do pip install $req -U; done
make all
make pycaffe
cd python
pip install networkx -U
pip install pillow -U
pip install -r requirements.txt
ln -s ~/caffe/python/caffe ~/venv/lib/python2.7/site-packages/caffe
echo -e " export CAFFE_HOME=/home/$orig_executor/caffe" >> ~/.bashrc
echo "Installed Caffe"
####################################
# Digits
####################################
# Nvidia Digits needs a specific version of caffe
# so you can install the venv version by Nvidia uif you register
# with cudnn, cuda, and caffe already packaged
# instead we will install from scratch
cd ~/
git clone https://github.com/NVIDIA/DIGITS.git digits
cd digits
pip install -r requirements.txt
sudo apt-get install graphviz
echo "digits installed, run with ./digits-devserver or ? ? ./digits-server"
####################################
# Lasagne
# https://github.com/Lasagne/Lasagne
####################################
git clone https://github.com/Lasagne/Lasagne.git
cd Lasagne
python setup.py install
echo "Lasagne installed"
####################################
# Nolearn
# asbtractions, mainly around Lasagne
# https://github.com/dnouri/nolearn
####################################
git clone https://github.com/dnouri/nolearn
cd nolearn
pip install -r requirements.txt
python setup.py install
echo "nolearn wrapper installed"
####################################
# Keras
# https://github.com/fchollet/keras
# http://keras.io/
####################################
git clone https://github.com/fchollet/keras.git
cd keras
python setup.py install
echo "Keras installed"
echo "all done, please restart your machine..."
# ? possible issues & fixes:
# - skimage: issue with "not finding jpeg decoder?"?
# "PIL: IOError: decoder zip not available"
# (https://github.com/python-pillow/Pillow/issues/174)
# sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev
# ? ? libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk
# next try:
# pip uninstall pillow
# git clone https://github.com/python-pillow/Pillow.git
# cd Pillow?
# python setup.py install
原文鏈接:http://graphific.github.io/posts/building-a-deep-learning-dream-machine/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/4395.html
摘要:受到其他同行在上討論更好經(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 c...
摘要:今天宣布推出旨在幫助客戶加快機(jī)器和深度學(xué)習(xí)的硬件垂直市場(chǎng)軟件和培訓(xùn)服務(wù)。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一種,是試圖模仿人類大腦的功能。在聲明中表示系統(tǒng)最適合于解決深度學(xué)習(xí)模型訓(xùn)練中最重要的步驟。一周前,IBM在Think 2018上做了一系列人工智能相關(guān)的公告,現(xiàn)在HPE也緊隨其后想要抓住人工智能這個(gè)IT業(yè)界最熱門的趨勢(shì)。HPE今天宣布推出旨在幫助客戶加快機(jī)器和深度學(xué)習(xí)的硬件、垂直市場(chǎng)軟件和培訓(xùn)服務(wù)。...
摘要:硬件機(jī)器學(xué)習(xí)和深度學(xué)習(xí)帶來的那種顛覆早已從軟件堆棧擴(kuò)大到了芯片服務(wù)器和云服務(wù)提供商。數(shù)據(jù)中心也正在重新設(shè)計(jì)架構(gòu),以支持機(jī)器學(xué)習(xí)和深度學(xué)習(xí)耗用的超大量數(shù)據(jù)。 作者是多位精英CIO、CTO和技術(shù)高管組成的福布斯雜志的常設(shè)部門Forbes Technology Council過去這幾年涌現(xiàn)出了全新類別的產(chǎn)品,這歸功...
摘要:硬件機(jī)器學(xué)習(xí)和深度學(xué)習(xí)帶來的那種顛覆早已從軟件堆棧擴(kuò)大到了芯片服務(wù)器和云服務(wù)提供商。數(shù)據(jù)中心也正在重新設(shè)計(jì)架構(gòu),以支持機(jī)器學(xué)習(xí)和深度學(xué)習(xí)耗用的超大量數(shù)據(jù)。 作者是多位精英CIO、CTO和技術(shù)高管組成的福布斯雜志的常設(shè)部門Forbes Technology Council過去這幾年涌現(xiàn)出了全新類別的產(chǎn)品,這歸功于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)取得了非凡的進(jìn)步。僅舉幾個(gè)例子,這些新技術(shù)在支持產(chǎn)品推薦、醫(yī)療成...
摘要:深度學(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)...
閱讀 3717·2023-04-26 00:56
閱讀 2706·2021-09-30 10:01
閱讀 974·2021-09-22 15:30
閱讀 3933·2021-09-07 10:21
閱讀 1541·2021-09-02 15:40
閱讀 2774·2021-08-30 09:47
閱讀 1256·2021-08-16 10:57
閱讀 1874·2019-08-30 14:01