從硬體配置到軟體安裝,一台深度學習機器的配備指南

  • 0 replies
  • 837 views
*

sisiy

  • *****
  • 214
    • 查看个人资料
本文作者 Roelof Pieters 是瑞典皇家理工學院 Institute of Technology & Consultant for Graph-Technologies 研究深度學習的一位在讀博士,他同時也運營著自己的面向客戶的深度學習產品。對於寫作這個系列文章的動機,他寫道:「我已經習慣了在雲上工作,並且還將繼續在雲上開發面向產品的系統/算法。但是在更面向研究的任務上,基於雲的系統還存在一些缺陷,因為在研究時你要做的基本上就是嘗試各種各樣的算法和架構,並且需要快速改進和疊代。為了做到這一點,我決定自己使用 GPU 設計和打造自己的量身定製的深度學習系統。在這一些方面這比我想像的簡單,但另一些方面卻更困難。在接下來的文章中,我會和你分享我的『冒險之旅』,不關你是深度學習實踐的新手還是老手,希望這都對你有用。」目前該系列文章已經更新了兩篇,機器之心將其統一編譯到了這篇文章中。
 
如果你像我一樣,每天(和每夜)都在和實際的機器學習應用打交道,你就知道在完成一項任務時如果沒有合適的硬體會有多麼痛苦。不管你是業界人士還是在學術界工作,為了一項實驗或計算的結果等待不必要長的時間總是會讓人感到煩惱。對於用於生產的研究和開發,高速硬體是必需的,而 GPU 通常是我們所面臨的主要瓶頸,尤其對於深度神經網絡(DNN)更是如此。是的,確實是這樣:亞馬遜這樣的雲提供商以低於每小時 1 美元的價格出售可以執行 GPU 計算的實例和可以導出、共享和重複使用的可以直接進行生產的虛擬機。如果你常常從頭開始安裝庫,你可能知道軟體和硬體庫都可以使用定期更新的安裝腳本或 dockerized 容器輕鬆地完成安裝。這些都還不錯。但是如果一個應用的需求超過了亞馬遜所能提供的 4GB GPU 呢(即使他們最新的 g2.8xlarge 仍然也只提供同樣的 4GB GPU)?其它雲提供商也很少提供更大的 GPU(通常是 6GB),而且似乎都是專門為特定的應用(視頻版或生物科學)定製的。
 
[p=20, null, left]那麼如果你有這種需求,你該怎麼做呢?很簡單,搭建你自己的 GPU 平台![/p][p=20, null, left]目錄

[/p]
  • 了解你的研究
  • 起步:選擇正確的組件
  • 將它們組裝到一起
  • DIY 或尋求幫助
  • 選項 A:DIY
  • 選項 B:外界幫助
