首頁 > 軟體

深層學習庫包Theano、Lasagne、TensorFlow在Ubuntu支援GPU的安裝

2020-06-16 17:38:10

隨著深層學習的火熱,越來越多的人開始使用深層學習訓練自己的模型。 用GPU訓練的速度比CPU快很多倍,可讓需要訓練一周的模型只在一天內完成。 這篇post就介紹如何在Ubuntu14.04上安裝用GPU訓練的Theano、Lasagne、TensorFlow

  • Anaconda
    • 安裝
    • 使用
  • GPU設定
    • 安裝CUDA
    • 安裝cuDNN
  • Theano
    • 安裝
    • GPU環境變數設定
    • GPU執行測試
  • Lasagne
    • 安裝
    • 教學
  • TensorFlow
    • 安裝
      • CPU only
      • GPU enabled
    • GPU環境變數設定
    • 簡單測試
    • TensorBoard
      • 追蹤資料
      • 分析模型
    • 教學

Anaconda

由於將會用到很多Python的庫包,安裝Anaconda將會很方便

安裝

下載完畢後,執行,根據提示安裝到想要安裝的目錄下
>sudo bash Anaconda2-2.5.0-Linux-x86_64.sh

如果遇到 Error: Missing write permissions in: */anaconda2
You don't appear to have the necessary permissions to update packages
into the install area */anaconda2

執行下面指令,更改群組可以解決(請把usr 和 */ 替換為自己的內容)
>sudo chown -R usr */anaconda2

使用

所有指令都可以在Using conda找到
這裡列出幾個常用指令

  • 更新conda
    >conda update conda
  • 顯示可用packages
    >conda list
  • 從conda安裝package
    >conda install package-name
  • 如果conda沒有,可從anaconda.org上搜尋,鍵入所顯示的指令即可
    >conda install -c channel package-name
  • 刪除package
    >conda remove package-name
  • 更新package
    >conda update package-name

GPU設定

安裝CUDA

CUDA download(本文將選擇network安裝)

下載完畢後執行
>sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb
>sudo apt-get update
>sudo apt-get install cuda (耗時)
擁有cuda的平行計算模組就可以用GPU訓練Theano的模型了

安裝cuDNN

Theano也支援cuDNN(可選),而Tensorflow則必需要cuDNN

cuDNN download(需要註冊),下載完畢後執行
>tar xvzf cudnn-7.0-linux-x64-v4.0-prod.tgz
>sudo cp cuda/include/cudnn.h /usr/local/cuda/include
>sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
>sudo chmod a+r /usr/local/cuda/lib64/libcudnn*


Theano

由於Theano對模型擁有很高的控制權,深受研究人員喜歡

安裝

>sudo apt-get install g++ libopenblas-dev
>conda install git
>pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git

也可以從anaconda.org上搜尋

GPU環境變數設定

>export CUDA_ROOT=/usr/local/cuda-7.5/
>export PATH=$PATH:$CUDA_ROOT/bin
>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_ROOT/lib64
>export THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32,allow_gc=False
>export CUDA_LAUNCH_BLOCKING=1

需要注意的是GPU只支援float32的資料,想要更多的速度,就要把資料的型別都轉為float32

GPU執行測試

from theano import function, config, shared, tensor, sandbox
import numpy
import time

vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
iters = 1000

rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], tensor.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
    r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, tensor.Elemwise) and
              ('Gpu' not in type(x.op).__name__)
              for x in f.maker.fgraph.toposort()]):
    print('Used the cpu')
else:
    print('Used the gpu')

CPU結果:

[Elemwise{exp,no_inplace}(<TensorType(float64, vector)>)]
Looping 1000 times took 3.060987 seconds
Result is [ 1.23178032  1.61879341  1.52278065 ...,  2.20771815  2.29967753
  1.62323285]
Used the cpu

GPU結果:

Using gpu device 0: GeForce GTX 980 Ti (CNMeM is disabled, CuDNN 4007)
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 0.208453 seconds
Result is [ 1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.29967761
  1.62323296]
Used the gpu

Lasagne

安裝

Lasagne是寫在Theano之上的庫包,可以使使用者更簡單的使用深層學習訓練
這裡將要安裝的是Lasagne 0.2.dev1版本,直接執行
>conda install -c http://conda.anaconda.org/toli lasagne

教學

這裡有Lasagne tutorialLasagne tutorial2的簡單ipython教學


TensorFlow

TensorFlow是由Google開源的深層學習包,在概念上和Theano十分相似,都是生成computational graph並可自動求導,雖然表達上比Theano簡潔了一些,但對於模型結構的控制能力不如Theano。當前的GPU版本還在視訊記憶體占用方便有問題。總體來說十分“年輕”。但是擁有強大的公司背景。使人十分期待未來發布的版本。

安裝

CPU only

>pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl

GPU enabled

>pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl

遇到如下問題時
Cannot remove entries from nonexistent file /usr/local/bin/anaconda2/lib/python2.7/site-packages/easy-install.pth
執行,刪除後setuptools再執行
>conda remove setuptools

GPU環境變數設定

>export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64
>export CUDA_HOME=/usr/local/cuda

簡單測試

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

Hello, TensorFlow!

a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))

42

期間你將會看到類似的資訊

Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 980 Ti, pci bus id: 0000:01:00.0)

TensorBoard

比較人性化的地方是工具TensorBoard可以自動生成如下的互動介面,允許使用者更好的追蹤資料和分析自己所建的模型

追蹤資料

分析模型

教學

還有很多教學可以參考官網


IT145.com E-mail:sddin#qq.com