1. 程式人生 > >如何搭建一臺深度學習伺服器

如何搭建一臺深度學習伺服器

This post was kindly contributed by 資料科學中的R和Python - go there to comment and to read the full post.
在計算機時代的早期,一名極客的滿足感很大程度上來源於能DIY一臺機器。到了深度學習的時代,前面那句話仍然是對的。

緣起
在2013年,MIT科技評論將深度學習列為當年十大科技突破之首。其原因在於,模型有其為龐大的網路結構,引數夠多,學習能力夠強,能配合大資料達到驚人的效果。而且,能自動學習特徵,避免了“特徵工程”這種繁瑣的手工勞動。對於影象、音訊和文書處理領域有極大的意義。因為最近在嘗試用深度學習做文字挖掘,所以需要一臺深度學習伺服器(相信我,如果用CPU來跑,你的人生顯得好短)。


那麼就有三個選擇項:
A、購買組裝好的伺服器,例如NVIDIA DIGITS DEVBOX
B、購買雲服務,例如Amazon的GPU服務
C、自己攢一臺深度學習伺服器。
A項從價效比上不合算,而且不一定買的到。B項的雲服務對於研究探索性質工作而言也比較貴,機器配置也不一定合適,所以我們就C項了。

硬體選擇:基本思路是單顯示卡機器,保留升級空間

顯示卡選擇:
先解釋一點,深度學習為什麼需要顯示卡計算?
GPU 是為大規模的並行運算而優化;
GPU 上則更多的是運算單元(整數、浮點的乘加單元,特殊運算單元等等);
GPU 往往擁有更大頻寬的視訊記憶體,因此在大吞吐量的應用中也會有很好的效能。
這裡有一個很有趣的解釋視訊
,解釋了GPU和CPU的計算區別。

所以顯示卡選擇最重要,因為準備基於CUDA計算(CUDA (Compute Unified Device Architecture) 是NVIDIA開發的GPU平行計算環境。),所以只能選擇Nvida系列的。在英偉達產品系列中,有消費領域的GeForce系列,有專業繪圖領域的Quadro系列,有高效能運算領域的Tesla系列,如何選擇?

有論文研究,太高的精度對於深度學習的錯誤率是沒有提升的,而且大部分的環境框架都只支援單精度,所以雙精度浮點計算是不必要,Tesla系列都去掉了。從顯示卡效能的指標看,CUDA核心數要多,GPU頻率要快,視訊記憶體要大,頻寬要高。這樣,最新Titan X算是價格便宜量又足的選擇。


CPU選擇:
在深度學習任務中,CPU並不負責主要任務,單顯示卡計算時只有一個核心達到100%負荷,所以CPU的核心數量和顯示卡數量一致即可,太多沒有必要,但是處理PCIE的頻寬要到40。

主機板選擇:
需要支援X99架構,支援PCIe3.0,還要支援4通道DDR4記憶體架構。如果要搞四顯示卡並行,PCIE頻寬支援要達到40,並且支援4-Way NVIDA SLI技術。

記憶體:
達到視訊記憶體的二倍即可,當然有錢的話越大越好。

電源問題:一個顯示卡的功率接近300W,四顯示卡建議電源在1500W以上,為了以後擴充套件,選擇了1600W的電源。

機箱散熱:
因為各種部件相當龐大,需要有良好散熱功能的大機箱,選擇了Tt Thermaltake Core V51機箱,標配3個12cm風扇。未來如果需要還可以加裝水冷裝置。

以上就是主要硬體環境的選擇和安裝。

軟體環境安裝:

主要安裝了Ubuntu系統,CUDA環境,以及theano、keras環境

1、安裝ubuntu 14.04(不要安裝麒麟版本)
通過官網下載iso檔案燒錄U盤安裝,在SSD硬碟上自動安裝完成。
2、安裝cuda 7.5 deb檔案(自帶顯示卡驅動)
2.1 獲取CUDA安裝包,在NVidia官網下載local deb檔案。
2.2執行如下命令安裝:
    $ sudo dpkg -i cuda-repo-ubuntu1410-7-0-local_7.0-28_amd64.deb
    $ sudo apt-get update
    $ sudo apt-get install cuda
2.3設定環境變數:sudo gedit /etc/profile
    $ export PATH=/usr/local/cuda-7.5/bin:$PATH
    $ export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
2.4重啟機器:用其中一個樣例進行驗證測試
    $ cuda-install-samples-7.5.sh ~
    $ cd ~/NVIDIA_CUDA-Samples_7.5/5_Simulations/nbody
    $ make
    $ ./nbody
    或者在sample目錄中make測試專案1_utility,再執行./deviceQuery

3、安裝python以及theano工具
3.1 直接下載安裝anaconda套件64位版本。
    下載後用conda升級到最新。anaconda自帶openblas,使numpy和theano計算能達到最大效能