[p=20, null, left]了解你的研究[/p][p=20, null, left]一旦我決定了搭建我自己的 GPU 系統時,我首先想到的是:為什麼要這麼麻煩自己去搭建一個呢,英偉達不是剛發布了其強大的 DevBox 嗎,而且還可能有其它供應商也在為深度學習應用做同樣的事?[/p][p=20, null, left]確實如此,也有一些其它公司在生產面向研究的機器,但它們都不面向歐洲發售。英偉達的 DevBox 也僅在美國出售,而且價格還高得離譜(大約 9000 美元的硬體組件售價 1.5 萬美元),而且還要排隊等待。[/p][p=20, null, left]所以該怎麼辦呢?簡單:搭建你自己的 GPU 平台![/p][p=20, null, left]起步:選擇正確的組件[/p][p=20, null, left]瀏覽網絡時我發現 Tim Dettmers 的博客(http://timdettmers.com/)很好地講解了如何為深度學習應用選擇合適的 GPU 和硬體。在這裡我不打算將他說過的內容再完全重複一遍。你可以自己去他的博客看!文章和下面的評論都值得一讀。[/p][p=20, null, left]簡而言之:[/p]
  • 雙精度(比如英偉達的 Tesla K20/40/80)完全是浪費錢,因為 DNN 不需要這樣的精度;
  • 想想你現在和未來需要多少個 GPU。4 個 GPU 是最多了,因為再多也不能再帶來太多性能增益了。這主要是因為最好的主板最多只支持最多 40 個通道(以 16x8x8x8 的配置)。另外,每個 GPU 都會增加一定的管理工作——你的系統需要決定使用哪個 GPU 來執行哪項任務。
  • 獲取一個支持 PCIe 3.0 的主板,它還要支持一根線纜上帶有 8pin + 6pin 的 PCIe 電源連接器,這樣你才能添加到 4 個 GPU。主板還應該支持你的 GPU 配置,即支持 x8/x8/x8/x8 的 4 GPU 設置的物理線路;
  • 找一個能把所有東西都裝進去的機箱。越大的機箱空氣流動就越好。確保有足夠的 PCIe 槽以支持所有 GPU 以及其它你可能需要安裝的 PCIe 卡(比如高速千兆網卡等)。一個 GPU 通常會占據 2 個 PCIe 插槽的空間。一個典型的機箱需要有 7 個 PCIe 槽,因為最後一個安裝在底部的 GPU 可以僅使用一個槽。
    • RAM 大小是你的全部 GPU 內存之和的兩倍;
    • SSD 很不錯,但除非決定有必要才用——如果你加載的數據無法配入到 GPU 內存和 RAM 的組合中。如果你確實要使用一個 SSD,它的容量至少應該大於你最大的數據集;
    • 至於普通的機械硬碟,你可能需要大量的磁碟空間來存儲你的數據集和其它類型的數據。如果你需要至少 3 個同樣大小的磁碟,RAID5 就很不錯。基本上一旦發生單個錯誤時,你不會丟失你的數據。用於提升性能的 RAID0 等其它 RAID 配置通常沒多大用處:你可用 SSD 提速,而且它已經超過了你的 GPU 通過 PCIe 帶寬加載數據的速度;
    • 至於供電單元(PSU),只要你負擔得起,就儘可能選一個最高效的,並且要把你所需要的總功率考慮在內(要考慮未來的使用):鈦或鉑金品質的 PSU 值得你花錢購買:你能省錢和保護環境,因為其所節省的電力開銷用不了多久就能把你的額外購買成本節省回來。對於 4 GPU 系統,你大概需要 1500 到 1600 W;
    • 冷卻是非常非常重要的,因為它會同時影響到性能和噪音。你需要一直將 GPU 的溫度保持在 80 度(約 26.7 攝氏度)以下。更高的溫度會拉低該單元的電壓並影響到性能。另外,太高的溫度也對你的 GPU 有害;這是你需要避免的。冷卻有兩種主要選項:風冷(風扇)和水冷(管道):
    • 風冷更便宜、安裝和維護更簡單、但會製造大量噪音;
    • 水冷價格更高、難以正確安裝,但沒有任何噪音,而且對組件的冷卻效果也好得多。但你總歸需要機箱風扇來冷卻其它組件,所以你總會聽到一些噪音,但會比全風冷的系統的噪音小。
    將它們組裝到一起根據我讀到的內容、Tim Dettmers 的回覆和英偉達的 DevBox and Gamer 論壇的建議,我開始將這些組件組裝到一起。很明顯這台機器受到了英偉達 DevBox 的部分啟發(至少機箱是這樣),但價格差不多只有 DevBox 的一半。
    • 機箱:Carbide Air 540 High Airflow ATX Cube
    • 主板:華碩 X99-E WS 工作站級主板,帶有 4 路 PCI-E Gen3 x16 支持
    • RAM:64GB DDR4 Kingston 2133Mhz (8x8GB)
    • CPU:Intel(Haswell-e) Core i7 5930K (http://ark.intel.com/products/82 ... ache-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 的自製水冷系統(軟管):在機箱頂部鑽了一個注水孔,前面有一個透明的儲水器(見下圖)

    左圖:正在構建中的系統。你可以看到用於水冷的塑料管穿過 Carbide Air 540 機箱上原本就有的孔洞。主板是豎直安裝的。中圖和右圖:建造好的系統。注意可以從外面看到的儲水器。還可以看到從上至下的紅色塑料管:上連注水口,下接水泵,穿過安裝在 GPU 上的散熱器模塊。還可以看到 CPU 上有一個類似的結構。DIY 或尋求幫助選項 A:DIY當然,如果你有時間和意願自己動手打造所有的一切,這將成為你完全理解各個組件的工作方式以及哪些硬體可以很好適配的絕佳方法。另外,你也可能能更好地理解當組件出現故障時應該做什麼並更輕鬆地修復它。選項 B:外界幫助另一種選擇是尋找專業的公司預定零件並讓他們幫助組裝好整個系統。你要尋找的這類公司應該是定製遊戲機電腦的公司,他們常常為遊戲玩家打造定製化的系統。他們甚至有水冷系統的經驗,儘管遊戲機電腦通常只需要水冷 CPU,但他們會有很好用的工具套件。當然,為了安裝全水冷系統,你需要將 GPU 外殼打開,將晶片暴露出來安裝散熱片,再裝上水管、壓縮機帽等等各種所需的組件。不過水冷也有麻煩的地方:一旦出現漏水,你的 GPU 和其它組件就會被毀壞。因為我覺得我不能將這些東西裝在一起以及正確地安裝水冷氣系統,而且我還沒有多少時間閱讀操作手冊,所以我選擇了第二種方案:找了一個非常熟練的硬體打造商幫我組裝了我的深度學習機器的第一個版本。第二部分:安裝軟體和庫目錄軟體和庫
[list=1]
  • 安裝 CUDA
  • 測試 CUDA
  • 深度學習庫
軟體和庫現在,我們有了一台裸機,是時候安裝軟體了!網上已有有了一些好的博文指導安裝深度學習工具和庫。為了簡單化,我臨時把一些要旨放在一起。這篇個文章將幫助你安裝英偉達 CUDA 驅動,以及我青睞的一些深度學習工具與庫。此外,我也假設你已經在電腦上安裝了 Ubuntu 14.04.3 作為作業系統。讓圖像驅動程序能正常工作是一件很痛苦的事。我當時的問題是 Titan X GPU 只能得到 Nvidia 346 的支持,這些驅動不能在我特定的監控器下工作。經過一些 xconfig 改裝,我終於讓它能在高於 800×600 的解析度下工作了,我使用了 LINUX X64 (AMD64/EM64T) DISPLAY DRIVER 352.30 版本作為圖像驅動。設置演示安裝的是 CUDA 7.0,我選擇安裝最新的 CUDA 7.5。雖然該版本的確有所改進,但在一些庫上也難以正常工作。如果你想快速啟動並運行,可以嘗試 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/XF ... x-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 ... 04_7.0-28_amd64.deb

sudo dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

echo -e "\nexport CUDA_HOME=/usr/local/cuda\nexport CUDA_ROOT=/usr/local/cuda" >> ~/.bashrc

echo -e "\nexport PATH=/usr/local/cuda/bin:\$PATH\nexport 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. 測試 CUDA完成安裝了?很好,接下來讓我們看一下 CUDA 驅動是否能夠正常工作。直接進入 CUDA 樣本目錄,運行 ./deviceQuery。你的 GPU 應該會被顯示如下:
#!/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

# 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. 深度學習庫好了,來到最後一步,它也是很有趣的一部分:選擇個人偏好的深度學習庫,這也是由所在領域所決定的。
  • 作為研究人員,Theano 能給你最大的自由度,做自己想做的事。你可以自己部署許多事,也因此更能深度理解 DNN 如何工作。但對想首先嘗試下的初學者來說可能不合適。
  • 我個人是 Keras(主要貢獻者:François Chollet,已經加入了谷歌)和 Lasagne(8 個人的團隊,但主要貢獻者是 Sander Dielemans,近期讀完了博士,如今加入了谷歌 DeepMind)的粉絲。這兩個庫有很好的抽象水平,也被積極的開發,也提供插入自己模塊或代碼工程的簡單方式。
  • 如果你習慣 Python,那使用 Torch 會具有挑戰性,因為你需要學習 Lua。在使用 Torch 一段時間之後,我可以說它是一個很好使用的語言。唯一一個問題是從其他語言接入到 Lua 很難。對研究目的,Torch 表現也很好。但對生產水平管道而言,Torch 難以進行測試,而且看起來完全缺乏任何類型的錯誤處理。Torch 積極的一面有:支持 CUDA,有很多可以使用的 程序包。Torch 看起來也是產業內使用最普遍的庫。Facebook(Ronan Collobert & Soumith Chintala)、DeepMind(Koray Kavukçuoğlu)、Twitter(Clement Farabet)的這些人都是主要貢獻者。
  • Caffe 是之前占據主導地位的深度學習框架(主要用於 Convnets),如今仍在被普遍使用,也是一個可以作為開始的很好的框架。訓練制度(solver.prototxt)與架構(train val.prototxt)文檔之間的分離使得實驗更容易進行。我發現 Caffe 也是唯一一個支持使用電腦外多 GPU 的框架,你可以穿過 GPU 或 GPU id 參數使用所有可用的 GPU。
Blocks 是最近的一款基於 Python 的框架,很好的分離了自己編寫的模塊與被稱為 Brick 的模塊。特別是其 partner「Fuel」,是一個處理數據的很好方式。Fuel 是一個對許多已有的或你自己的數據集的 wrapper。它利用「iteration schemes」將數據導流到模型中,並可以「transformers」所有類型的數據轉換和預處理步驟。Neon 是 Nervana System 公司基於 Python 的深度學習框架,建立在 Nervana 的 GPU Kernel(對英偉達 CuDNN 的替代)之上。Neon 是運行該特殊 Kernel 的唯一框架,最新的基準測試顯示在一些特定任務上它是最快的。
 展示深度學習庫(面向 Python)的另一種方式:從更低層次的 DIY 到更高層次的、更功能性的框架。準備好了嗎?下面的腳本將安裝 Theano、Torch、Caffe、Digits、Lasange、Keras。我們之前用過 Digits,但它是一個建立在 Caffe 之上的圖形網頁接口。這相當的基礎,但如果你剛開始的話,訓練一些 ConvNets 以及建立一些圖形分類器會是很簡單的方法。

#!/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/deeplearningp ... arning-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 git@github.com: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/1 ... -0-on-ubuntu-14-04/

# for 2.9 see http://www.samontab.com/web/2014 ... n-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 git@github.com: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.co ... 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 git@github.com: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 "\nexport 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✄
[/list]