在前一篇文章中我们介绍了一下安装Theano框架的方法,但是使用不同的安装方式,最后跑的速度会有很大的区别,在这里提一下应该如何安装:
首先不建议使用虚拟机安装深度学习框架,因为虚拟机中无法进行gpu加速等操作,并且也不能使用硬件的显卡,实际上速度还会很慢,并且容易出现内存或缓存占满的问题,因此如果要使用深度学习框架Theano,最好用专门的计算机或服务器。
安装Theano有三种方法,第一种是直接安装python-numpy库和python-scipy库,然后再直接安装Theano,这种方式安装之后Numpy,Scipy和Theano都不能通过http://blog.csdn.net/xuezhisdc/article/details/47065475链接中的测试,并且运行速度也很慢,所以不能这样安装。第二种方法是先安装Atlas,然后再Atlas的基础上安装Numpy和Scipy,这样的运行速度会快10倍左右,因为Atlas会对python的库进行加速。当然还有一种更快的方法是使用OpenBlas对Numpy和Scipy进行加速,这样的速度是最快的,并且Theano默认是使用OpenBlas加速,所以也更方便。因此使用这种方法安装环境并进行测试。在这之后,为了充分发挥服务器的性能,当然要使用GPU加速,因此需要安装cuda并且将Theano设置为gpu加速的形式,在这里将ubuntu安装Openblas的方法和GPU加速的设置方式进行说明:
主要参考网页如下:
Theano官网:
http://www.deeplearning.net/software/theano/
OpenBlas相关网页:
https://github.com/xianyi/OpenBLAS/wiki/Installation-Guide
相关的博客:
http://blog.csdn.net/xuezhisdc/article/details/47065475
http://www.csdn.net/article/2015-08-07/2825415
http://www.th7.cn/system/lin/201604/162762.shtml
http://www.jb51.net/LINUXjishu/211594.html
接下来进行详细说明:
1.安装OpenBlas
这一部分主要参考以下链接:
http://deeplearning.net/software/theano_versions/dev/install_ubuntu.html
http://www.linuxdiyf.com/linux/15610.html
https://github.com/xianyi/OpenBLAS
在github上下载好代码以后
1 2 3 4 5 6 |
git clone git://github.com/xianyi/OpenBLAS cd OpenBLAS make FC=gfortran(如果没有安装gfortran,执行sudo apt-get install gfortran) make install (将OpenBLAS安装到/opt下) ln -s /opt/OpenBLAS/lib/libopenblas.so /usr/lib/libblas.so.3 ln -s /opt/OpenBLAS/lib/liblapack.so.3 /usr/lib/liblapack.so.3 |
最后两条命令是让全局可以找到OpenBlas,避免出现http://www.jb51.net/LINUXjishu/211594.html链接中的问题。当然如果出现了问题可以用其中的解决方法解决。
2.安装Numpy,Scipy和Theano
这里先安装python-numpy和python-scipy:
1 2 |
sudo apt-get install python-numpy sudo apt-get install python-scipy |
然后直接安装Theano,他会自动附属的安装需要的numpy库和scipy库。
1 2 |
sudo pip install Theano sudo pip install nose-parameterized(防止Theano测试时出现一些问题) |
安装好后对Scipy,Numpy和Theano进行测试,先测试Numpy,然后是Scipy,最后Theano,前两个的测试必须通过,当然如果出了问题就要反复重装,这个比较迷我也还没有找到什么规律,Theano最后的编译可能会有一些小问题,但是基本不影响使用(其实也不知道怎么解决)
在以下链接中,也有一种直接下载源文件进行编译的方法
http://blog.csdn.net/xuezhisdc/article/details/47065475
编译的方法我也试过,但是bug比较多,不建议使用,在这里我安装的numpy版本为1.12.0 ,scipy版本为0.18.1,要查看当前numpy和scipy版本的方式如下:
http://www.cnblogs.com/klchang/p/4543032.html
3.使用GPU加速
首先自行安装cuda和NVIDIA CUDA drivers and SDK
参考链接:
http://www.csdn.net/article/2015-08-07/2825415
http://www.th7.cn/system/lin/201604/162762.shtml
然后在工程目录中新建.theanorc文件,例如我的电脑名字是达达,则建立在/home/dada/目录下
1 2 |
cd /home/dada vim .theanorc |
在theanorc目录中添加以下内容:
1 2 3 4 5 6 7 8 9 10 |
[global] device=gpu floatX=float32 root=/usr/local/cuda-7.5(这里填自己cuda的地址,一般在/user/local目录下) [nvcc] fastmath = True [blas] ldflags = -lopenblas(使用openblas) [cuda] root = /usr/local/cuda-7.5 |
之后按照链接中的文件进行测试,显示gpu则配置成功。
4.SRNN框架编译过程中出现的问题:
首先安装模型:https://github.com/asheshjain399/NeuralModels
跑char-rnn.py的历程,一般使用GPU加速+openblas是10分钟,100个点耗时21s,如果是atlas且没有GPU加速我跑了4小时100个点耗时500s,如果atlas也没有我跑了3天,100个点耗时4000s以上。
如果这一部分没有问题,则到以下目录跑SRNN
https://github.com/asheshjain399/RNNexp/tree/srnn/structural_rnn
要注意数据集要单独下,在readme里有链接,放到本地后修改basedir中的地址,跑的时候出现的问题和解决方法主要有:
http://www.jb51.net/LINUXjishu/211594.html
最后强调一下,电脑真的很重要,虚拟机啥的就别折腾了吧,一堆bug,动不动还内存冲突。