zoukankan      html  css  js  c++  java
  • windows10 64bit Theano+GPU加速

    需要用到theano框架,安装之后发现速度太慢,本子虽然有点差,但是独显还是有的,所以通过GPU加速差不多能BICPU加速在10倍左右,整个环境来来去去用了一天的时间,主要原因还是没有系统教程,各种问题。。。

    1 需要的环境和版本

    我的安装环境是win10
    anacoda3(>下载< | >教程<)
    MinGW
    Theano
    vs2013
    cuda

    2 安装步骤

    • 安装anacoda,这个环境大大减小了后面其他环境的安装步骤和流程,是个基础性质的工具
    • 安装MinGW
    • 安装Theano
    • vs2013
    • cuda

    2.1 安装anacoda

    点击下一步,选择安装路径,简称傻瓜式安装
    我的anacoda安装路径是D:Anaconda3

    这里我用的是原来环境里面的anacoda,因为原来的是python36,但是theano好像和这个版本的python不兼容,所以用anacoda也很容易解决版本间的兼容问题

    conda create --name python27 python=2.7 //安装python2.7  在anacoda安装路径下面的envs就会有一个python27的文件夹,这就是安装的python27环境
    activate python27 # for Windows  //安装好后,使用activate激活某个环境

    安装完后需要添加anacoda安装路径到Path中,这样anacoda的命令就可以在控制台任意路径下使用了:

    D:Anaconda2;D:Anaconda2Scripts;  //这里根据你的安装具体修改,我的安装路径是D:Anaconda2

    关于anacoda的相应操作可见我的 >>博客链接<<

    方便操作
    为了便于以后多个版本之间的直接使用,修改python和pip的名字,快速完成操作,具体如下:
    安装完成后可以修改python27文件夹下的python.exe,改为python27.exe,相对应的python27Scripts下的pip.exe修改为pip27.exe、pip-script.py修改为pip27-script.py,相应的安装完成后根据需要可以添加环境变量到系统Path里面,我这里是:
    D:Anaconda3envspython27;D:Anaconda3envspython27Scripts; //这是两个路径,第一个是我的python27安装路径

    2.2 安装MinGW
    将python环境下的MinGW加入到环境变量里面(如果没有,暂时跳过,继续下一步),这里我的是:

    D:Anaconda3envspython27MinGW;D:Anaconda3envspython27MinGWx86_64-w64-mingw32lib;

    如果添加成功,继续2.3安装,如果压根没有这个文件,继续下面安装MinGW操作:

    • 进入cmd中(如果是多个python环境需要激活当前的anacoda的python环境,命令:activate python27
    • 输入命令conda install mingw libpython
    • 命令执行完毕也就安装好了mingw环境,按照2.2小结开始添加环境变量的方式添加环境变量

    2.3 安装Theano

    使用pip可以很方便安装,命令:

    pip install theano
    
    //如果多个版本python,按照2.1节 >方便安装< 里面修改的话,用如下命令
    pip27 install theano

    测试是不是安装成功了,进入你的python环境,我这里是我上文中的python27环境

    python27 //这条命令在cmd中运行,也可以用anacoda激活命令activate命令激活
    
    //下面时进入python27环境后的:
    >>import theano
    >>theano.test()

    如果没有错误的话应该就不会输出error,否则就需要google错误了

    这里也可以通过命令安装theano和Lasagne,这样就可以通过跑一跑卷积神经网络demo来测试环境是否安装成功了
    安装命令:pip install -r https://raw.githubusercontent.com/dnouri/kfkd-tutorial/master/requirements.txt
    测试:进入c盘的用户目录下的srclasagne,我的是C:Userszswsrclasagneexamples,用python命令运行python mnist.py如果能跑起来,你会发现第一个epoch后准确率为88.42 %

    其实到这里theano环境已经能用了,如果对速度没要求的话,或者你的CPU已经够牛X的话,就可以直接使用了,如果想要GPU加速,继续下面的配置。

    2.4 配置GPU加速

    查看自己的显卡是不是被支持了,这里可查 >官方链接< >百度链接<
    如果支持,那么继续下面操作,不支持就没办法了,终止

    2.4.1 安装vs2013

    安装里面的c++编译环境,我这里安装的是vs2013,网上看着2010也行,其他版本不清楚
    我这里是全安装的,就是按照默认的安装方式安装的,但是有教程说是只安装c++的就行,没试过
    我的安装路径是D:Program Files (x86)Microsoft Visual Studio 12.0

    2.4.2 安装cuda

    cuda是用GPU加速的一个工具,按照自己电脑的情况下载,这里是>官网链接<
    !!! 这一定要注意,博主在安装的时候出问题主要在这里了,因为第一次安装的是最新的9.1版本,但是一直有问题,各种搞都不行,最后卸载后安装8.0成功了,所以我建议如果安装vs2013+python27的话,安装8.0一定是没有问题的,亲测

    然后按照自定义下载安装就好了(我为了避免c盘爆炸,安装在了D盘里面),这一步骤的环境变量已经给自动配置好了,我的安装路径是D:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0

    测试:在cmd中输入nvcc --version,正常输出版本号就好了(nvcc -v也可以,但是我的不行,可以试试)

    2.4.3 配置gpu环境

    需要进行一定的配置才可以使用gpu,这里进入你用户的目录下的,里面找到.theanorc.txt,如果没有则创建就好,具体里面配置如下:

    [global] 
    openmp=False 
    device = gpu
    floatX = float32 
    allow_input_downcast=True 
    nvcc.flags=-D_FORCE_INLINES 
    
    [blas] 
    ldflags= 
    
    [gcc] 
    cxxflags=-ID:Anaconda3envspython27MinGW
    
    [nvcc] 
    fastmath = True
    flags = -LD:Anaconda3envspython27Lib
    compiler_bindir = D:Program Files (x86)Microsoft Visual Studio 12.0VCin 
    base_compiler=D:Program Files (x86)Microsoft Visual Studio 12.0VCin 
    
    [cuba] 
    root = D:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0

    需要修改的是里面的路径根据我每一步骤给出的我的安装路径做相应修改就好

    测试一下你的GPU是不是能正常跑了:

    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' % iters, t1 - t0, 'seconds')  
    print ('Result is', 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就说明是gpu在跑了。

    2.4.4 修改警告

    不出意外的话,你会有using gpu device 0: Geforce GTX 965M(CNMeM is disable,CuDNN not available)的警告!

    • 针对第一个警告(NMeM is disable)
      在你的.theanorc.txt后面添加:

      [lib]
      cnmem = 1

      具体原因博主弱鸡不懂
    • 针对第二个警告(CuDNN not available)
      需要安装cudnn
      官网下载好像要注册才行。我的是从CSDN下载下来的,花了我c币的,这里共享了
      链接:https://pan.baidu.com/s/1bpHbvLd 密码:0cpt
      把里面的三个文件直接覆盖替换到你的cuda安装路径就好了,我的是D:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0 (覆盖替换的意思就是直接拖进去,重复的就选择替换)

    至此Theano+GPU加速安装完毕
    当然可以在此基础上安装其他深度学习框架,如TensorFlow、keras等

    参考教程:

  • 相关阅读:
    3年A班,从现在起大家都是人质-观后感
    深入浅出的Object.defineProperty()
    在Vue中使用插槽(solt)
    非父子组件间的传值
    给组件绑定原生事件
    组件参数校验与非props特性
    Vue父子组件的数据传递
    Vue组件使用中的细节点
    vue中set基本用法
    vue中的列表渲染
  • 原文地址:https://www.cnblogs.com/zswbky/p/8454043.html
Copyright © 2011-2022 走看看