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

来源:互联网 发布:python接收命令行参数 编辑:程序博客网 时间:2024/05/21 22:31

  四月份的时候就已经搭建了一次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 copy
  1. cd cudamat  
  2. 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
  1. 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
  1. sudo python setup.py install
显示没有setuptools 就下载

2. 安装

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

$ cd setuptools=0.6c11

$ python setup.py install

然后执行

  1. sudo python setup.py build

  1. 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


阅读全文
0 0
原创粉丝点击