深度学习环境搭建 ubuntu16+GTX1080+CUDA8+Theano+Tensorflow+keras

来源:互联网 发布:网络电视剧排名榜 编辑:程序博客网 时间:2024/04/28 22:43

深度学习环境搭建ubuntu16+GTX1080+CUDA8+Theano+Tensorflow+keras

终于按耐不住自己攒了深度学习的机器,6700k的cpu,GTX1080的显卡。配置过程中遇到了种种难题,历经一周左右的时间终于配置成功。期间遇到的问题如下:
1. 显卡的输出分辨率与显示器输入分辨率不相符
2. cuda安装时显卡驱动版本冲突
3. Anaconda 权限问题
4. .theanorc 配置问题
5. graphviz pydot安装

解决方案
问题1 显卡输出与显示器输入不相符
问题描述:The current input timing is not supported by the monitor display. Please change your input timing to ……
这是由于GTX1080与显示器输入冲突引起的。Ubuntu本身没有安装显卡驱动无法自适应的调整输入分辨率。因此在安装过程中需要在无限卡驱动模式先安装Ubuntu,系统安装完成之后再安装显卡驱动。
系统安装步骤如下
安装Ubuntu16时 按esc进入Grub模式,选择Install Ubuntu,按‘E’,进入配置安装选项。配置再无显卡驱动状态下安装系统
去掉”–”后,依照不同显卡进行不同显卡驱动选项的添加
(1)Intel 82852/82855 或8系列显示晶片:i915.modeset=1或i915.modeset=0
(2)Nvidia:nomodeset
(3)其它厂牌(如ATI,技嘉):xforcevesa或radeon.modeset=0 xforcevesa
我选用的显卡为GTX1080,因此替换第一个 ‘- -’为nomodeset。此时可进入Ubuntu安装程序,可以顺利安装。
安装完毕后Ubuntu 16.04的分辨率很低,在显卡驱动未安装之前,可以手动修改一下grub文件:
sudo vim /etc/default/grub
The resolution used on graphical terminal
note that you can use only modes which your graphic card supports via VBE
you can see them in real GRUB with the command `vbeinfo’
GRUB_GFXMODE=640×480
这里分辨率自行设置
GRUB_GFXMODE=1024×768
这一步很重要sudo update-grub
关于ubuntu源的配置可以参照中科大的source.list
这里给出了详细的配置方法


问题2 cuda安装
Cuda安装过程一定不要使用sudo权限安装,深度学习开发中涉及到对gpu的调用,否则总会提示permission 相关的错误。此外,安装cuda8 时一定要安装相应的补丁文件和cudnn。
1080显卡驱动已更新到367版本,cuda中还保留着361的驱动。
因此选用独立安装最新版本的367驱动,安装cuda8时对于提示安装361驱动时一定选N

另外,建议采用*.run文件安装,.deb安装过程问题较多
下载时需要注册


问题3 Anaconda安装权限问题
Anaconda再windows下和Linux下都有非常简便的安装方法,参见之前的blog,需要注意的是Linux版本 安装过程中不要使用sudo 权限安装,否则后面涉及包的读写操作时总会有permission 错误


问题4 .theanorc 配置
[global]
floatX = float32
device = gpu
[lib]
cnmem = 0.925(这个数字必须是浮点型,介于0~1之间except0&1)
[cuda]
root = /usr/local/cuda (cuda的安装目录)


问题5 pydot错误
在使用theano或者tensorflow的可视化功能时常用到pydot,很多情况下都是已经安装pydot仍然提示导入失败,原因是没有安装graphviz或者安装pydot版本不正确。
首先安装graphviz
参照ubuntu下安装graphviz,解决了conda安装graphviz无法使用的问题
此外,安装pydot时需要指定版本,tensorflow,theano,keras中运行稳定的版本是pydot 1.1.0。这是需要大家注意的地方。

测试可视化

from keras.models import Sequentialfrom keras.layers import Dense, Activationfrom keras.utils.visualize_util import plotmodel = Sequential([Dense(32, input_dim=784),Activation('relu'),Dense(10),Activation('softmax'),])plot(model, to_file='/home/xmw/Downloads/test/model_test.png')

网络结构图

测试gpu使用

from theano import function, config, sharedimport theano.tensor as Timport numpyimport timevlen = 10 * 30 * 768  # 10 x #cores x # threads per core #这里可以加一两个0,多测试一下,记得去掉汉字iters = 1000rng = 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 xrange(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')

输出
/home/xmw/anaconda2/bin/python /home/xmw/PycharmProjects/tfLearning/testgpu.py
Using gpu device 0: GeForce GTX 1080 (CNMeM is enabled with initial size: 92.5% of memory, cuDNN 5105)
……
Used the gpu

至此说明配置成功。

0 0