Anaconda2+cuda7.5+theano的深度学习框架搭建

 
  近来的学习需要一些深度学习的工具,所以在网上找了很多教程来搭建环境。但是并没有成功启用GPU,也没有实现依赖BLAS加速,所以还是在CPU上跑,非常慢。。。不知问题所在,还望大家一起探讨。
  首先,我的电脑设备,thinkpad s5 i5 6300  GTX960M,HD graphics 530。
  按照网上的教程,我先下载了anaconda2,网址: https://www.continuum.io/downloads,现在这个网站上anaconda已经更新到4.3.0了。下载anaconda2-4.3.0.1还要百度一番,具体网址找不到了,云盘链接: 百度网盘-链接不存在。我这个是内置python2.7的。网上关于python2.7配置的教程比较详细。anaconda3也有两个版本,一个内置python2.7,一个内置python3.6。最好用低版本的,貌似高版本的有兼容新问题,反正我安装高版本的失败就全卸载了。
  下一步就是下载cuda,网址: CUDA Toolkit Archive | NVIDIA Developer在这个网址可以下载到cuda的好几个版本。我最开始下载的是cuda8.0 安装之后不能启用GPU,所以我又卸载了,重新下载了cuda7.5,网上关于cuda7.5的教程比较详细。
  在进行安装工作之前,请将电脑上的关于python的东东卸载干净相关环境变量也删掉,这样比较保险。
  好了,下载完成之后就开始第一步了,安装anaconda2,记住安装路径,或者默认路径,一路next下去,安装完成之后,查看用户环境变量中的path,如果没有就添加两个变量C:\Users\Yang\Anaconda2,C:\Users\Yang\Anaconda2\Scripts,C:\Users\Yang\Anaconda2\Library\bin。我是默认路径安装。安装完成之后开始各种库的安装。网上有教程说在cmd里面直接运行pip install mingw libpython会报错,这个说法貌似是对高版本成立。我得是低版本,所以直接就运行pip install mingw libpython,等待进度条。安装完成之后在Anaconda2安装路径文件夹下就生成了一个MinGW文件夹。添加变量系统环境变量path : C:\Users\Yang\Anaconda2\MinGW\bin,C:\Users\Yang\Anaconda2\MinGW\x86_64-w64-mingw32\lib。
  下一步安装theano库,在cmd里面运行pip install theano,等待进度条完成。安装完theano之后还要安装nose 和 nose_parameterized,pycuda。不安装的话后面进行theano.test()的时候可能报错。安装完之后在用户路径下新建一个 .theano.txt文件,我得路径就是C:\Users\Yang,参照网上的教程
[global]
device=gpu
openmp=False
floatX=float32
allow_input_downcast=True
base_compiler=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin
[nvcc]
flags=-LC:\Users\Yang\Anaconda2\libs
flags=--use-local-env  --cl-version=2008
compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
fastmath=True
flags=-arch=sm_50
[blas]
ldflags=
[gcc]
cxxflags=-IC:\Users\Yang\Anaconda2\MinGW\x86_64-w64-mingw32\bin
[cuda]  
root=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin
[lib]
cnmem=0.5
cmd下面输入python->import theano->theano.test(),看看是否有错误产生。我就是在这里产生了各种各样奇奇怪怪的错误。。。实在是无语。
添加环境变量,在用户环境变量里面新建 pythonpath 变量值C:\Users\Yang\Anaconda2\Lib\site-packages\theano
错误1:no module named theano 查看你的theano安装的位置是不是在C:\Users\Yang\Anaconda2\Lib\site-packages这个路径下,如果不在,那就是theano安装错了,重新安装,貌似低版本的不会出现这个问题但会出现其他问题。。接下来还有比较多的错误,不过留到后面再说
 现在安装cuda7.5,下载的时候一定要选对系统,不然无法安装。一路next,安装选项选择自定义,将所有的都安装上。等待安装完成,安装应该没有什么问题,问题都在后面呢 啊哈哈。。安装完之后查看系统环境变量,我在默认路径下安装,所以自己就添加了环境变量,如果没有还需要手动添加环境变量C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib。cuda要依赖VS,我安装的是VS2013,现在也需要在系统环境变量里面添加两个变量值C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE,C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin。
安装完成之后可以在cmd下面运行nvcc -V测试是否安装成功,安装成功之后会输出安装软件的版本号。还可以运行samples,C:\Program Files\NVIDIA Corporation\Installer2\CUDASamples_7.5,在这个路径下运行里面的样例。应该都能成功,不再赘述。
现在安装完之后可以进行测试了,按照网上的教程应该都是一次通过,gpu跑成功
测试代码:
测试pycuda:
# -*- coding: utf-8 -*-
"""
Created on Fri Feb 10 16:47:13 2017

@author:
"""

import pycuda.autoinit
import pycuda.driver as drv
import numpy

from pycuda.compiler import SourceModule
mod = SourceModule("""
__global__  void multiply_them(float *dest, float *a, float *b)
{
  const int i = threadIdx.x;
  dest[i] = a[i] * b[i];
}
""")

multiply_them =mod.get_function("multiply_them")

a =numpy.random.randn(400).astype(numpy.float32)
b =numpy.random.randn(400).astype(numpy.float32)

dest = numpy.zeros_like(a)
multiply_them(
        drv.Out(dest), drv.In(a), drv.In(b),
        block=(400,1,1), grid=(1,1))

print dest-a*b
测试结果输出全为0,且不报错则成功。
theano测试:在cmd下输入python->import theano->theano.test(),漫长的等待之后,如果没有报错则安装成功,并且成功启用gpu。而我就不是这么幸运了。。。。
然后gpu测试代码:
 # -*- coding: utf-8 -*-
"""
Created on Thu Feb 09 23:52:17 2017

@author: 
"""

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')

如果输出 Used the gpu 恭喜你 大功告成!!!
但是应该很多人都没有那么幸运,,,比如我。
上面是我根据网上的教程的自己的安装流程,我试了四五个安装教程,软件是装了卸,卸了装,好几遍。现在能够运行theano深度学习库,但是仍然启用不了GPU。
下面说说我遇到的奇葩问题。。。
问题1:no module named theano  上面已经说过了,检查指定路径下是否有该文件
问题2:import pycuda failed ,没有安装pycuda  ,在cmd里面pip install pycuda应该能解决问题,但是我安装之后也出现过这个问题。
问题3:BLAS加速测试返回Ture,在python下输入import numpy id(numpy.dot)==id(numpy.core.multiarray.dot) 如果返回False则加速成功,返回Ture则没有依赖blas加速。对于没有加速的问题,很多博客里只是提到,并没有给出解决方案,我卸载重装了好几次,更换了numpy scipy的版本也没有解决这个问题。
问题4:CnMeM is disabled Cudnn is not avilable。网上给出的解决办法是 在.theanorc.txt文件中将cnmem的数值设定小于1,并且在网上下载cudnn库将里面cuda文件夹下面的三个文件夹复制替换掉cuda安装路径下的三个同名文件夹
问题5:theano.test()报错并python崩溃,
并没有找到解决的办法。。。。
还有诸多问题,并没有找到合适的解决方案,现在只能在cpu上跑theano库,并不能用GPU....在此渴求各位成功的朋友能给一些指导!!!谢谢!!
参考链接:
1. http://deeplearning.net/software/theano/install_windows.html#install-windows
2. http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml(各种库的下载)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值