1. 程式人生 > >深度學習指南:基於Ubuntu從頭開始搭建環境

深度學習指南:基於Ubuntu從頭開始搭建環境

這是一篇為機器搭建深度學習研究環境的詳細指南,包括驅動程式、工具和各種深度學習框架的安裝指導。在64位Ubuntu 14.04的機器上使用Nvidia Titan X進行測試。

還有一些有類似目的的指南。一些內容有限,而另外一些則不是最新的。該指南基於(有些部分是複製來的):

目錄

  • 基礎知識
  • Nvidia驅動
  • CUDA
  • cuDNN
  • Tensorflow
  • OpenBLAS
  • 常用工具
  • Caffe
  • Theano
  • Keras
  • Torch
  • X2Go

基礎知識

  • 首先,開啟終端,執行以下命令確保你的作業系統是最新的
sudo apt-get update  
sudo apt-get upgrade  
sudo apt-get
install build-essential sudo apt-get autoremove

安裝git

sudo apt-get install git

Nvidia驅動

  • 檢視顯示卡型號
lspci | grep -i nvidia
  • 到Nvidia官網查詢你顯示卡對應的最新驅動和系統設定。你可以從此網站上下載並安裝驅動,但這樣做會升級到更新的驅動,並且解除安裝的時候會有些麻煩。此外,這麼做需要你退出X服務會話,從終端進行安裝,這比較麻煩。

  • 我們將使用apt-get來安裝驅動。到 “Proprietary GPU Drivers” PPA中檢視是否有你最新的驅動。注意,最新的驅動一定是最穩定的。你也可以安裝網頁上推薦的驅動版本。新增”Proprietary GPU Drivers” PPA 資源庫。在寫這篇文章的時候,最新版本是361.42,然而推薦版本是352:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-352
  • 重啟系統
sudo shutdown -r now
  • 檢查以確保安裝了正確版本的NVIDIA驅動
cat /proc/driver/nvidia/version

CUDA

  • 從Nvidia上下載CUDA7.5。然後到下載目錄下安裝CUDA
sudo dpkg -i cuda-repo-ubuntu1404*amd64.deb
sudo apt-get update
sudo apt-get install cuda
  • 新增CUDA到環境變數
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
  • 檢查以確保安裝了正確版本的CUDA
nvcc -V
  • 重啟系統
sudo shutdown -r now

檢查CUDA安裝(可選)

  • 在CUDA安裝目錄安裝樣例。編譯它們(需要幾分鐘):
/usr/local/cuda/bin/cuda-install-samples-7.5.sh ~/cuda-samples
cd ~/cuda-samples/NVIDIA*Samples
make -j $(($(nproc) + 1))

注意:(-j $(($(nproc) + 1)))命令使用你機器上的核心數並行執行,所以編譯會更快

  • 執行deviceQuery,確保它能檢測到顯示卡並測試通過
bin/x86_64/linux/release/deviceQuery

cuDNN

  • cuDNN是為DNN設計的CPU加速庫。它能在多種情況下幫助提升執行速度。為了下載cuDNN庫,你需要到Nvidia網站https://developer.nvidia.com/cudnn上進行註冊。幾小時到幾個工作日就能夠批准。一旦註冊批准,下載Linux版本的cuDNN v4。最新版本是cuDNN v5,但是不是所有的工具都支援。

  • 解壓並複製檔案

cd ~/Downloads/
tar xvf cudnn*.tgz
cd cuda
sudo cp */*.h /usr/local/cuda/include/
sudo cp */libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

檢查

  • 你可以使用nvidia-smi 命令檢查目前所有操作都正確。這應該會輸出GPU的一些統計資料

Tensorflow

  • 安裝v0.8版本與GPU相容。下面的指令都來自於這裡
sudo apt-get install python-pip python-dev sudo pip install --upgrade 
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
  • 執行一個測試程式確保Tensorflow成功安裝。當你執行import命令的時候,應該不會有警告/錯誤。
python
>>> import tensorflow as tf
>>> exit()

OpenBLAS

  • OpenBLAS是一個線性代數庫,比Atlas更快。這一步是可選的,但要注意,下面的一些步驟假定你已經安裝了OpenBLAS。你需要安裝gfortran來編譯它。
mkdir ~/git
cd ~/git
git clone https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS
make FC=gfortran -j $(($(nproc) + 1))
sudo make PREFIX=/usr/local install
  • 將路徑新增到LD_LIBRARY_PATH 變數中
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc

常用工具

  • 為Scipy安裝一些常用工具
sudo apt-get install -y libfreetype6-dev libpng12-dev
pip install -U matplotlib ipython[all] jupyter pandas scikit-image

Caffe

  • 下面的指令都來自於這裡。第一步是安裝所必須的檔案
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
  • 克隆Caffe資源庫
cd ~/git
git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config
  • 如果你安裝了cuDNN,取消Makefile中USE_CUDNN := 1 這一行的註釋
sed -i 's/# USE_CUDNN := 1/USE_CUDNN := 1/' Makefile.config
  • 如果你安裝了OpenBLAS,修改BLAS引數值為open
sed -i 's/BLAS := atlas/BLAS := open/' Makefile.config
  • 安裝需要的檔案,構建Caffe和測試,執行測試確保所有測試都通過。注意,這都需要一段時間。
sudo pip install -r python/requirements.txt
make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest -j $(($(nproc) + 1))
  • 構建PyCaffe,Caffe的Python介面
make pycaffe -j $(($(nproc) + 1))
  • 將Caffe新增到環境變數中
echo 'export CAFFE_ROOT=$(pwd)' >> ~/.bashrc
echo 'export PYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH' >> ~/.bashrc
source ~/.bashrc
  • 測試確保Caffe安裝成功。當執行import命令的時候應該不會有警告/錯誤。
ipython
>>> import caffe
>>> exit()

Theano

  • 安裝所必須的檔案,然後安裝Theano。這些指令來自於這裡
sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ python-pygments python-sphinx python-nose
sudo pip install Theano
  • 測試Theano安裝。當執行import命令的時候應該不會有警告/錯誤。
python
>>> import theano
>>> exit()

Keras

  • Keras是圍繞Theano和Tensorflow設計的一個有用的封裝。預設情況下,它使用Theano作為後端。檢視這裡的指令以瞭解如何變更為Tensorflow。
sudo pip install keras

Torch

  • 下面安裝Torch的指令來自於這裡。安裝會花一些時間
git clone https://github.com/torch/distro.git ~/git/torch --recursive
cd torch; bash install-deps;
./install.sh

X2Go

  • 如果你的深度學習機器不是主要工作機器,X2Go可以幫助你遠端訪問。X2Go是一個了不起的遠端訪問解決方案。你可以使用下面的命令在Ubuntu機器上安裝X2Go服務。
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goserver x2goserver-xsession
  • X2Go不支援統一桌面環境(Ubuntu的預設環境)。我發現XFCE效果不錯。更多支援的環境在這裡
sudo apt-get update
sudo apt-get install -y xfce4 xfce4-goodies xubuntu-desktop
  • 使用下面的命令檢視機器的IP
hostname -I
  • 你可以使用上面的IP在你主要使用的機器上安裝一個客戶端來連線到深度學習伺服器上。根據你的客戶端系統,這裡有更多的指令。