您的位置:首页 > 其它

ubuntu16.0.4环境下搭建DeepNet深度学习框架

2017-08-16 17:06 661 查看
  四月份的时候就已经搭建了一次Deepnet框架,只是当时也没有运行成功例子就那样搁浅了。现在是因为发现神经网络利用hadoop并行不太可能,就果断放弃搞了近一个月的hadoop,转向GPU了。但是学习hadoop搭建环境也是搞了大概两天吧,后来也是看视频学习等,现在至少搭建环境没问题了。所以说还是有收获的。

  现在来完整地说说这个框架的搭建过程及遇到的问题及解决方法吧。

 我的环境ubuntu 旗舰版 16.0.4 +cuda-8.0+protobuf-3.2 +Anaconda2

 首先 介绍一下

这个框架deepnet是多伦多大学计算机系机器学习组开发的一个神经网络工具包,可以进行以下计算:  

1.  Feed-forward Neural Nets  

2.  Restricted Boltzmann Machines  

3.  Deep Belief Nets4.  Autoencoders  

5.  Deep Boltzmann Machines6.  Convolutional Neural Nets  

主要的成果是其中的DBM,可用于多模态建模。论文是“Multimodal Learning with Deep Boltzmann Machines”  框架比较冷门,所以安装资料比较少,但是在各位高手的帮助下还算是搭建成功了吧。  

两篇安装经验推荐 
http://blog.csdn.net/wspba/article/details/53363066​  
http://blog.csdn.net/llx1990rl/article/details/41699351
首先安装python ,建议安装 Anaconda2 ,因为那个numpy不知道怎么回事就是安装不成功,还是安装简洁的Anaconda2吧。

安装Anaconda2;

darcy@darcy-pc:~$ bash Anaconda2-4.3.0-Linux-x86_64.sh 

Welcome to Anaconda2 4.3.0 (by Continuum Analytics, Inc.)

In order to continue the installation process, please review the license

agreement.

Please, press ENTER to continue

输入Enter回车, 下面让你看License,直接往下翻到最后

================

Anaconda License

================

Copyright 2016, Continuum Analytics, Inc.

All rights reserved under the 3-clause BSD License:

...

cryptography

A Python library which exposes cryptographic recipes and primitives.

Do you approve the license terms? [yes|no]

>>> 

Please answer 'yes' or 'no':

>>> yes

输入yes;

Anaconda2 will now be installed into this location:

/home/darcy/anaconda2

  - Press ENTER to confirm the location

  - Press CTRL-C to abort the installation

  - Or specify a different location below

[/home/darcy/anaconda2] >>> 

输入Enter回车, 安装到默认目录;

PREFIX=/home/darcy/anaconda2

installing: python-2.7.13-0 ...

...

installing: anaconda-4.3.0-np111py27_0 ...

installing: ruamel_yaml-0.11.14-py27_1 ...

installing: conda-4.3.8-py27_0 ...

installing: conda-env-2.6.0-0 ...

Python 2.7.13 :: Continuum Analytics, Inc.

creating default environment...

installation finished.

Do you wish the installer to prepend the Anaconda2 install location

to PATH in your /home/darcy/.bashrc ? [yes|no]

[no] >>> yes

输入yes, 添加路径到配置文件;自动添加的

执行 如下命令,激活配置环境

darcy@darcy-pc:~$ source ~/.bashrc

darcy@darcy-pc:~$ python

Python 2.7.13 |Anaconda 4.3.0 (64-bit)| (default, Dec 20 2016, 23:09:15) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

Anaconda is brought to you by Continuum Analytics.

Please check out: http://continuum.io/thanks and https://anaconda.org
>>> 

>>> exit()

安装Protocol Buffers(不建议按照博客那里解压然后分别放到include 和lib文件夹下)

官网下载,我使用protobuf-2.6.1.tar.gz。

cd至下载路径

解压

$ tar zxvf protobuf-2.6.1.tar.gz  

进入解压目录

$ cd protobuf-2.6.1  

安装源码,配置、编译、编译检查、安装

$ ./configure  

$ make  

$ make check  

$ make install  

增加环境变量

$ sudo vi .bashrc  

#在最下面加上  

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib  

测试

$ protoc --version  

protoc: error while loading shared libraries: libprotoc.so.8: cannot open shared

