zoukankan      html  css  js  c++  java
  • ubuntu16.04安装tensorflow-gpu和cuda8.0加速训练

    转载请注明出处:http://www.cnblogs.com/buxizhizhoum/p/8086230.html 

    环境:

         系统:ubuntu 16.04

         cpu:i5

         gpu:gt920m

         memory:8g

         disk:SSD 256g

    1.安装显卡驱动 

    首先需要保证电脑有满足cuda要求的显卡,ubuntu一般安装完成后都会使用集成显卡,独立显卡并没有充分利用。

    ubuntu安装NVIDIA驱动还涉及到和原有驱动的冲突,这部分在网上比较多,也有些坑需要踩,可以自己搜索。

    安装nvida的驱动,需要屏蔽之前的驱动,操作不当会造成系统无法进入图形界面,这时候,可以ctrl + alt + F1进入字符界面,进行补救,网上在这一点说的比较多,就不再多说了。

    在知乎上看到一个安装nvidia驱动的方法,试了一下是可以用的,只是不知道是不是因为之前已经屏蔽了系统自带的驱动的缘故。

    记在这里供大家参考:

    进入:system setting -> software update -> additional drivers

    select as the photo below and apply changes:

    2.安装完驱动之后,安装cuda.

    不同的tensorflow支持不同版本的cuda,在安装之前需要确认下载对应的cuda否则tensorflow无法调用cuda

     a)准备工作:

       检查gpu是否支持cuda: 
    lspci | grep -i nvidia
       检查linux版本是否支持: 
    uname -m && cat /etc/*release
       确认gcc是否安装: 
    gcc --version
       确认内核头文件和开发环境: 
    uname -r
       安装内核头文件: 
    sudo apt-get install linux-headers-$(uname -r)
     b)开始安装:
       下载对应版本的cuda tookit并安装(下载地址点这里),这里选择离线安装方式(注意,目前tensorflow最新版本,1.4,1.5只支持到cuda 8.0, nvidia官网最新安装包为cuda 9.1)。
    如果是重新安装,请先卸载: 
    sudo apt-get --purge remove <package_name>
    使用离线安装包安装cuda tookit:
    sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
    sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
    sudo apt-get update
    sudo apt-get install cuda   # (如果之前安装过cuda, 这里需要指定版本号,否则还是安装之前的版本,例如,安装cuda8.0使用:sudo apt-get install cuda-8-0)
    3.安装cuDNN   
         下载对应版本的cuDNN并安装,下载地址点这里,目前tensorflow版本1.5,支持cuDNN6.0 .
    下载cuDNN v6.0 Runtime Library for Ubuntu16.04  (Deb)cuDNN v6.0 Developer Library for Ubuntu16.04  (Deb),使用:
    sudo dpkg -i <安装包名称>  
    安装上述两个包,先安装runtime library,否则可能会有依赖问题。
    
    
    4.安装tensorflow
    这里使用Python virtualenv进行安装
         先安装virtualenv: 
    sudo pip install virtralenv
         建立虚拟环境的文件夹, 比如安装到tensorflow_evn: 
    mkdir tensorflow_env
         创建虚拟运行环境: virtualenv <刚才建立的文件夹>, 即: 
    virtualenv tensorflow_evn
         激活虚拟环境:
    source tensorflow_evn/bin/active, 总之就是要运行虚拟环境中bin目录下的active文件。
         安装tensorflow需要的包:
    pip install numpy
         安装tensorflow-gpu:
    pip install tensorflow-gpu
    
    
    5.测试安装是否成功:
    如果刚才的虚拟环境还没有关闭,启动python,运行:
    import tensorflow as tf
    op = tf.add(1.0, 2.0)  # 进行加法运算
    with tf.Session() as sess:
        print(sess.run(op))
    更多示例代码,见:https://github.com/buxizhizhoum/machine_learning/tree/master/tf
    如果已经关闭,重新激活虚拟环境:
    source tensorflow_env/bin/active 
    然后运行python,运行上述代码。
    如果可以运行成功,并且提示信息里面有提到gpu参与运算的信息,表明安装成功。

    提示信息:
    2017-12-22 15:01:58.555074: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 
    2017-12-22 15:01:58.715769: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:892] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 
    2017-12-22 15:01:58.716538: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties:  name: GeForce 920MX major: 5 minor: 0 memoryClockRate(GHz): 0.993 pciBusID: 0000:01:00.0 totalMemory: 1.96GiB freeMemory: 1.31GiB 
    2017-12-22 15:01:58.716592: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce 920MX, pci bus id: 0000:01:00.0, compute capability: 5.0) 
    3.0 
    第一条信息不用管,这个是因为使用pip安装,而没有使用源码编译安装的原因,tensorflow为了尽可能好的兼容性,舍弃了cpu的一部分特性,通过编译安装可以解决,大概会有3倍左右的提升。
    第三条即是说找到了GPU,并且打印了显存信息。
    第四条表明创建了tensorflow的设备。

    最下面的是运行的结果,表明gpu已经参与计算加速。

    6.效果
    进行gpu加速后,之前每次训练都占满的cpu现在只有一个核是满负荷的,运算速度有提升,但是没有网上说的20倍左右的提升,在mnist数字识别上,只比cpu块2~3倍,可能是因为这个显卡比较一般,cuda算力只有3.5,是满足tensorflow使用gpu加速的显卡里面的底线,使用高端显卡应该会有更大的提升。



    update 2021
    https://gist.github.com/wangruohui/df039f0dc434d6486f5d4d098aa52d07
    
    
    
  • 相关阅读:
    Object有哪些公用方法?(转)
    equals和==的区别(转)
    switch语句中case的标签
    (常见面试问题)九种基本数据类型的大小,以及他们的封装类
    English
    plot
    文件读写
    标准化
    独热编码
    一阶逻辑
  • 原文地址:https://www.cnblogs.com/buxizhizhoum/p/8086230.html
Copyright © 2011-2022 走看看