深层学习库包Theano、Lasagne、TensorFlow在Ubuntu支持

随着深层学习的火热,越来越多的人开始使用深层学习训练自己的模型。 用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找到
这里列出几个常用指令

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 安装

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15173.html