错误原因:

protobuf的默认安装路径是/usr/local/lib,而/usr/local/lib 不在Ubuntu体系默认的 LD_LIBRARY_PATH 里,所以就找不到该lib

解决方法:

1). 创建文件 /etc/ld.so.conf.d/libprotobuf.conf,在该文件中输入如下内容:

/usr/local/lib  

2). 执行命令

sudo ldconfig 

这时,再运行protoc --version 就可以正常看到版本号了

执行 sudo ldconfig 

显示符号连接错误

/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 不是符号连接

/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 不是符号连接

原因:

系统找的是一个符号连接,而不是一个文件。

解决方法:

sudo mv /usr/lib/

nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org

sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org

sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1

sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1
安装cuda 

不建议deb方式安装,因为会出现驱动的问题,具体还是看官网介绍吧。

sudo apt-get purge nvidia-*  //删除现有关于cuda的东西

sudo apt-get install nvidia-375   //nvidia-后面的数字是版本号 兼容大部分的GPU型号

sudo reboot //重启

重启后,终端输入:

nvidia-smi    //或者

nvidia-settings 

如果没出错,则驱动安装成功

cuda 8.0 Downloads下载cuda 8.0 的 runfile安装包。

cd切换到下载的文件目录下进行安装: 

sudo sh cuda_8.0.44_linux.run

启动安装程序,一直按空格到最后,输入accept接受条款 

输入n不安装nvidia图像驱动,之前已经安装过了 (只要是提示安装驱动,不要选,最关键的一步在这儿了)

输入y安装cuda 8.0工具 

回车确认cuda默认安装路径:/usr/local/cuda-8.0 

输入y用sudo权限运行安装,输入密码 

输入y或者n安装或者不安装指向/usr/local/cuda的符号链接 

输入y安装CUDA 8.0 Samples,以便后面测试 

回车确认CUDA 8.0 Samples默认安装路径,该安装路径测试完可以删除

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

$ sudo gedit /etc/profile

在打开的文件末尾加入:

export PATH=/usr/local/cuda/bin:$PATH

保存之后,创建链接文件:

sudo gedit /etc/ld.so.conf.d/cuda.conf

在打开的文件中添加如下语句:

/usr/local/cuda/lib64

然后执行

sudo ldconfig

测试

cd 到 粗大examples 

~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
这样就安装成功了cuda;

接下来

编译cudamat。
[python] view plain copycd cudamat  
make  
一般会遇到 nvcc-03错误
编译cudamat之前修改makefile。因为CUDA是8.0,需要去掉:
-gencode=arch=compute_10,code=sm_10 \
1
1
然后加上:
-gencode=arch=compute_35,code=sm_35 \
-gencode=arch=compute_50,code=sm_50 \
-gencode=arch=compute_52,code=sm_52 \
-gencode=arch=compute_60,code=sm_60 \
1
2
3
4


1
2
3
4
这里修改的35 50这些数字要和查询设备里的一致,而且makefile里上下两段都要改,我原来只改了上面的可没少走弯路 。 这样后面运行时就不会出现CUDA error。接下来运行样例
测试DeepNet。

下载MNIST数据集,下载地址:http://www.cs.toronto.edu/~nitish/deepnet/mnist.tar.gz

cd到deepnet/deepnet/examples目录下运行:

[python] view
plain copy

python setup_examples.py <path to mnist dataset> <output path>  

结果出现 

错误 from google.protobuf import descriptor ImportError:No module named google.protobuf

又搞了好久,

cd到解压后的protobuf文件夹下的python文件夹,执行

[html] view
plain copy

sudo python setup.py install

显示没有setuptools 就下载
2. 安装

$ tar -zxvf setuptools-0.6c11.tar.gz

$ cd setuptools=0.6c11

$ python setup.py install

然后执行

sudo python setup.py build

sudo python setup.py install

运行例子还是不行,重装protobuf 依然有问题

最后

执行conda install -c conda-forge protobuf=3.2.0

选择yes

居然成功了,原来可能还是依赖哪里没有弄好。

也问了一个博主

他说 sudo apt-get install python-protobuf

这种方案我没有试过,不过应该也可以。

还可能遇到 No GPU 的问题

去这里
http://blog.sina.com.cn/1988joey
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: