摘要:很明顯這臺機器受到了英偉達的部分啟發至少機箱是這樣,但價格差不多只有的一半。這篇個文章將幫助你安裝英偉達驅動,以及我青睞的一些深度學習工具與庫。
本文作者 Roelof Pieters 是瑞典皇家理工學院 Institute of Technology & Consultant for Graph-Technologies 研究深度學習的一位在讀博士,他同時也運營著自己的面向客戶的深度學習產品。對于寫作這個系列文章的動機,他寫道:「我已經習慣了在云上工作,并且還將繼續在云上開發面向產品的系統/算法。但是在更面向研究的任務上,基于云的系統還存在一些缺陷,因為在研究時你要做的基本上就是嘗試各種各樣的算法和架構,并且需要快速改進和迭代。為了做到這一點,我決定自己使用 GPU 設計和打造自己的量身定制的深度學習系統。在這一些方面這比我想象的簡單,但另一些方面卻更困難。在接下來的文章中,我會和你分享我的『冒險之旅』,不關你是深度學習實踐的新手還是老手,希望這都對你有用。」目前該系列文章已經更新了兩篇,機器之心將其統一編譯到了這篇文章中。
第一部分:硬件平臺搭建
如果你像我一樣,每天(和每夜)都在和實際的機器學習應用打交道,你就知道在完成一項任務時如果沒有合適的硬件會有多么痛苦。不管你是業界人士還是在學術界工作,為了一項實驗或計算的結果等待不必要長的時間總是會讓人感到煩惱。對于用于生產的研究和開發,高速硬件是必需的,而 GPU 通常是我們所面臨的主要瓶頸,尤其對于深度神經網絡(DNN)更是如此。是的,確實是這樣:亞馬遜這樣的云提供商以低于每小時 1 美元的價格出售可以執行 GPU 計算的實例和可以導出、共享和重復使用的可以直接進行生產的虛擬機。如果你常常從頭開始安裝庫,你可能知道軟件和硬件庫都可以使用定期更新的安裝腳本或 dockerized 容器輕松地完成安裝。這些都還不錯。但是如果一個應用的需求超過了亞馬遜所能提供的 4GB GPU 呢(即使他們的 g2.8xlarge 仍然也只提供同樣的 4GB GPU)?其它云提供商也很少提供更大的 GPU(通常是 6GB),而且似乎都是專門為特定的應用(視頻版或生物科學)定制的。
那么如果你有這種需求,你該怎么做呢?很簡單,搭建你自己的 GPU 平臺!
目錄
了解你的研究
起步:選擇正確的組件
將它們組裝到一起
DIY 或尋求幫助
選項 A:DIY
選項 B:外界幫助
了解你的研究
一旦我決定了搭建我自己的 GPU 系統時,我首先想到的是:為什么要這么麻煩自己去搭建一個呢,英偉達不是剛發布了其強大的 DevBox 嗎,而且還可能有其它供應商也在為深度學習應用做同樣的事?
確實如此,也有一些其它公司在生產面向研究的機器,但它們都不面向歐洲發售。英偉達的 DevBox 也僅在美國出售,而且價格還高得離譜(大約 9000 美元的硬件組件售價 1.5 萬美元),而且還要排隊等待。
所以該怎么辦呢?簡單:搭建你自己的 GPU 平臺!
起步:選擇正確的組件
瀏覽網絡時我發現 Tim Dettmers 的博客(http://timdettmers.com/)很好地講解了如何為深度學習應用選擇合適的 GPU 和硬件。在這里我不打算將他說過的內容再完全重復一遍。你可以自己去他的博客看!文章和下面的評論都值得一讀。
簡而言之:
雙精度(比如英偉達的 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 可以僅使用一個槽。
CPU 不需要非常快,也不需要有很多核。只需要確保 CPU 的核數至少是你的 GPU 的數量的兩倍就可以了(再次強調:要考慮未來的使用情況;英特爾的 CPU 通常一個核有兩個線程)。還要確保該 CPU 支持 40 個 PCIe 通道,一些新的 Haswell CPU 只支持 32 個;
RAM 大小是你的全部 GPU 內存之和的兩倍;
SSD 很不錯,但除非決定有必要才用——如果你加載的數據無法配入到 GPU 內存和 RAM 的組合中。如果你確實要使用一個 SSD,它的容量至少應該大于你較大的數據集;
至于普通的機械硬盤,你可能需要大量的磁盤空間來存儲你的數據集和其它類型的數據。如果你需要至少 3 個同樣大小的磁盤,RAID5 就很不錯?;旧弦坏┌l生單個錯誤時,你不會丟失你的數據。用于提升性能的 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/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 的自制水冷系統(軟管):在機箱頂部鉆了一個注水孔,前面有一個透明的儲水器(見下圖)
左圖:正在構建中的系統。你可以看到用于水冷的塑料管穿過 Carbide Air 540 機箱上原本就有的孔洞。主板是豎直安裝的。
中圖和右圖:建造好的系統。注意可以從外面看到的儲水器。還可以看到從上至下的紅色塑料管:上連注水口,下接水泵,穿過安裝在 GPU 上的散熱器模塊。還可以看到 CPU 上有一個類似的結構。
DIY 或尋求幫助
選項 A:DIY
當然,如果你有時間和意愿自己動手打造所有的一切,這將成為你完全理解各個組件的工作方式以及哪些硬件可以很好適配的絕佳方法。另外,你也可能能更好地理解當組件出現故障時應該做什么并更輕松地修復它。
選項 B:外界幫助
另一種選擇是尋找專業的公司預定零件并讓他們幫助組裝好整個系統。你要尋找的這類公司應該是定制游戲機電腦的公司,他們常常為游戲玩家打造定制化的系統。他們甚至有水冷系統的經驗,盡管游戲機電腦通常只需要水冷 CPU,但他們會有很好用的工具套件。當然,為了安裝全水冷系統,你需要將 GPU 外殼打開,將芯片暴露出來安裝散熱片,再裝上水管、壓縮機帽等等各種所需的組件。不過水冷也有麻煩的地方:一旦出現漏水,你的 GPU 和其它組件就會被毀壞。
因為我覺得我不能將這些東西裝在一起以及正確地安裝水冷氣系統,而且我還沒有多少時間閱讀操作手冊,所以我選擇了第二種方案:找了一個非常熟練的硬件打造商幫我組裝了我的深度學習機器的第一個版本。
第二部分:安裝軟件和庫
目錄?
軟件和庫
安裝 CUDA?
測試 CUDA?
深度學習庫
軟件和庫
現在,我們有了一臺裸機,是時候安裝軟件了!網上已有有了一些好的博文指導安裝深度學習工具和庫。為了簡單化,我臨時把一些要旨放在一起。這篇個文章將幫助你安裝英偉達 CUDA 驅動,以及我青睞的一些深度學習工具與庫。此外,我也假設你已經在電腦上安裝了 Ubuntu 14.04.3 作為操作系統。
1.安裝 CUDA?
讓圖像驅動程序能正常工作是一件很痛苦的事。我當時的問題是 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/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. 測試 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
###################################
# 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. 深度學習庫
好了,來到最后一步,它也是很有趣的一部分:選擇個人偏好的深度學習庫,這也是由所在領域所決定的。
作為研究人員,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/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 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/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 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.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 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 " 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/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4395.html
摘要:受到其他同行在上討論更好經驗的激勵,我決定買一個專用的深度學習盒子放在家里。下面是我的選擇從選擇配件到基準測試。即便是深度學習的較佳選擇,同樣也很重要。安裝大多數深度學習框架是首先基于系統開發,然后逐漸擴展到支持其他操作系統。 在用了十年的 MacBook Airs 和云服務以后,我現在要搭建一個(筆記本)桌面了幾年時間里我都在用越來越薄的 MacBooks 來搭載一個瘦客戶端(thin c...
摘要:今天宣布推出旨在幫助客戶加快機器和深度學習的硬件垂直市場軟件和培訓服務。深度學習是機器學習的一種,是試圖模仿人類大腦的功能。在聲明中表示系統最適合于解決深度學習模型訓練中最重要的步驟。一周前,IBM在Think 2018上做了一系列人工智能相關的公告,現在HPE也緊隨其后想要抓住人工智能這個IT業界最熱門的趨勢。HPE今天宣布推出旨在幫助客戶加快機器和深度學習的硬件、垂直市場軟件和培訓服務。...
摘要:硬件機器學習和深度學習帶來的那種顛覆早已從軟件堆棧擴大到了芯片服務器和云服務提供商。數據中心也正在重新設計架構,以支持機器學習和深度學習耗用的超大量數據。 作者是多位精英CIO、CTO和技術高管組成的福布斯雜志的常設部門Forbes Technology Council過去這幾年涌現出了全新類別的產品,這歸功...
摘要:硬件機器學習和深度學習帶來的那種顛覆早已從軟件堆棧擴大到了芯片服務器和云服務提供商。數據中心也正在重新設計架構,以支持機器學習和深度學習耗用的超大量數據。 作者是多位精英CIO、CTO和技術高管組成的福布斯雜志的常設部門Forbes Technology Council過去這幾年涌現出了全新類別的產品,這歸功于機器學習和深度學習取得了非凡的進步。僅舉幾個例子,這些新技術在支持產品推薦、醫療成...
摘要:深度學習是一個對算力要求很高的領域。這一早期優勢與英偉達強大的社區支持相結合,迅速增加了社區的規模。對他們的深度學習軟件投入很少,因此不能指望英偉達和之間的軟件差距將在未來縮小。 深度學習是一個對算力要求很高的領域。GPU的選擇將從根本上決定你的深度學習體驗。一個好的GPU可以讓你快速獲得實踐經驗,而這些經驗是正是建立專業知識的關鍵。如果沒有這種快速的反饋,你會花費過多時間,從錯誤中吸取教訓...
閱讀 3708·2023-04-26 00:56
閱讀 2686·2021-09-30 10:01
閱讀 961·2021-09-22 15:30
閱讀 3915·2021-09-07 10:21
閱讀 1506·2021-09-02 15:40
閱讀 2750·2021-08-30 09:47
閱讀 1234·2021-08-16 10:57
閱讀 1862·2019-08-30 14:01