3.2 修改了theano配置檔案,使之預設由gpu運算
在主目錄下新建.theanorc檔案
.theanorc中輸入下面的內容
[cuda]
root=/usr/local/cuda/bin/
[global]
floatX = float32
device = gpu0
[nvcc]
fastmath = True
3.3 安裝完成後參考如下地址進行測試
THEANO_FLAGS=floatX=float32,device=gpu python `python -c "import os, theano; print os.path.dirname(theano.__file__)"`/misc/check_blas.py
3.4 安裝keras
    通過anaconda安裝pip install keras
    注意keras依賴的theano是dev版本的,需要從github下原始碼來安裝。注意本系統此時有兩個python,所以要寫路徑
    sudo /home/user/anaconda/bin/python setup.py develop

4、設定遠端伺服器呼叫
4.1 安裝ssh,啟動服務
4.2 設定notebook server
在ipython中如下命令設定密碼:
from IPython.lib import passwd
passwd()
記下生成的字串。
建立一個ipython配置檔案,比如起名叫myserver
ipython profile create myserver
vim ~/.ipython/profile_myserver/ipython_notebook_config.py
編輯檔案,加入下面幾項:
c = get_config()
c.IPKernelApp.pylab = 'inline' #啟動inline模式
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:yourhashedpassword'  #把第二步的密碼考進來
c.NotebookApp.port = 6868   #自己設一個埠號
啟動服務
ipython notebook --profile=myserver

4.3 遠端瀏覽器呼叫
遠端中瀏覽器登陸http://192.168.3.31:6868/,輸入密碼,即可進入ipython notebook。
如果需要保持連線,則
nohup ipython notebook --profile=myserver
殺掉連線
lsof nohup.out
kill -9 "PID"

完工!

最後的硬體配置:
CPU: Intel X99平臺 i7 5960K
記憶體: DDR4 2800 32G(8G*4)
主機板: GIGABYTE X99-UD4
顯示卡: GTX Titan X
硬碟: SSD+普通硬碟

系統和軟體
作業系統: Ubuntu 14.04.3 x64
CUDA: 7.5
Anaconda 2.3
Theano 7.0
Keras 2.0

參考資料:
http://timdettmers.com/2014/08/14/which-gpu-for-deep-learning/
http://timdettmers.com/2015/03/09/deep-learning-hardware-guide/
http://graphific.github.io/posts/running-a-deep-learning-dream-machine/
http://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#ubuntu-x86_64-deb
http://deeplearning.net/software/theano/tutorial/using_gpu.html#cuda

之前網上找到另一種安裝theano方式是自行安裝元件。但嘗試未成功,有可能是因為CPU等硬體不同,可能需要自行編譯安裝openblas,numpy, scipy, theano等環境,極為繁瑣。最後還是直接用Anaconda方便。

相關推薦

如何搭建深度學習伺服器

This post was kindly contributed by 資料科學中的R和Python - go there to comment and to read the full post. 在計算機時代的早期,一名極客的滿足感很大程度上來源於能DIY一臺機器。到了深度學習的時代,前面那句話仍

搭建深度學習工作站

一、先安裝 Windows10 系統,然後安裝 Ubuntu16.04 在用 USB 啟動安裝 Ubuntu 過程中,因為主機板安裝了兩塊顯示卡,所以 nouvau 驅動會報告 PCIe SCHED Error 8,進入不了安裝介面。 解決辦法:在GRUB啟動介面中按 e

用不到1000美元攢深度學習用的電腦深度學習和便宜硬體的探奇

從上世紀80年代後我就再沒攢過電腦。我也相當擔心花好幾百塊,最終搞一堆我自己裝不出來的零件(或是攢出來了,但可能沒法正常工作)。不過我要告訴你,攢機是可以的!另外,整個過程也很好玩。最後你能擁有一臺通用的電腦,並能做預測,同時比筆記本快20多倍。下面是購買清單和一些細節建議:主機板主機板有不同的尺寸規格。因為

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

#!/usr/bin/env bash# Installation script for Deep Learning Libraries on Ubuntu 14.04, by Roelof Pieters (@graphific)# BSD Licenseorig_executor="$(whoami)"i

使用postfix+dovecot搭建郵件伺服器

一,前期準備 1.各種賬號 *注意:如果是真實環境,使用者名稱密碼等會有複雜度要求,請酌情建立。 不用統一建立這些賬號,後面教程會一一提到 賬號 使用者名稱 密碼 說明 centos r

tensorflow深度學習伺服器環境搭建

實驗室新進了一臺伺服器,配置了nvida 1080TI顯示卡做深度學習使用,裝好機器後第一件事就是如何配置好tensorflow的深度學習環境,這裡把我在搭建環境的過程以及遇到的坑一一寫下來,給有同樣需求的筒子提供一些幫助。 作業系統是師兄刻好的ubuntu最新版本Ubuntu 18.0

