Ubuntu Server 16.04 配置Keras

本文详细介绍了在Ubuntu Server 16.04上配置Keras的完整步骤,包括环境搭建、numpy和scipy的安装、blas、cblas、lapack和atlas的编译,以及Theano和GPU驱动的配置。通过这篇教程,你可以学会如何在服务器上安装Keras并充分利用GPU加速计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu Server 16.04 配置Keras

在整个配置过程之前,由于本文使用大量下载,安装的工作,建议使用alt+f1,f2使用多个终端进行工作,节省时间,同时由于个人在配置过程中出现了各种各样的问题,所以可能会配置多余的东西,欢迎批评指正。

首先配置python环境

sudo apt-get install python-dev python-pip

然后选择y使得继续安装,然后可以通过python测试是否安装成功。

对于Keras的首页上来说,安装顺序第一个是要安装numpy和scipy,但是这两个还需要引用一些包,首先是blas,然后是lapack和atlas,所以要先安装这几个,然后我就觉得cblas也顺便装上了,防止有人不知道,安装方式是先下载压缩包,使用命令wget,如果没有可以使用命令获取这个服务。

sudo apt-get install wget

然后就是通过wget下载文件了,形式如下:

sudo wget http://web/../name

blas的下载地址是http://www.netlib.org/blas/blas.tgz,cblas的下载地址是http://www.netlib.org/blas/blast-forum/cblas.tgz,lapack的官方包地址: http://www.netlib.org/lapack/,atlas的官方包地址:http://sourceforge.net/projects/math-atlas/,但是atlas可以简便安装,后面可以看一下。

选择一个包进行下载,就比如blas命令是:

sudo wget http://www.netlib.org/blas/blas.tgz

然后对于各个包安装方式如下:

blas:

下载文件后,对压缩包进行解压,进入目录,执行命令为:
gfortran -c -O3 *.f # 编译所有的 .f 文件,生成 .o文件
ar rv libblas.a *.o # 链接所有的 .o文件,生成 .a 文件
su cp libblas.a /usr/local/lib # 将库文件复制到系统库目录

cblas:

进入CBLAS文件夹,根据你自己的计算机平台,将目录下某个 Makefile.XXX 复制为 Makefile.in , XXX表示计算机的平台,如果是Linux,那么就将Makefile.LINUX 复制为 Makefile.in,然后使用下面的命令安装:
cp ../BLAS/libblas.a testing # 将上一步编译成功的 libblas.a 复制到 CBLAS目录下的testing子目录
make # 编译所有的目录
sudo cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a # 将库文件复制到系统库目录下

lapack:

编译 lapack以及lapacke,这一步比较麻烦,首先当然是进入lapack-3.4.2文件夹,然后根据平台的特点,将INSTALL目录下对应的make.inc.XXX 复制一份到 lapack-3.4.2目录下,并命名为make.inc, 这里我复制的是 INSTALL/make.inc.gfortran,因为我这里用的是gfortran编译器。
修改lapack-3.4.2/Makefile, 因为lapack以来于blas库,所以需要做如下修改
#lib: lapacklib tmglib
lib: blaslib variants lapacklig tmglib
make # 编译所有的lapack文件
cd lapacke # 进入lapacke 文件夹,这个文件夹包含lapack的C语言接口文件
make # 编译lapacke
cp include/*.h /usr/local/include #将lapacke的头文件复制到系统头文件目录
cd .. #返回到 lapack-3.4.2 目录
cp *.a /usr/local/lib # 将生成的所有库文件复制到系统库目录

altas:

由于安装比较麻烦,我直接使用命令就可以:

sudo apt-get install libatlas-dev

然后numpy和scipy需要nose的支持,所以再安装一个nose:

sudo apt-get install python-nose

然后还有各种包:

# 安装blas,Ubuntu下对应的是libopenblas,其它操作系统可能需要安装其它版本的blas——这是个OS相关的。
sudo apt-get install libopenblas-dev
# 安装lapack,Ubuntu下对应的是liblapack-dev,和OS相关。
sudo apt-get install liblapack-dev
# 安装atlas,Ubuntu下对应的是libatlas-base-dev,和OS相关。
sudo apt-get install libatlas-base-dev
# 安装numpy,scipy
sudo apt-get install python-numpy python-scipy

测试numpy和scipy是否完成安装,可以在python中,调用并执行numpy.test()和scipy.test(),进行测试,numpy.test()一般是十几秒,scipy.test()差不多一两分钟的样子下面Theano.test()多于半个小时吧,反正我没跑完就给停了。

安装Keras需要Theano的环境,同时需要GPU的支持,使得矩阵计算可以更快速,那么就需要在Ubuntu Server上安装相关的显卡驱动,对于我的电脑版本,使用的是NVIDIA的显卡,所以直接安装相关驱动就可以了。

查看电脑显卡型号:

lspci |grep VGA

或者直接输入lspci可以查看所有的 硬件设备,在当中找到显卡的相关信息。

然后后面装Theano的时候,theano.test()经常会出现pyCUDA引用出错的问题,所以我先安装了pyCUDA的相关组件,由于pyCUDA需要GPU的工作,所以还需要安装GPU卡的驱动,但是不能使用Ubuntu的图形界面,所以首先先关闭图形界面:

sudo service lightdm stop

当然这句话是对非Server的用户而言的,因为Server是没有这个服务的,同时需要屏蔽Nouveau驱动,否则容易在装完cuda的时候直接黑屏,首先修改黑名单:

sudo vi /etc/modprobe.d/blacklist.conf

然后添加以下内容:

blacklist vga16fb

blacklist rivafb

blacklist nvidiafb

blacklist rivatv

首先安装nvidia驱动:

sudo apt-get install nvidia-375

可以通过命令查看是否安装完成:

nvidia -smi

然后下载cuda的相关文件,https://developer.nvidia.com/cuda-downloads,我下载的是cuda_8.0.61_375.26_linux.run,自带GPU的驱动,所以就直接下载之后,通过命令执行安装:

chmod a+x cuda_8.0.61_375.26_linux.run
sudo ./cuda_8.0.61_375.26_linux.run

有可能在安装nvidia驱动的时候会提示关闭x server,可以通过以下语句关闭,重新安装。

sudo /etc/init.d/lightdm stop

安装cuda后需要修改sudo gedit ~/.bashrc,添加以下内容:

64位:

export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH

32位:

export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib:$LD_LIBRARY_PATH

同时也可以通过apt-get方式获取nvidia-cuda-toolkit:

sudo apt-get install nvidia-cuda-toolkit

然后在使用theano的时候,需要numpy,scipy等库,有Anaconda的可以包含这些库,所以下载并安装Anaconda:https://www.continuum.io/downloads#linux,然后通过以下命令安装,期间询问是否添加到PATH时候,选择yes:

bash Anaconda2-4.4.0-Linux-x86_64.sh

然后让配置文件生效:

source ~/.bashrc

然后使用apt-get安装numpy和scipy时,好像还是可以安装的,不知道是不是依赖产生了问题,所以我又安装了一次,由于需要nose包,所以也先安装了nose包。

sudo apt-get python-nose python-numpy python-scipy

然后安装yaml

sudo -H pip install pyyaml

再安装Theano

sudo -H pip install Theano

通过一段cpu和gpu的查看代码,可以查看是否完成了安装:

from theano import function, config, shared, sandbox
import theano.tensor as T
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([], T.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, T.Elemwise) for x in f.maker.fgraph.toposort()]):
    print('Used the cpu')
else:
    print('Used the gpu')

有可能会出现许多关于gpu无法使用的问题,我的问题是:

ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.8.0: cannot open shared object file: No such file or directory  
WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not available  (error: cuda unavailable)  
[Elemwise{exp,no_inplace}(<TensorType(float32, vector)>)]  
Looping 1000 times took 2.026935 seconds  
Result is [ 1.23178029  1.61879337  1.52278066 ...,  2.20771813  2.29967761  
  1.62323284]  
Used the cpu 

错误原因是文件找不到,解决办法:
执行命令: ldconfig /usr/local/cuda/lib64就可以解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值