深度學習伺服器環境搭建詳細版(Ubuntu16.04+CUDA8+Caffe+Anaconda+TensorFlow+共享)

深度學習伺服器環境配置過程詳細版: Ubuntu16.04+CUDA8+Caffe+Anaconda+TensorFlow+OpenSSH+共享硬碟 ##0 硬體配置 部件 型號 主機板 華碩x99 e-ws cpu I7 6800k 顯

搭建檔案伺服器

正文:公司當前的情況是有銷售,財務,資訊三個部門。每個部門有幾名員工,其中一名是其部門經理。 部門 中文名 英文名 Manager 凱文 Kevin Information Department (資訊部)

linux深度學習伺服器搭建——遠端登入與遠端桌面配置

一 背景    linux遠端登入模式主要有兩種:ssh命令遠端登入和遠端桌面登入。下面介紹這兩種遠端登入的配置。二 ssh遠端登入的配置與使用    我一般使用MobaXterm進行ssh遠端登入,官網:https://mobaxterm.mobatek.net/。安裝後即

伺服器搭建Anaconda+Tensorflow深度學習實驗環境(Python=3.5) 練習記錄

我使用騰訊雲,自己拿來做實驗用,環境是Ubuntu Server 16.04, 由於自己的本上用的帶圖形的Ubuntu,命令列操作逃課了。。。。。。現在補習在下面1:登入:在配置好伺服器輸出和輸入的埠(即22口)之後,在自己的終端上輸入以下命令:       ssh [ema

linux深度學習伺服器搭建——CUDA與cuDNN的選擇與安裝

前言    本文章參考實驗室師妹的文章Ubuntu14.04+CUDA8.0+Opencv3.1+Anaconda2+Caffe安裝,最近安裝最新版時候遇到不少坑,下面就介紹下如何去安裝CUDA和cuDNN,個人認為本文提供的方法可以針對任意版本。我們的伺服器為ubuntu

為一個支持GPRS的硬件設備搭建高並發服務器用什麽開發比較容易?

實現 ood ++ 消息 數據 ply c++ java sock 高並發服務器開發,硬件socket發送數據至服務器,服務器對數據進行判斷,需要實現心跳以保持長連接。 同時還要接收另外一臺服務器的消支付成功消息,接收到消息後控制硬件執行操作。 查了一些資料,java的ne

用nodejs的express框架在本機搭建服務器

redirect sta start moc 頁面 exe 瀏覽器 server proc [本文出自天外歸雲的博客園] 簡介 用express框架在本機搭建一個服務器,這樣大家可以通過指定的url來在你的服務器上運行相應的功能。 Express是一個基於nodejs

關於深度學習筆試的英文名詞簡介

自然語言 像素 檢測 基於 種類 變換 直方圖 輸出 搜索 ENSEMBLE: ensemble methods(組合方法)機器學習裏面指幾種算法的組合在一起的方法。也叫融合學習,集合方法等。 WORD2VEL:word embeddings“詞向量”,將自然語言中的字詞轉

深度學習中常用的激勵函式

   大家都知道,人腦的基本計算單元叫做神經元。現代生物學表明,人的神經系統中大概有860億神經元,而這數量巨大的神經元之間大約是通過1014−1015個突觸連線起來的。上面這一幅示意圖,粗略地描繪了一下人體神經元與我們簡化過後的數學模型。每個神經元都從樹突接受訊號,同時順著某個軸突傳遞

5.組裝1u的伺服器(4.445cm)

組裝一臺1u的伺服器(4.445cm)   1.主要部分:     中央處理器     記憶體     晶片組     I/O匯流排     

深度學習深度學習資料

一、學習清單 1、綜合類 2、計算機視覺 3、NLP領域 (3)部落格推薦:http://www.wildml.com/  包含了RNN、LSTM、Attention機制等教程,最主要的是講解的淺顯易懂,讓我等菜鳥受益匪淺

1.組裝1u的伺服器(4.445cm)

組裝一臺1u的伺服器(4.445cm)   1.主要部分:     中央處理器     記憶體     晶片組     I/O匯流排     I/O裝置     電源     機箱     相關軟體    2.伺服器的品牌:    3. 處理器:intel AMD      

如何構建網路引導伺服器

有些計算機網路需要在各個物理機器上維護相同的軟體和配置。學校的計算機實驗室就是這樣的一個環境。 網路引導 伺服器能夠被配置為基於網路去提供一個完整的作業系統,以便於客戶端計算機從一箇中央位置獲取配置。本教程將向你展示構建一臺網路引導伺服器的一種方法。 本教程的第一部分將包括建立一臺網路引導伺服器和映象。第二